mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* test/monitor/test_monitor.rb: Use assert_join_threads.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									3864eb828b
								
							
						
					
					
						commit
						b19c39f94f
					
				
					 2 changed files with 76 additions and 60 deletions
				
			
		| 
						 | 
				
			
			@ -1,3 +1,7 @@
 | 
			
		|||
Thu Nov 13 21:51:56 2014  Tanaka Akira  <akr@fsij.org>
 | 
			
		||||
 | 
			
		||||
	* test/monitor/test_monitor.rb: Use assert_join_threads.
 | 
			
		||||
 | 
			
		||||
Thu Nov 13 21:45:13 2014  Tanaka Akira  <akr@fsij.org>
 | 
			
		||||
 | 
			
		||||
	* test/openssl: Don't specify port number.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,14 +20,16 @@ class TestMonitor < Test::Unit::TestCase
 | 
			
		|||
      end
 | 
			
		||||
      @monitor.exit
 | 
			
		||||
    }
 | 
			
		||||
    @monitor.enter
 | 
			
		||||
    queue.enq(nil)
 | 
			
		||||
    for i in 1 .. 5
 | 
			
		||||
      ary.push(i)
 | 
			
		||||
      Thread.pass
 | 
			
		||||
    end
 | 
			
		||||
    @monitor.exit
 | 
			
		||||
    th.join
 | 
			
		||||
    th2 = Thread.start {
 | 
			
		||||
      @monitor.enter
 | 
			
		||||
      queue.enq(nil)
 | 
			
		||||
      for i in 1 .. 5
 | 
			
		||||
        ary.push(i)
 | 
			
		||||
        Thread.pass
 | 
			
		||||
      end
 | 
			
		||||
      @monitor.exit
 | 
			
		||||
    }
 | 
			
		||||
    assert_join_threads([th, th2])
 | 
			
		||||
    assert_equal((1..10).to_a, ary)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -43,14 +45,16 @@ class TestMonitor < Test::Unit::TestCase
 | 
			
		|||
        end
 | 
			
		||||
      end
 | 
			
		||||
    }
 | 
			
		||||
    @monitor.synchronize do
 | 
			
		||||
      queue.enq(nil)
 | 
			
		||||
      for i in 1 .. 5
 | 
			
		||||
        ary.push(i)
 | 
			
		||||
        Thread.pass
 | 
			
		||||
    th2 = Thread.start {
 | 
			
		||||
      @monitor.synchronize do
 | 
			
		||||
        queue.enq(nil)
 | 
			
		||||
        for i in 1 .. 5
 | 
			
		||||
          ary.push(i)
 | 
			
		||||
          Thread.pass
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    th.join
 | 
			
		||||
    }
 | 
			
		||||
    assert_join_threads([th, th2])
 | 
			
		||||
    assert_equal((1..10).to_a, ary)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -69,18 +73,18 @@ class TestMonitor < Test::Unit::TestCase
 | 
			
		|||
        ary << :t2
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    @monitor.synchronize do
 | 
			
		||||
      queue.enq(nil)
 | 
			
		||||
      queue.enq(nil)
 | 
			
		||||
      assert_equal([], ary)
 | 
			
		||||
      t1.kill
 | 
			
		||||
      t2.kill
 | 
			
		||||
      ary << :main
 | 
			
		||||
    end
 | 
			
		||||
    assert_equal([:main], ary)
 | 
			
		||||
  ensure
 | 
			
		||||
    t1.join
 | 
			
		||||
    t2.join
 | 
			
		||||
    t3 = Thread.start {
 | 
			
		||||
      @monitor.synchronize do
 | 
			
		||||
        queue.enq(nil)
 | 
			
		||||
        queue.enq(nil)
 | 
			
		||||
        assert_equal([], ary)
 | 
			
		||||
        t1.kill
 | 
			
		||||
        t2.kill
 | 
			
		||||
        ary << :main
 | 
			
		||||
      end
 | 
			
		||||
      assert_equal([:main], ary)
 | 
			
		||||
    }
 | 
			
		||||
    assert_join_threads([t1, t2, t3])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_try_enter
 | 
			
		||||
