celluloid 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of celluloid might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGES.md +333 -0
- data/README.md +1 -1
- data/culture/CODE_OF_CONDUCT.md +28 -0
- data/culture/Gemfile +9 -0
- data/culture/README.md +22 -0
- data/culture/Rakefile +5 -0
- data/culture/SYNC.md +70 -0
- data/culture/celluloid-culture.gemspec +18 -0
- data/culture/gems/README.md +39 -0
- data/culture/gems/dependencies.yml +78 -0
- data/culture/gems/loader.rb +101 -0
- data/culture/rubocop/README.md +38 -0
- data/culture/rubocop/lint.yml +8 -0
- data/culture/rubocop/metrics.yml +15 -0
- data/culture/rubocop/rubocop.yml +4 -0
- data/culture/rubocop/style.yml +48 -0
- data/culture/spec/gems_spec.rb +2 -0
- data/culture/spec/spec_helper.rb +0 -0
- data/culture/spec/sync_spec.rb +2 -0
- data/culture/sync.rb +56 -0
- data/culture/tasks/rspec.rake +5 -0
- data/culture/tasks/rubocop.rake +2 -0
- data/examples/basic_usage.rb +49 -0
- data/examples/futures.rb +38 -0
- data/examples/ring.rb +61 -0
- data/examples/simple_pmap.rb +14 -0
- data/examples/timers.rb +72 -0
- data/lib/celluloid.rb +142 -127
- data/lib/celluloid/actor.rb +47 -41
- data/lib/celluloid/actor_system.rb +75 -22
- data/lib/celluloid/autostart.rb +1 -1
- data/lib/celluloid/backported.rb +2 -0
- data/lib/celluloid/call/async.rb +16 -0
- data/lib/celluloid/call/block.rb +22 -0
- data/lib/celluloid/call/sync.rb +70 -0
- data/lib/celluloid/calls.rb +25 -114
- data/lib/celluloid/cell.rb +32 -20
- data/lib/celluloid/condition.rb +3 -3
- data/lib/celluloid/core_ext.rb +1 -1
- data/lib/celluloid/current.rb +2 -0
- data/lib/celluloid/deprecate.rb +18 -0
- data/lib/celluloid/exceptions.rb +1 -1
- data/lib/celluloid/fiber.rb +3 -3
- data/lib/celluloid/future.rb +7 -6
- data/lib/celluloid/group.rb +65 -0
- data/lib/celluloid/group/manager.rb +27 -0
- data/lib/celluloid/group/pool.rb +125 -0
- data/lib/celluloid/group/spawner.rb +71 -0
- data/lib/celluloid/logging.rb +5 -5
- data/lib/celluloid/mailbox.rb +14 -13
- data/lib/celluloid/mailbox/evented.rb +76 -0
- data/lib/celluloid/notices.rb +15 -0
- data/lib/celluloid/proxies.rb +12 -0
- data/lib/celluloid/proxy/abstract.rb +24 -0
- data/lib/celluloid/proxy/actor.rb +46 -0
- data/lib/celluloid/proxy/async.rb +36 -0
- data/lib/celluloid/proxy/block.rb +31 -0
- data/lib/celluloid/proxy/cell.rb +76 -0
- data/lib/celluloid/proxy/future.rb +40 -0
- data/lib/celluloid/proxy/sync.rb +44 -0
- data/lib/celluloid/rspec.rb +9 -10
- data/lib/celluloid/system_events.rb +16 -15
- data/lib/celluloid/{tasks.rb → task.rb} +21 -21
- data/lib/celluloid/task/fibered.rb +45 -0
- data/lib/celluloid/task/threaded.rb +59 -0
- data/lib/celluloid/test.rb +1 -1
- data/lib/celluloid/thread.rb +6 -1
- data/lib/celluloid/version.rb +3 -0
- data/spec/celluloid/actor_spec.rb +2 -2
- data/spec/celluloid/actor_system_spec.rb +35 -21
- data/spec/celluloid/block_spec.rb +3 -5
- data/spec/celluloid/calls_spec.rb +33 -11
- data/spec/celluloid/condition_spec.rb +16 -13
- data/spec/celluloid/evented_mailbox_spec.rb +1 -31
- data/spec/celluloid/future_spec.rb +13 -10
- data/spec/celluloid/group/elastic_spec.rb +0 -0
- data/spec/celluloid/group/manager_spec.rb +0 -0
- data/spec/celluloid/group/pool_spec.rb +8 -0
- data/spec/celluloid/group/spawner_spec.rb +8 -0
- data/spec/celluloid/mailbox/evented_spec.rb +27 -0
- data/spec/celluloid/mailbox_spec.rb +1 -3
- data/spec/celluloid/misc/leak_spec.rb +73 -0
- data/spec/celluloid/task/fibered_spec.rb +5 -0
- data/spec/celluloid/task/threaded_spec.rb +5 -0
- data/spec/celluloid/timer_spec.rb +14 -16
- data/spec/deprecate/actor_system_spec.rb +72 -0
- data/spec/deprecate/block_spec.rb +52 -0
- data/spec/deprecate/calls_spec.rb +57 -0
- data/spec/deprecate/evented_mailbox_spec.rb +34 -0
- data/spec/deprecate/future_spec.rb +32 -0
- data/spec/deprecate/internal_pool_spec.rb +4 -0
- data/spec/shared/actor_examples.rb +1237 -0
- data/spec/shared/group_examples.rb +121 -0
- data/{lib/celluloid/rspec → spec/shared}/mailbox_examples.rb +20 -17
- data/{lib/celluloid/rspec → spec/shared}/task_examples.rb +9 -8
- data/spec/spec_helper.rb +72 -16
- data/spec/support/coverage.rb +4 -0
- data/spec/support/crash_checking.rb +68 -0
- data/spec/support/debugging.rb +31 -0
- data/spec/support/env.rb +16 -0
- data/{lib/celluloid/rspec/example_actor_class.rb → spec/support/examples/actor_class.rb} +21 -2
- data/spec/support/examples/evented_mailbox_class.rb +27 -0
- data/spec/support/includer.rb +9 -0
- data/spec/support/logging.rb +63 -0
- data/spec/support/loose_threads.rb +65 -0
- data/spec/support/reset_class_variables.rb +27 -0
- data/spec/support/sleep_and_wait.rb +14 -0
- data/spec/support/split_logs.rb +1 -0
- data/spec/support/stubbing.rb +14 -0
- metadata +255 -95
- data/lib/celluloid/call_chain.rb +0 -13
- data/lib/celluloid/cpu_counter.rb +0 -34
- data/lib/celluloid/evented_mailbox.rb +0 -73
- data/lib/celluloid/fsm.rb +0 -186
- data/lib/celluloid/handlers.rb +0 -41
- data/lib/celluloid/internal_pool.rb +0 -159
- data/lib/celluloid/legacy.rb +0 -9
- data/lib/celluloid/links.rb +0 -36
- data/lib/celluloid/logger.rb +0 -93
- data/lib/celluloid/logging/incident.rb +0 -21
- data/lib/celluloid/logging/incident_logger.rb +0 -129
- data/lib/celluloid/logging/incident_reporter.rb +0 -48
- data/lib/celluloid/logging/log_event.rb +0 -20
- data/lib/celluloid/logging/ring_buffer.rb +0 -65
- data/lib/celluloid/method.rb +0 -32
- data/lib/celluloid/notifications.rb +0 -83
- data/lib/celluloid/pool_manager.rb +0 -146
- data/lib/celluloid/probe.rb +0 -73
- data/lib/celluloid/properties.rb +0 -24
- data/lib/celluloid/proxies/abstract_proxy.rb +0 -20
- data/lib/celluloid/proxies/actor_proxy.rb +0 -38
- data/lib/celluloid/proxies/async_proxy.rb +0 -31
- data/lib/celluloid/proxies/block_proxy.rb +0 -29
- data/lib/celluloid/proxies/cell_proxy.rb +0 -68
- data/lib/celluloid/proxies/future_proxy.rb +0 -35
- data/lib/celluloid/proxies/sync_proxy.rb +0 -36
- data/lib/celluloid/receivers.rb +0 -63
- data/lib/celluloid/registry.rb +0 -57
- data/lib/celluloid/responses.rb +0 -44
- data/lib/celluloid/rspec/actor_examples.rb +0 -1054
- data/lib/celluloid/signals.rb +0 -23
- data/lib/celluloid/stack_dump.rb +0 -133
- data/lib/celluloid/supervision_group.rb +0 -169
- data/lib/celluloid/supervisor.rb +0 -22
- data/lib/celluloid/task_set.rb +0 -49
- data/lib/celluloid/tasks/task_fiber.rb +0 -43
- data/lib/celluloid/tasks/task_thread.rb +0 -53
- data/lib/celluloid/thread_handle.rb +0 -50
- data/lib/celluloid/uuid.rb +0 -38
- data/spec/celluloid/cpu_counter_spec.rb +0 -82
- data/spec/celluloid/fsm_spec.rb +0 -107
- data/spec/celluloid/internal_pool_spec.rb +0 -52
- data/spec/celluloid/links_spec.rb +0 -45
- data/spec/celluloid/logging/ring_buffer_spec.rb +0 -38
- data/spec/celluloid/notifications_spec.rb +0 -120
- data/spec/celluloid/pool_spec.rb +0 -92
- data/spec/celluloid/probe_spec.rb +0 -121
- data/spec/celluloid/properties_spec.rb +0 -42
- data/spec/celluloid/registry_spec.rb +0 -64
- data/spec/celluloid/stack_dump_spec.rb +0 -64
- data/spec/celluloid/supervision_group_spec.rb +0 -65
- data/spec/celluloid/supervisor_spec.rb +0 -103
- data/spec/celluloid/tasks/task_fiber_spec.rb +0 -5
- data/spec/celluloid/tasks/task_thread_spec.rb +0 -5
- data/spec/celluloid/thread_handle_spec.rb +0 -26
- data/spec/celluloid/uuid_spec.rb +0 -11
@@ -1,103 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Celluloid::Supervisor, actor_system: :global do
|
4
|
-
class SubordinateDead < StandardError; end
|
5
|
-
|
6
|
-
class Subordinate
|
7
|
-
include Celluloid
|
8
|
-
attr_reader :state
|
9
|
-
|
10
|
-
def initialize(state)
|
11
|
-
@state = state
|
12
|
-
end
|
13
|
-
|
14
|
-
def crack_the_whip
|
15
|
-
case @state
|
16
|
-
when :idle
|
17
|
-
@state = :working
|
18
|
-
else raise SubordinateDead, "the spec purposely crashed me :("
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
it "restarts actors when they die" do
|
24
|
-
supervisor = Celluloid::Supervisor.supervise(Subordinate, :idle)
|
25
|
-
subordinate = supervisor.actors.first
|
26
|
-
subordinate.state.should be(:idle)
|
27
|
-
|
28
|
-
subordinate.crack_the_whip
|
29
|
-
subordinate.state.should be(:working)
|
30
|
-
|
31
|
-
expect do
|
32
|
-
subordinate.crack_the_whip
|
33
|
-
end.to raise_exception(SubordinateDead)
|
34
|
-
sleep 0.1 # hax to prevent race :(
|
35
|
-
subordinate.should_not be_alive
|
36
|
-
|
37
|
-
new_subordinate = supervisor.actors.first
|
38
|
-
new_subordinate.should_not eq subordinate
|
39
|
-
new_subordinate.state.should eq :idle
|
40
|
-
end
|
41
|
-
|
42
|
-
it "registers actors and reregisters them when they die" do
|
43
|
-
Celluloid::Supervisor.supervise_as(:subordinate, Subordinate, :idle)
|
44
|
-
subordinate = Celluloid::Actor[:subordinate]
|
45
|
-
subordinate.state.should be(:idle)
|
46
|
-
|
47
|
-
subordinate.crack_the_whip
|
48
|
-
subordinate.state.should be(:working)
|
49
|
-
|
50
|
-
expect do
|
51
|
-
subordinate.crack_the_whip
|
52
|
-
end.to raise_exception(SubordinateDead)
|
53
|
-
sleep 0.1 # hax to prevent race :(
|
54
|
-
subordinate.should_not be_alive
|
55
|
-
|
56
|
-
new_subordinate = Celluloid::Actor[:subordinate]
|
57
|
-
new_subordinate.should_not eq subordinate
|
58
|
-
new_subordinate.state.should eq :idle
|
59
|
-
end
|
60
|
-
|
61
|
-
it "creates supervisors via Actor.supervise" do
|
62
|
-
supervisor = Subordinate.supervise(:working)
|
63
|
-
subordinate = supervisor.actors.first
|
64
|
-
subordinate.state.should be(:working)
|
65
|
-
|
66
|
-
expect do
|
67
|
-
subordinate.crack_the_whip
|
68
|
-
end.to raise_exception(SubordinateDead)
|
69
|
-
sleep 0.1 # hax to prevent race :(
|
70
|
-
subordinate.should_not be_alive
|
71
|
-
|
72
|
-
new_subordinate = supervisor.actors.first
|
73
|
-
new_subordinate.should_not eq subordinate
|
74
|
-
new_subordinate.state.should eq :working
|
75
|
-
end
|
76
|
-
|
77
|
-
it "creates supervisors and registers actors via Actor.supervise_as" do
|
78
|
-
supervisor = Subordinate.supervise_as(:subordinate, :working)
|
79
|
-
subordinate = Celluloid::Actor[:subordinate]
|
80
|
-
subordinate.state.should be(:working)
|
81
|
-
|
82
|
-
expect do
|
83
|
-
subordinate.crack_the_whip
|
84
|
-
end.to raise_exception(SubordinateDead)
|
85
|
-
sleep 0.1 # hax to prevent race :(
|
86
|
-
subordinate.should_not be_alive
|
87
|
-
|
88
|
-
new_subordinate = supervisor.actors.first
|
89
|
-
new_subordinate.should_not eq subordinate
|
90
|
-
new_subordinate.state.should be(:working)
|
91
|
-
end
|
92
|
-
|
93
|
-
it "removes an actor if it terminates cleanly" do
|
94
|
-
supervisor = Subordinate.supervise(:working)
|
95
|
-
subordinate = supervisor.actors.first
|
96
|
-
|
97
|
-
supervisor.actors.should == [subordinate]
|
98
|
-
|
99
|
-
subordinate.terminate
|
100
|
-
|
101
|
-
supervisor.actors.should be_empty
|
102
|
-
end
|
103
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Celluloid::ThreadHandle do
|
4
|
-
let(:actor_system) do
|
5
|
-
Celluloid::ActorSystem.new
|
6
|
-
end
|
7
|
-
|
8
|
-
it "knows thread liveliness" do
|
9
|
-
queue = Queue.new
|
10
|
-
handle = Celluloid::ThreadHandle.new(actor_system) { queue.pop }
|
11
|
-
handle.should be_alive
|
12
|
-
|
13
|
-
queue << :die
|
14
|
-
|
15
|
-
sleep 0.01 # hax
|
16
|
-
handle.should_not be_alive
|
17
|
-
end
|
18
|
-
|
19
|
-
it "joins to thread handles" do
|
20
|
-
Celluloid::ThreadHandle.new(actor_system) { sleep 0.01 }.join
|
21
|
-
end
|
22
|
-
|
23
|
-
it "supports passing a role" do
|
24
|
-
Celluloid::ThreadHandle.new(actor_system, :useful) { Thread.current.role.should == :useful }.join
|
25
|
-
end
|
26
|
-
end
|
data/spec/celluloid/uuid_spec.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Celluloid::UUID do
|
4
|
-
U = Celluloid::UUID
|
5
|
-
|
6
|
-
it "generates unique IDs across the BLOCK_SIZE boundary" do
|
7
|
-
upper_bound = U::BLOCK_SIZE * 2 + 10
|
8
|
-
uuids = (1..upper_bound).map{ U.generate }
|
9
|
-
uuids.size.should == uuids.uniq.size
|
10
|
-
end
|
11
|
-
end
|