aboutsummaryrefslogtreecommitdiffstats
path: root/bootstraptest/test_fiber.rb
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-06-02 13:48:47 +1200
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-07-12 11:56:51 +1200
commit012e954b472d2e47b03647ac0c8f745416d7db58 (patch)
treef2f3f0f17de96445c361c358590dbac5a6db969d /bootstraptest/test_fiber.rb
parent8745fa2ff0fbff67031bdecfdeea684b15515a2c (diff)
downloadruby-012e954b472d2e47b03647ac0c8f745416d7db58.tar.gz
Improved fiber benchmarks. Increase number of iterations.
Diffstat (limited to 'bootstraptest/test_fiber.rb')
-rw-r--r--bootstraptest/test_fiber.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/bootstraptest/test_fiber.rb b/bootstraptest/test_fiber.rb
new file mode 100644
index 0000000000..35e1bf6851
--- /dev/null
+++ b/bootstraptest/test_fiber.rb
@@ -0,0 +1,39 @@
+show_limit %q{
+ fibers = []
+ begin
+ fiber = Fiber.new{Fiber.yield}
+ fiber.resume
+ fibers << fiber
+
+ raise Exception, "skipping" if fibers.count >= 10_000
+ rescue Exception => error
+ puts "Fiber count: #{fibers.count} (#{error})"
+ break
+ end while true
+}
+
+assert_equal %q{ok}, %q{
+ Fiber.new{
+ }.resume
+ :ok
+}
+
+assert_equal %q{ok}, %q{
+ 10_000.times.collect{Fiber.new{}}
+ :ok
+}
+
+assert_equal %q{ok}, %q{
+ fibers = 100.times.collect{Fiber.new{Fiber.yield}}
+ fibers.each(&:resume)
+ fibers.each(&:resume)
+ :ok
+}
+
+assert_normal_exit %q{
+ at_exit { Fiber.new{}.resume }
+}
+
+assert_normal_exit %q{
+ Fiber.new(&Object.method(:class_eval)).resume("foo")
+}, '[ruby-dev:34128]'