Sha256: 02786ce489b6687bcf55a8e27736104d47e77ef3f9c702a3e85ce9a172ce8cc5

Contents?: true

Size: 967 Bytes

Versions: 2

Compression:

Stored size: 967 Bytes

Contents

require 'test_helper'
require 'timeout'

module M2R
  class ModuleTest < MiniTest::Unit::TestCase
    def setup
      if context = M2R.instance_variable_get(:@zmq_context)
        context.send(:remove_finalizer) if context.respond_to?(:remove_finalizer)
        M2R.instance_variable_set(:@zmq_context, nil)
      end
    end

    def test_mongrel2_context_getter
      assert_instance_of ZMQ::Context, M2R.zmq_context
    end

    def test_mongrel2_context_setter
      ctx = ZMQ::Context.new(2)
      M2R.zmq_context = ctx
      assert_equal ctx, M2R.zmq_context
    end

    def test_only_1_context_created_when_race_condition
      threads = nil
      ZMQ::Context.expects(:new).returns(true).once

      Thread.exclusive do
        threads = 512.times.map do
          Thread.new do
            M2R.zmq_context
          end
        end
      end
      Timeout.timeout(5) do
        threads.each(&:join)
      end

      M2R.zmq_context = nil
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
m2r-2.1.0 test/unit/m2r_test.rb
m2r-2.1.0.pre test/unit/m2r_test.rb