https://github.com/bruno-/fiber_scheduler_spec
Common specs for a Ruby fiber scheduler
https://github.com/bruno-/fiber_scheduler_spec
fiber fiber-scheduler ruby
Last synced: 6 months ago
JSON representation
Common specs for a Ruby fiber scheduler
- Host: GitHub
- URL: https://github.com/bruno-/fiber_scheduler_spec
- Owner: bruno-
- License: mit
- Created: 2022-02-12T20:00:31.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-03-02T14:34:52.000Z (over 3 years ago)
- Last Synced: 2025-04-10T19:44:59.315Z (6 months ago)
- Topics: fiber, fiber-scheduler, ruby
- Language: Ruby
- Homepage:
- Size: 42 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fiber scheduler spec
Building a Ruby fiber scheduler is hard. This gem helps with testing it.
Works with fiber schedulers in ruby 3.1.
This is **NOT** a specification, here are
[the official docs for fiber scheduler](https://docs.ruby-lang.org/en/master/Fiber/SchedulerInterface.html).### Installation
```
gem install fiber_scheduler_spec
```### Usage
Run all the specs on `CustomFiberScheduler`:
```ruby
# spec/custom_fiber_scheduler/fiber_scheduler_spec.rb
require "fiber_scheduler_spec"RSpec.describe CustomFiberScheduler do
include_examples FiberSchedulerSpec
end
```**or**
Run a subset of specs (just comment out example groups you don't need):
```ruby
# spec/custom_fiber_scheduler/fiber_scheduler_spec.rb
require "fiber_scheduler_spec"RSpec.describe CustomFiberScheduler do
include_examples FiberSchedulerSpec::BlockUnblock
include_examples FiberSchedulerSpec::Close
include_examples FiberSchedulerSpec::Fiber
include_examples FiberSchedulerSpec::IOWait
include_examples FiberSchedulerSpec::KernelSleep
include_examples FiberSchedulerSpec::NestedFiberSchedule
include_examples FiberSchedulerSpec::ProcessWait
include_examples FiberSchedulerSpec::SocketIO
include_examples FiberSchedulerSpec::TimeoutAfter
end
```### More info
This gem assumes your fiber scheduler implements:
- All the methods defined in
[Fiber::SchedulerInterface docs](https://docs.ruby-lang.org/en/master/Fiber/SchedulerInterface.html).
- `#run` method that starts the event loop.### License
[MIT](LICENSE)