| 
						 | 
				
			
			@ -94,15 +98,17 @@ class TestMonitor < Test::Unit::TestCase
 | 
			
		|||
      @monitor.exit
 | 
			
		||||
      queue2.enq(nil)
 | 
			
		||||
    }
 | 
			
		||||
    assert_equal(true, @monitor.try_enter)
 | 
			
		||||
    @monitor.exit
 | 
			
		||||
    queue1.enq(nil)
 | 
			
		||||
    queue2.deq
 | 
			
		||||
    assert_equal(false, @monitor.try_enter)
 | 
			
		||||
    queue1.enq(nil)
 | 
			
		||||
    queue2.deq
 | 
			
		||||
    assert_equal(true, @monitor.try_enter)
 | 
			
		||||
    th.join
 | 
			
		||||
    th2 = Thread.start {
 | 
			
		||||
      assert_equal(true, @monitor.try_enter)
 | 
			
		||||
      @monitor.exit
 | 
			
		||||
      queue1.enq(nil)
 | 
			
		||||
      queue2.deq
 | 
			
		||||
      assert_equal(false, @monitor.try_enter)
 | 
			
		||||
      queue1.enq(nil)
 | 
			
		||||
      queue2.deq
 | 
			
		||||
      assert_equal(true, @monitor.try_enter)
 | 
			
		||||
    }
 | 
			
		||||
    assert_join_threads([th, th2])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_cond
 | 
			
		||||
| 
						 | 
				
			
			@ -117,14 +123,16 @@ class TestMonitor < Test::Unit::TestCase
 | 
			
		|||
        cond.signal
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    @monitor.synchronize do
 | 
			
		||||
      queue1.enq(nil)
 | 
			
		||||
      assert_equal("foo", a)
 | 
			
		||||
      result1 = cond.wait
 | 
			
		||||
      assert_equal(true, result1)
 | 
			
		||||
      assert_equal("bar", a)
 | 
			
		||||
    th2 = Thread.start do
 | 
			
		||||
      @monitor.synchronize do
 | 
			
		||||
        queue1.enq(nil)
 | 
			
		||||
        assert_equal("foo", a)
 | 
			
		||||
        result1 = cond.wait
 | 
			
		||||
        assert_equal(true, result1)
 | 
			
		||||
        assert_equal("bar", a)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    th.join
 | 
			
		||||
    assert_join_threads([th, th2])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_timedwait
 | 
			
		||||
| 
						 | 
				
			
			@ -138,14 +146,16 @@ class TestMonitor < Test::Unit::TestCase
 | 
			
		|||
        cond.signal
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    @monitor.synchronize do
 | 
			
		||||
      queue2.enq(nil)
 | 
			
		||||
      assert_equal("foo", b)
 | 
			
		||||
      result2 = cond.wait(0.1)
 | 
			
		||||
      assert_equal(true, result2)
 | 
			
		||||
      assert_equal("bar", b)
 | 
			
		||||
    th2 = Thread.start do
 | 
			
		||||
      @monitor.synchronize do
 | 
			
		||||
        queue2.enq(nil)
 | 
			
		||||
        assert_equal("foo", b)
 | 
			
		||||
        result2 = cond.wait(0.1)
 | 
			
		||||
        assert_equal(true, result2)
 | 
			
		||||
        assert_equal("bar", b)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    th.join
 | 
			
		||||
    assert_join_threads([th, th2])
 | 
			
		||||
 | 
			
		||||
    c = "foo"
 | 
			
		||||
    queue3 = Queue.new
 | 
			
		||||
| 
						 | 
				
			
			@ -156,17 +166,19 @@ class TestMonitor < Test::Unit::TestCase
 | 
			
		|||
        cond.signal
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    @monitor.synchronize do
 | 
			
		||||
      assert_equal("foo", c)
 | 
			
		||||
      result3 = cond.wait(0.1)
 | 
			
		||||
      assert_equal(true, result3) # wait always returns true in Ruby 1.9
 | 
			
		||||
      assert_equal("foo", c)
 | 
			
		||||
      queue3.enq(nil)
 | 
			
		||||
      result4 = cond.wait
 | 
			
		||||
      assert_equal(true, result4)
 | 
			
		||||
      assert_equal("bar", c)
 | 
			
		||||
    th2 = Thread.start do
 | 
			
		||||
      @monitor.synchronize do
 | 
			
		||||
        assert_equal("foo", c)
 | 
			
		||||
        result3 = cond.wait(0.1)
 | 
			
		||||
        assert_equal(true, result3) # wait always returns true in Ruby 1.9
 | 
			
		||||
        assert_equal("foo", c)
 | 
			
		||||
        queue3.enq(nil)
 | 
			
		||||
        result4 = cond.wait
 | 
			
		||||
        assert_equal(true, result4)
 | 
			
		||||
        assert_equal("bar", c)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
    th.join
 | 
			
		||||
    assert_join_threads([th, th2])
 | 
			
		||||
 | 
			
		||||
#     d = "foo"
 | 
			
		||||
#     cumber_thread = Thread.start {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue