From 40bd29a7df70408bd99218d7e979d701c0f0f75e Mon Sep 17 00:00:00 2001 From: Farid Zakaria Date: Wed, 5 Feb 2020 13:27:52 -0800 Subject: [PATCH] Moved auto_terminate daemon test to executor_service_shared.rb --- .../executor/cached_thread_pool_spec.rb | 22 ------------------- .../{pool_quits.rb => executor_quits.rb} | 8 ++++--- .../executor/executor_service_shared.rb | 22 +++++++++++++++++++ 3 files changed, 27 insertions(+), 25 deletions(-) rename spec/concurrent/executor/{pool_quits.rb => executor_quits.rb} (52%) diff --git a/spec/concurrent/executor/cached_thread_pool_spec.rb b/spec/concurrent/executor/cached_thread_pool_spec.rb index 048d6e2ec..40e352627 100644 --- a/spec/concurrent/executor/cached_thread_pool_spec.rb +++ b/spec/concurrent/executor/cached_thread_pool_spec.rb @@ -201,28 +201,6 @@ module Concurrent end end - context 'auto terminate' do - - # https://github.com/ruby-concurrency/concurrent-ruby/issues/817 - # https://github.com/ruby-concurrency/concurrent-ruby/issues/839 - it 'does not stop shutdown ' do - Timeout.timeout(10) do - begin - test_file = File.join File.dirname(__FILE__), 'pool_quits.rb' - pid = spawn RbConfig.ruby, test_file - Process.waitpid pid - expect($?.success?).to eq true - rescue Errno::ECHILD - # child already gone - rescue Timeout::Error => e - Process.kill :KILL, pid - raise e - end - end - end - - end - context 'stress', notravis: true do configurations = [ { min_threads: 2, diff --git a/spec/concurrent/executor/pool_quits.rb b/spec/concurrent/executor/executor_quits.rb similarity index 52% rename from spec/concurrent/executor/pool_quits.rb rename to spec/concurrent/executor/executor_quits.rb index 2c3e83740..d8c1c2cd5 100644 --- a/spec/concurrent/executor/pool_quits.rb +++ b/spec/concurrent/executor/executor_quits.rb @@ -4,9 +4,11 @@ require 'concurrent-ruby' -pool = Concurrent::CachedThreadPool.new -pool.post do - sleep # sleep indefinitely +executors = [Concurrent::CachedThreadPool.new, Concurrent::SingleThreadExecutor.new, Concurrent::FixedThreadPool.new(1)] +executors.each do |executor| + executor.post do + sleep # sleep indefinitely + end end # the process main thread should quit out which should kill the daemon CachedThreadPool diff --git a/spec/concurrent/executor/executor_service_shared.rb b/spec/concurrent/executor/executor_service_shared.rb index 32e7eb6f7..8661caffe 100644 --- a/spec/concurrent/executor/executor_service_shared.rb +++ b/spec/concurrent/executor/executor_service_shared.rb @@ -33,6 +33,28 @@ end end + context 'auto terminate' do + + # https://github.com/ruby-concurrency/concurrent-ruby/issues/817 + # https://github.com/ruby-concurrency/concurrent-ruby/issues/839 + it 'does not stop shutdown ' do + Timeout.timeout(10) do + begin + test_file = File.join File.dirname(__FILE__), 'executor_quits.rb' + pid = spawn RbConfig.ruby, test_file + Process.waitpid pid + expect($?.success?).to eq true + rescue Errno::ECHILD + # child already gone + rescue Timeout::Error => e + Process.kill :KILL, pid + raise e + end + end + end + + end + context '#running?' do it 'returns true when the thread pool is running' do