diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-07 07:38:25 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-07 07:38:25 +0000 |
commit | 9ff1e787f915539b1980654e3d3d2013ff5c81d2 (patch) | |
tree | 8d0fc9ca5b4dbfa9885dc56862292d55091bcaac /ruby_1_8_6/test/thread/test_thread.rb | |
parent | 441546edcfbb1b346c87b69c5f578d1a0e522e06 (diff) |
wrong commit; sorryv1_8_6_269
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_6_269@17938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_6/test/thread/test_thread.rb')
-rw-r--r-- | ruby_1_8_6/test/thread/test_thread.rb | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/ruby_1_8_6/test/thread/test_thread.rb b/ruby_1_8_6/test/thread/test_thread.rb deleted file mode 100644 index fe5fdeffda..0000000000 --- a/ruby_1_8_6/test/thread/test_thread.rb +++ /dev/null @@ -1,119 +0,0 @@ -# -*- ruby-indent-level: 4 -*- -require 'thread' -require 'test/unit' - -class TC_Thread < Test::Unit::TestCase - def setup - Thread.abort_on_exception = true - end - def teardown - Thread.abort_on_exception = false - end - def test_condvar - mutex = Mutex.new - condvar = ConditionVariable.new - result = [] - mutex.synchronize do - t = Thread.new do - mutex.synchronize do - result << 1 - condvar.signal - end - end - - result << 0 - condvar.wait(mutex) - result << 2 - t.join - end - assert_equal([0, 1, 2], result) - end - - def test_condvar_wait_not_owner - mutex = Mutex.new - condvar = ConditionVariable.new - - assert_raises(ThreadError) { condvar.wait(mutex) } - end - - def test_condvar_wait_exception_handling - # Calling wait in the only thread running should raise a ThreadError of - # 'stopping only thread' - mutex = Mutex.new - condvar = ConditionVariable.new - - Thread.abort_on_exception = false - - locked = false - thread = Thread.new do - mutex.synchronize do - begin - condvar.wait(mutex) - rescue Exception - locked = mutex.locked? - raise - end - end - end - - while !thread.stop? - sleep(0.1) - end - - thread.raise Interrupt, "interrupt a dead condition variable" - assert_raises(Interrupt) { thread.value } - assert(locked) - end - - def test_local_barrier - dir = File.dirname(__FILE__) - lbtest = File.join(dir, "lbtest.rb") - $:.unshift File.join(File.dirname(dir), 'ruby') - require 'envutil' - $:.shift - 10.times { - result = `#{EnvUtil.rubybin} #{lbtest}` - assert(!$?.coredump?, '[ruby-dev:30653]') - assert_equal("exit.", result[/.*\Z/], '[ruby-dev:30653]') - } - end - - # This test checks that a thread in Mutex#lock which is raised is - # completely removed from the wait_list of the mutex - def test_mutex_exception_handling - m = Mutex.new - m.lock - - sleeping = false - t = Thread.new do - begin - m.lock - rescue - end - - sleeping = true - # Keep that thread alive: if the thread returns, the test method - # won't be able to check that +m+ has not been taken (dead mutex - # owners are ignored) - sleep - end - - # Wait for t to wait for the mutex and raise it - while true - sleep 0.1 - break if t.stop? - end - t.raise ArgumentError - assert(t.alive? || sleeping) - - # Wait for +t+ to reach the sleep - while true - sleep 0.1 - break if t.stop? - end - - # Now unlock. The mutex should be free, so Mutex#unlock should return nil - assert(! m.unlock) - end -end - |