Sha256: ce49f7ea86585032d6628689c6b3814d0a0f15ed33e2a3583c989d5f22bf7913

Contents?: true

Size: 916 Bytes

Versions: 18

Compression:

Stored size: 916 Bytes

Contents

# frozen_string_literal: true
# encoding: utf-8

require 'lite_spec_helper'

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

  it 'waits until signaled' do
    consumer = Thread.new do
      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
  end

  it 'waits until broadcast' do
    consumer = Thread.new do
      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
  end

  it 'times out' do
    consumer = Thread.new do
      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
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
mongo-2.16.4 spec/mongo/semaphore_spec.rb
mongo-2.17.4 spec/mongo/semaphore_spec.rb
mongo-2.18.3 spec/mongo/semaphore_spec.rb
mongo-2.18.2 spec/mongo/semaphore_spec.rb
mongo-2.17.3 spec/mongo/semaphore_spec.rb
mongo-2.18.1 spec/mongo/semaphore_spec.rb
mongo-2.18.0 spec/mongo/semaphore_spec.rb
mongo-2.17.2 spec/mongo/semaphore_spec.rb
mongo-2.16.3 spec/mongo/semaphore_spec.rb
mongo-2.18.0.beta1 spec/mongo/semaphore_spec.rb
mongo-2.16.2 spec/mongo/semaphore_spec.rb
mongo-2.17.1 spec/mongo/semaphore_spec.rb
mongo-2.16.1 spec/mongo/semaphore_spec.rb
mongo-2.17.0 spec/mongo/semaphore_spec.rb
mongo-2.16.0 spec/mongo/semaphore_spec.rb
mongo-2.15.1 spec/mongo/semaphore_spec.rb
mongo-2.16.0.alpha1 spec/mongo/semaphore_spec.rb
mongo-2.15.0 spec/mongo/semaphore_spec.rb