Sha256: bd6ef37a9cd2405ac16b72bd3777258d946d8f3260f0322327cfc6de9e78c115

Contents?: true

Size: 1.85 KB

Versions: 12

Compression:

Stored size: 1.85 KB

Contents

require 'thread'
require 'test/unit'
require 'radius'

class MultithreadTest < Test::Unit::TestCase

  def setup
    Thread.abort_on_exception
    @context = Radius::Context.new do |c|
      c.define_tag('thread') do |tag|
        "#{tag.locals.thread_id} / #{tag.globals.object_id}"
      end
    end
  end

  if RUBY_PLATFORM == 'java'
    require 'java'
    # call once before the thread to keep from using hidden require in a thread
    Radius::Parser.new
    def test_runs_multithreaded
      lock = java.lang.String.new("lock")
      threads = []
      1000.times do |t|
        thread = Thread.new do
                   parser = Radius::Parser.new(@context, :tag_prefix => 'r')
                   parser.context.globals.thread_id = Thread.current.object_id
                   expected = "#{Thread.current.object_id} / "+
                              "#{parser.context.globals.object_id}"
                   actual = parser.parse('<r:thread />')
                   assert_equal expected, actual
                 end
        lock.synchronized do
          threads << thread
        end
      end
      lock.synchronized do
        threads.each{|t| t.join }
      end
    end
  else
    def test_runs_multithreaded
      threads = []
      mute = Mutex.new
      1000.times do |t|
        thread = Thread.new do
                   parser = Radius::Parser.new(@context, :tag_prefix => 'r')
                   parser.context.globals.thread_id = Thread.current.object_id
                   expected = "#{Thread.current.object_id} / "+
                              "#{parser.context.globals.object_id}"
                   actual = parser.parse('<r:thread />')
                   assert_equal expected, actual
                 end
        mute.synchronize do
          threads << thread
        end
      end
      mute.synchronize do
        threads.each{|t| t.join }
      end
    end
  end

end

Version data entries

12 entries across 11 versions & 3 rubygems

Version Path
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/radius-0.7.5/test/multithreaded_test.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.1.0/gems/radius-0.7.5/test/multithreaded_test.rb
radius-0.7.5 test/multithreaded_test.rb
radius-0.7.4 test/multithreaded_test.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/radius-0.7.3/test/multithreaded_test.rb
radius-0.7.3 test/multithreaded_test.rb
radius-0.7.2 test/multithreaded_test.rb
radius-0.7.1 test/multithreaded_test.rb
radius-0.7.0 test/multithreaded_test.rb
radius-0.7.0.prerelease3 test/multithreaded_test.rb
radius-0.7.0.prerelease2 test/multithreaded_test.rb
radius-0.7.0.prerelease test/multithreaded_test.rb