summaryrefslogtreecommitdiff
path: root/test/ruby/test_thread.rb
AgeCommit message (Collapse)Author
2012-12-14* test/ruby/test_thread.rb (test_uninitialized, test_backtrace,kosaki
test_thread_timer_and_interrupt, test_thread_join_in_trap, test_thread_join_current, test_thread_join_main_thread, test_main_thread_status_at_exit, test_thread_status_in_trap, test_thread_status_raise_after_kill, test_mutex_owned, test_mutex_owned2): move these tests from TestThreadGroup class to TestThread becuase they are not thread group tests. * test/ruby/test_thread.rb (test_thread_status_raise_after_kill): add t.join. * test/ruby/test_threadgroup.rb: new file. moved ThreadGroup test form test_thread.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-14* test/ruby/test_thread.rb (TestThread::Thread::new.): removekosaki
th.abort_on_exception change. Test template shouldn't change global flag. It prevent to test a normal case. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-07test: remove or replace trailing spacesnobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-05* thread.c (rb_uninterruptible): helper function for providingkosaki
temporary async_interrupt_timing(Object => :defer) * io.c (rb_f_p): use rb_uninterruptible. * io.c (rb_f_p_internal): helper function for rb_f_p(). * io.c (struct rb_f_p_arg): new struct for rb_f_p_internal. * test/ruby/test_thread.rb (test_async_interrupt_and_p): test for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-05* io.c (io_binwrite): check interrupt before io issue.kosaki
* test/ruby/test_thread.rb (test_async_interrupt_and_io): test for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38224 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-05Use underscore-begging name for dummy variables to suppress warningnaruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-05fix typos and remove trailing spaceskazu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-05 * thread.c (rb_thread_s_async_interrupt_timing): have to check ints before ↵tarui
jumpping out. * test/ruby/test_thread.rb (test_async_interrupt_with_return): add test rescue has to catch a queued async exception at the time of return. * test/ruby/test_thread.rb (test_async_interrupt_with_break): add test rescue has to catch a queued async exception at the time of break. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-04 * test/ruby/test_thread.rb (test_async_interrupt_blocking): bugfixtarui
about defared check git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-04 * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): check async queue everytime.tarui
* thread.c (sleep_forever): check RUBY_VM_CHECK_INTS_BLOCKING first. * thread.c (sleep_timeval): ditto. * test/ruby/test_thread.rb (test_async_interrupt_blocking): add a test exceptions are correctly defared and raised on :on_blocking context. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-04* thread.c (rb_mutex_owned_p): new method that return currentkosaki
thread have the target mutex or not. [Feature #7505] [ruby-dev:46697] * test/ruby/test_thread.rb (test_mutex_owned, test_mutex_owned2): test for the above. * NEWS: new for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38188 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-01* test/ruby/test_thread.rb: move ConditionVariable related testkosaki
into test/thread/test_cv.rb. * test/thread/test_cv.rb: new file. * test/thread/test_cv.rb (test_condvar_empty_signal): new tests. * test/thread/test_cv.rb (test_condvar_empty_broadcast): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-01* test/ruby/test_thread.rb (test_cv_wait_deadlock): enablekosaki
cv deadlock test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-30* thread.c (rb_threadptr_interrupt_mask): add argument check.kosaki
* thread.c (async_interrupt_timing_arg_check_i): helper function for the above. * test/ruby/test_thread.rb (test_async_interrupt_timing_invalid_argument): test for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-30* thread.c: rename Thread.control_interruptko1
to Thread.async_interrupt_timing. The option name `:never' is also changed to `:defer'. [ruby-core:50375] [ruby-trunk - Feature #6762] * thread.c: remove Thread.check_interrupt. This method is difficult to understand by name. * thraed.c: add Thread.async_interrupted?. This method check any defered async interrupts. * test/ruby/test_thread.rb: change tests for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-29remove trailing spaces.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-28 * test/ruby/test_thread.rb (test_thread_status_in_trap): change test fortarui
thread status in trap. now can accept Thread#join and Thread#value in trap. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-28* vm_core.h (enum rb_thread_status): remove THREAD_TO_KILLkosaki
* vm_core.h (struct rb_thread_struct): add to_kill field * thread.c (terminate_i): convert THREAD_TO_KILL to to_kill. * thread.c (rb_threadptr_to_kill): ditto. * thread.c (rb_thread_kill): ditto. * thread.c (rb_thread_wakeup_alive): ditto. * thread.c (thread_list_i): ditto. * thread.c (static const char): ditto. * thread.c (thread_status_name): ditto. * thread.c (rb_thread_status): ditto. * thread.c (rb_thread_inspect): ditto. * vm_backtrace.c (thread_backtrace_to_ary): ditto. * thread.c (rb_threadptr_execute_interrupts): fix thread status overwritten issue. [Bug #7450] [ruby-core:50249] * test/ruby/test_thread.rb (test_hread_status_raise_after_kill): test for the above. * test/ruby/test_thread.rb (test_thread_status_in_trap): test for thread status in trap. * test/ruby/test_thread.rb (test_status_and_stop_p): remove Thread.control_interrupt unsafe test. Thread#kill no longer changes thread status. Instead of, Thread#kill receiver changes their own status when receiving kill signal. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-28* thread.c (thread_join): A trap handler check was moved fromkosaki
thread_join_m because Thread#value should be raised an exception too. * thread.c (thread_join_m): remove trap handler check. * test/ruby/test_thread.rb (test_thread_join_in_trap): add test for thread#value. * NEWS: documentation fix for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-27* eval.c (ruby_cleanup): set thread status to THREAD_KILLEDkosaki
for preventing thr.raise. * test/ruby/test_thread.rb (test_main_thread_status_at_exit): test for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-27* thread.c (thread_join): raises ThreadError if target theradkosaki
is a main thread. * test/ruby/test_thread.rb (test_thread_join_main_thread): test for the above. * NEWS: news for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-27* thread.c (thread_join): raises ThreadError if target threadkosaki
is a current thread. * test/ruby/test_thread.rb (test_thread_join_current): test for the above. * NEWS: news for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-26* vm_core.h (rb_thread_struct): added 'in_trap' member for markingkosaki
running trap handler. * signal.c (signal_exec): turn on in_trap when running trap. * thread.c (Init_Thread, thread_create_core): initialize in_trap when creating new threads. * thread.c (thread_join_m): raise ThreadError when running trap handler.Bug [#6416][ruby-core:44956] * test/ruby/test_thread.rb (test_thread_join_in_trap): new test for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-29* thread.c: added Thread#thread_variable_(get|set),tenderlove
Thread#thread_variable?, and Thread#thread_variables for operating on variables that are local to threads. [ruby-core:47790] * vm.c: ditto * test/ruby/test_thread.rb: tests for thread variables. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-02* eval.c (rb_mod_using): new method Module#using. [experimental]shugo
* eval.c (rb_mod_refine): new method Module#refine. [experimental] * eval.c (f_using): new method Kernel#using. [experimental] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-23Synchronize with simple variable assignment.naruse
If it uses Queue, Mutex#synchronize may suppress the exception caused by th.raise. The case happens when Ruby switches the thread after it pushes :go into q, in `self.unlock rescue nil`. The exception is rescued the `rescue nil`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-22Suppress unused variable warnings.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-22Use assert_normal_exit to avoid stack on buggy implementations.naruse
fix for r36492. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-22* thread.c (rb_threadptr_execute_interrupts_common): increasenaruse
running_time_us on THREAD_TO_KILL like on THREAD_RUNNABLE. This cause not to siwtch from a thread which is to be killed on FreeBSD and Mac OS X. see also the test. This issue maybe exist for long time but happens after r36430. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-19* thread.c (rb_thread_s_control_interrupt,ko1
rb_thread_s_check_interrupt): added for Thread.control_intgerrupt and Thread.check_interrupt. See details on rdoc. I'll make an ticket for this feature. * test/ruby/test_thread.rb: add a test for Thread.control_intgerrupt. * thread.c (rb_threadptr_raise): make a new exception object even if argc is 0. * thread.c (rb_thread_kill): kill thread immediately if target thread is current thread. * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): added. CHECK_INTS while/after blocking operation. * vm_core.h (RUBY_VM_CHECK_INTS): require rb_thread_t ptr. * cont.c (fiber_switch): use replaced RUBY_VM_CHECK_INTS(). * eval.c (ruby_cleanup): ditto. * insns.def: ditto. * process.c (rb_waitpid): ditto. * vm_eval.c (vm_call0): ditto. * vm_insnhelper.c (vm_call_method): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-22avoid thread switching.naruse
The test may fail if thread switches to d or e before assertions. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-10It is wrong to expect the last output is "exit".naruse
When lb.join is commented out as [ruby-dev:30653] says, @keeper is living until the program truely die. So after it outputs "exit.", it may output "#{i}: cont". git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-07* include/ruby/win32.h (rb_w32_aspawn_flags): add the declaration ofshirosaki
new function. * process.c (enum): add EXEC_OPTION_PGROUP and move the position above for the usage in proc_spawn_n(). * process.c (proc_spawn_n): add an argument to pass new option `new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to CreateProcessW(). This flag is necessary for the usage of Process.kill on the subprocess on Windows. * process.c (rb_exec_arg_addopt): ditto. * process.c (rb_spawn_process): ditto. * process.c (documentation for rb_f_spawn): add documentation for new option `new_pgroup` of spawn. * test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup): add tests for option `new_pgroup`. * test/ruby/test_thread.rb (TestThreadGroup#test_thread_timer_and_interrupt): add option `new_pgroup: true` to spawn on Windows. It's needed for Process.kill on a subprocess. * win32/win32.c (CreateChild): add an argument to pass dwCreationFlags of CreateProcessW(). * win32/win32.c (rb_w32_spawn): ditto. * win32/win32.c (rb_w32_aspawn_flags): add new function to pass dwCreationFlags. * win32/win32.c (rb_w32_aspawn): refactor to move the content to rb_w32_aspawn_flags(). [ruby-core:43245][Bug #6131] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-07* test/ruby/test_thread.rbshirosaki
(TestThreadGroup#test_thread_timer_and_interrupt): skip on Windows. Process.kill cannot kill a subprocess if CREATE_NEW_PROCESS_GROUP flag is not specified in a call to CreateProcessW(). * win32/win32.c (CreateChild): revert the usage of CREATE_NEW_PROCESS_GROUP flag for compatibility. [ruby-core:43245][Bug #6131] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-31misplaced rescuenobu
* test/ruby/test_thread.rb (test_condvar_wait_deadlock_2): fix cleanup code which is never executed because of misplaced rescue. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-20test_thread: test_condvar_wait_not_owner duplicates test_condvar_nolocknobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35093 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-15* test/ruby/test_arity.rb (TestArity#err_mess): use assert_raise.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35026 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-31* test/ruby/test_thread.rb ↵nobu
(TestThreadGroup#test_thread_timer_and_interrupt): suppress interrupt message. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34403 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-28* test/ruby/test_thread.rbshirosaki
(TestThreadGroup#test_thread_timer_and_interrupt): skip exit status assertion because we cannot get signal status on Windows. * win32/win32.c (CreateChild): create process group to receive the signal by GenerateConsoleCtrlEvent(). * win32/win32.c (kill): use CTRL_BREAK_EVENT instead of CTRL_C_EVENT if a process group is specified. CTRL_C_EVENT signal cannot be generated for process groups for the specification. [ruby-dev:45149] [Bug #5812] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-22* test/ruby/test_thread.rb: don't test the maximum sleep time. Rubyakr
is not a real-time system. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-15Use SIGINT to interrupt.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-14Use pipe instead of $stdin.read.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34040 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-14* thread_pthread.c (ubf_select): call rb_thread_wakeup_timer_thread()naruse
only when it is not timer_thread. [Bug #5757] [ruby-dev:44985] patched by Tomoyuki Chikanaga. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-24increase difference of priority to avoid false nagative test result.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15* test/ruby/test_thread.rb (test_condvar_timed_wait): useakr
assert_operator. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-10Revert test fixes.naruse
This reverts r33233, r33234, and r33235. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-09Decide by majority.naruse
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-01* test/ruby/test_thread.rb (TestThread#test_no_valid_cfp): skip whenusa
win32ole is required. in such case, win32ole redefines Thread#initialize, and the block argument becomes to be not the top of the thread, then this testcase always fails. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33153 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-31* vm.c: check if cfp is valid. [Bug #5083] [ruby-dev:44208]ktsj
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32768 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-21* test/ruby/test_thread.rb (TestThread#test_priority): enablekosaki
this test again. Current GVL respect thread priority rather than past. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32182 b2dd03c8-39d4-4d8f-98ff-823fe69b080e