diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2019-06-02 13:48:47 +1200 |
---|---|---|
committer | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2019-07-12 11:56:51 +1200 |
commit | 012e954b472d2e47b03647ac0c8f745416d7db58 (patch) | |
tree | f2f3f0f17de96445c361c358590dbac5a6db969d /bootstraptest/test_fiber.rb | |
parent | 8745fa2ff0fbff67031bdecfdeea684b15515a2c (diff) | |
download | ruby-012e954b472d2e47b03647ac0c8f745416d7db58.tar.gz |
Improved fiber benchmarks. Increase number of iterations.
Diffstat (limited to 'bootstraptest/test_fiber.rb')
-rw-r--r-- | bootstraptest/test_fiber.rb | 39 |
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]' |