aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ruby/end2end
diff options
context:
space:
mode:
authorGravatar Alexander Polcyn <apolcyn@google.com>2017-05-17 09:57:25 -0700
committerGravatar Alexander Polcyn <apolcyn@google.com>2017-05-17 09:57:25 -0700
commitfd4cbb70774a943a790459c8ec54d8bb112a3ef2 (patch)
tree36d17259d165ccf35f98a3276058ed734b9d908e /src/ruby/end2end
parent7b3629e6c2570686701b4bdb6b171b219cbad06e (diff)
cleanup test
Diffstat (limited to 'src/ruby/end2end')
-rwxr-xr-xsrc/ruby/end2end/grpc_class_init_client.rb57
-rwxr-xr-xsrc/ruby/end2end/grpc_class_init_driver.rb14
2 files changed, 46 insertions, 25 deletions
diff --git a/src/ruby/end2end/grpc_class_init_client.rb b/src/ruby/end2end/grpc_class_init_client.rb
index 62afc85b1d..d9c23c3835 100755
--- a/src/ruby/end2end/grpc_class_init_client.rb
+++ b/src/ruby/end2end/grpc_class_init_client.rb
@@ -60,6 +60,27 @@ def run_gc_stress_test(test_proc)
construct_many(test_proc)
end
+def run_concurrency_stress_test(test_proc)
+ test_proc.call
+
+ thds = []
+ 100.times do
+ thds << Thread.new do
+ test_proc.call
+ end
+ end
+
+ raise "something"
+end
+
+# default (no gc_stress and no concurrency_stress)
+def run_default_test(test_proc)
+ thd = Thread.new do
+ test_proc.call
+ end
+ test_proc.call
+end
+
def get_test_proc(grpc_class)
case grpc_class
when 'channel'
@@ -89,36 +110,34 @@ end
def main
grpc_class = ''
- gc_stress = false
+ stress_test = ''
OptionParser.new do |opts|
opts.on('--grpc_class=P', String) do |p|
grpc_class = p
end
- opts.on('--gc_stress=P') do |p|
- gc_stress = p
+ opts.on('--stress_test=P') do |p|
+ stress_test = p
end
end.parse!
test_proc = get_test_proc(grpc_class)
- if gc_stress == 'true'
+ # the different test configs need to be ran
+ # in separate processes, since each one tests
+ # clean shutdown in a different way
+ case stress_test
+ when 'gc'
+ p 'run gc stress'
run_gc_stress_test(test_proc)
- return
- end
-
-# test_proc.call
-
- thds = []
- 100.times do
- thds << Thread.new do
- test_proc.call
- sleep 10
- end
+ when 'concurrency'
+ p 'run concurrency stress'
+ run_concurrency_stress_test(test_proc)
+ when ''
+ p 'run default'
+ run_default_test(test_proc)
+ else
+ fail "bad --stress_test=#{stress_test} param"
end
-
- #test_proc.call
- raise "something"
- thds.each(&:join)
end
main
diff --git a/src/ruby/end2end/grpc_class_init_driver.rb b/src/ruby/end2end/grpc_class_init_driver.rb
index 0e330a493f..195da3cf9f 100755
--- a/src/ruby/end2end/grpc_class_init_driver.rb
+++ b/src/ruby/end2end/grpc_class_init_driver.rb
@@ -39,17 +39,17 @@ def main
compression_options )
# there is room for false positives in this test,
- # do 10 runs for each config to reduce these.
- [true, false].each do |gc_stress|
- 10.times do
- native_grpc_classes.each do |grpc_class|
+ # do a few runs for each config
+ 4.times do
+ native_grpc_classes.each do |grpc_class|
+ ['', 'gc', 'concurrency'].each do |stress_test_type|
STDERR.puts 'start client'
this_dir = File.expand_path(File.dirname(__FILE__))
client_path = File.join(this_dir, 'grpc_class_init_client.rb')
client_pid = Process.spawn(RbConfig.ruby,
client_path,
"--grpc_class=#{grpc_class}",
- "--gc_stress=#{gc_stress}")
+ "--stress_test=#{stress_test_type}")
begin
Timeout.timeout(10) do
Process.wait(client_pid)
@@ -65,7 +65,9 @@ def main
end
client_exit_code = $CHILD_STATUS
- if client_exit_code != 0
+ # concurrency stress test type is expected to exit with a
+ # non-zero status due to an exception being raised
+ if client_exit_code != 0 and stress_test_type != 'concurrency'
fail "client failed, exit code #{client_exit_code}"
end
end