Sha256: 112205e51c2226020d0165593095fa95b2404b49d5a063da82c6662ed314ed13

Contents?: true

Size: 1.02 KB

Versions: 9

Compression:

Stored size: 1.02 KB

Contents

require 'lite_spec_helper'

describe Mongo::DistinguishingSemaphore do
  let(:semaphore) do
    described_class.new
  end

  it 'waits until signaled' do
    result = nil

    consumer = Thread.new do
      result = semaphore.wait(3)
    end

    # Context switch to start the thread
    sleep 0.1

    start_time = Time.now
    semaphore.signal
    consumer.join

    (Time.now - start_time).should < 1

    result.should be true
  end

  it 'waits until broadcast' do
    result = nil

    consumer = Thread.new do
      result = semaphore.wait(3)
    end

    # Context switch to start the thread
    sleep 0.1

    start_time = Time.now
    semaphore.broadcast
    consumer.join

    (Time.now - start_time).should < 1

    result.should be true
  end

  it 'times out' do
    result = nil

    consumer = Thread.new do
      result = semaphore.wait(2)
    end

    # Context switch to start the thread
    sleep 0.1

    start_time = Time.now
    consumer.join

    (Time.now - start_time).should > 1

    result.should be false
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
mongo-2.13.3 spec/mongo/distinguishing_semaphore_spec.rb
mongo-2.14.1 spec/mongo/distinguishing_semaphore_spec.rb
mongo-2.15.0.alpha spec/mongo/distinguishing_semaphore_spec.rb
mongo-2.13.2 spec/mongo/distinguishing_semaphore_spec.rb
mongo-2.14.0 spec/mongo/distinguishing_semaphore_spec.rb
mongo-2.14.0.rc1 spec/mongo/distinguishing_semaphore_spec.rb
mongo-2.13.1 spec/mongo/distinguishing_semaphore_spec.rb
mongo-2.13.0 spec/mongo/distinguishing_semaphore_spec.rb
mongo-2.13.0.rc1 spec/mongo/distinguishing_semaphore_spec.rb