celluloid 0.16.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of celluloid might be problematic. Click here for more details.

Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +333 -0
  3. data/README.md +1 -1
  4. data/culture/CODE_OF_CONDUCT.md +28 -0
  5. data/culture/Gemfile +9 -0
  6. data/culture/README.md +22 -0
  7. data/culture/Rakefile +5 -0
  8. data/culture/SYNC.md +70 -0
  9. data/culture/celluloid-culture.gemspec +18 -0
  10. data/culture/gems/README.md +39 -0
  11. data/culture/gems/dependencies.yml +78 -0
  12. data/culture/gems/loader.rb +101 -0
  13. data/culture/rubocop/README.md +38 -0
  14. data/culture/rubocop/lint.yml +8 -0
  15. data/culture/rubocop/metrics.yml +15 -0
  16. data/culture/rubocop/rubocop.yml +4 -0
  17. data/culture/rubocop/style.yml +48 -0
  18. data/culture/spec/gems_spec.rb +2 -0
  19. data/culture/spec/spec_helper.rb +0 -0
  20. data/culture/spec/sync_spec.rb +2 -0
  21. data/culture/sync.rb +56 -0
  22. data/culture/tasks/rspec.rake +5 -0
  23. data/culture/tasks/rubocop.rake +2 -0
  24. data/examples/basic_usage.rb +49 -0
  25. data/examples/futures.rb +38 -0
  26. data/examples/ring.rb +61 -0
  27. data/examples/simple_pmap.rb +14 -0
  28. data/examples/timers.rb +72 -0
  29. data/lib/celluloid.rb +142 -127
  30. data/lib/celluloid/actor.rb +47 -41
  31. data/lib/celluloid/actor_system.rb +75 -22
  32. data/lib/celluloid/autostart.rb +1 -1
  33. data/lib/celluloid/backported.rb +2 -0
  34. data/lib/celluloid/call/async.rb +16 -0
  35. data/lib/celluloid/call/block.rb +22 -0
  36. data/lib/celluloid/call/sync.rb +70 -0
  37. data/lib/celluloid/calls.rb +25 -114
  38. data/lib/celluloid/cell.rb +32 -20
  39. data/lib/celluloid/condition.rb +3 -3
  40. data/lib/celluloid/core_ext.rb +1 -1
  41. data/lib/celluloid/current.rb +2 -0
  42. data/lib/celluloid/deprecate.rb +18 -0
  43. data/lib/celluloid/exceptions.rb +1 -1
  44. data/lib/celluloid/fiber.rb +3 -3
  45. data/lib/celluloid/future.rb +7 -6
  46. data/lib/celluloid/group.rb +65 -0
  47. data/lib/celluloid/group/manager.rb +27 -0
  48. data/lib/celluloid/group/pool.rb +125 -0
  49. data/lib/celluloid/group/spawner.rb +71 -0
  50. data/lib/celluloid/logging.rb +5 -5
  51. data/lib/celluloid/mailbox.rb +14 -13
  52. data/lib/celluloid/mailbox/evented.rb +76 -0
  53. data/lib/celluloid/notices.rb +15 -0
  54. data/lib/celluloid/proxies.rb +12 -0
  55. data/lib/celluloid/proxy/abstract.rb +24 -0
  56. data/lib/celluloid/proxy/actor.rb +46 -0
  57. data/lib/celluloid/proxy/async.rb +36 -0
  58. data/lib/celluloid/proxy/block.rb +31 -0
  59. data/lib/celluloid/proxy/cell.rb +76 -0
  60. data/lib/celluloid/proxy/future.rb +40 -0
  61. data/lib/celluloid/proxy/sync.rb +44 -0
  62. data/lib/celluloid/rspec.rb +9 -10
  63. data/lib/celluloid/system_events.rb +16 -15
  64. data/lib/celluloid/{tasks.rb → task.rb} +21 -21
  65. data/lib/celluloid/task/fibered.rb +45 -0
  66. data/lib/celluloid/task/threaded.rb +59 -0
  67. data/lib/celluloid/test.rb +1 -1
  68. data/lib/celluloid/thread.rb +6 -1
  69. data/lib/celluloid/version.rb +3 -0
  70. data/spec/celluloid/actor_spec.rb +2 -2
  71. data/spec/celluloid/actor_system_spec.rb +35 -21
  72. data/spec/celluloid/block_spec.rb +3 -5
  73. data/spec/celluloid/calls_spec.rb +33 -11
  74. data/spec/celluloid/condition_spec.rb +16 -13
  75. data/spec/celluloid/evented_mailbox_spec.rb +1 -31
  76. data/spec/celluloid/future_spec.rb +13 -10
  77. data/spec/celluloid/group/elastic_spec.rb +0 -0
  78. data/spec/celluloid/group/manager_spec.rb +0 -0
  79. data/spec/celluloid/group/pool_spec.rb +8 -0
  80. data/spec/celluloid/group/spawner_spec.rb +8 -0
  81. data/spec/celluloid/mailbox/evented_spec.rb +27 -0
  82. data/spec/celluloid/mailbox_spec.rb +1 -3
  83. data/spec/celluloid/misc/leak_spec.rb +73 -0
  84. data/spec/celluloid/task/fibered_spec.rb +5 -0
  85. data/spec/celluloid/task/threaded_spec.rb +5 -0
  86. data/spec/celluloid/timer_spec.rb +14 -16
  87. data/spec/deprecate/actor_system_spec.rb +72 -0
  88. data/spec/deprecate/block_spec.rb +52 -0
  89. data/spec/deprecate/calls_spec.rb +57 -0
  90. data/spec/deprecate/evented_mailbox_spec.rb +34 -0
  91. data/spec/deprecate/future_spec.rb +32 -0
  92. data/spec/deprecate/internal_pool_spec.rb +4 -0
  93. data/spec/shared/actor_examples.rb +1237 -0
  94. data/spec/shared/group_examples.rb +121 -0
  95. data/{lib/celluloid/rspec → spec/shared}/mailbox_examples.rb +20 -17
  96. data/{lib/celluloid/rspec → spec/shared}/task_examples.rb +9 -8
  97. data/spec/spec_helper.rb +72 -16
  98. data/spec/support/coverage.rb +4 -0
  99. data/spec/support/crash_checking.rb +68 -0
  100. data/spec/support/debugging.rb +31 -0
  101. data/spec/support/env.rb +16 -0
  102. data/{lib/celluloid/rspec/example_actor_class.rb → spec/support/examples/actor_class.rb} +21 -2
  103. data/spec/support/examples/evented_mailbox_class.rb +27 -0
  104. data/spec/support/includer.rb +9 -0
  105. data/spec/support/logging.rb +63 -0
  106. data/spec/support/loose_threads.rb +65 -0
  107. data/spec/support/reset_class_variables.rb +27 -0
  108. data/spec/support/sleep_and_wait.rb +14 -0
  109. data/spec/support/split_logs.rb +1 -0
  110. data/spec/support/stubbing.rb +14 -0
  111. metadata +255 -95
  112. data/lib/celluloid/call_chain.rb +0 -13
  113. data/lib/celluloid/cpu_counter.rb +0 -34
  114. data/lib/celluloid/evented_mailbox.rb +0 -73
  115. data/lib/celluloid/fsm.rb +0 -186
  116. data/lib/celluloid/handlers.rb +0 -41
  117. data/lib/celluloid/internal_pool.rb +0 -159
  118. data/lib/celluloid/legacy.rb +0 -9
  119. data/lib/celluloid/links.rb +0 -36
  120. data/lib/celluloid/logger.rb +0 -93
  121. data/lib/celluloid/logging/incident.rb +0 -21
  122. data/lib/celluloid/logging/incident_logger.rb +0 -129
  123. data/lib/celluloid/logging/incident_reporter.rb +0 -48
  124. data/lib/celluloid/logging/log_event.rb +0 -20
  125. data/lib/celluloid/logging/ring_buffer.rb +0 -65
  126. data/lib/celluloid/method.rb +0 -32
  127. data/lib/celluloid/notifications.rb +0 -83
  128. data/lib/celluloid/pool_manager.rb +0 -146
  129. data/lib/celluloid/probe.rb +0 -73
  130. data/lib/celluloid/properties.rb +0 -24
  131. data/lib/celluloid/proxies/abstract_proxy.rb +0 -20
  132. data/lib/celluloid/proxies/actor_proxy.rb +0 -38
  133. data/lib/celluloid/proxies/async_proxy.rb +0 -31
  134. data/lib/celluloid/proxies/block_proxy.rb +0 -29
  135. data/lib/celluloid/proxies/cell_proxy.rb +0 -68
  136. data/lib/celluloid/proxies/future_proxy.rb +0 -35
  137. data/lib/celluloid/proxies/sync_proxy.rb +0 -36
  138. data/lib/celluloid/receivers.rb +0 -63
  139. data/lib/celluloid/registry.rb +0 -57
  140. data/lib/celluloid/responses.rb +0 -44
  141. data/lib/celluloid/rspec/actor_examples.rb +0 -1054
  142. data/lib/celluloid/signals.rb +0 -23
  143. data/lib/celluloid/stack_dump.rb +0 -133
  144. data/lib/celluloid/supervision_group.rb +0 -169
  145. data/lib/celluloid/supervisor.rb +0 -22
  146. data/lib/celluloid/task_set.rb +0 -49
  147. data/lib/celluloid/tasks/task_fiber.rb +0 -43
  148. data/lib/celluloid/tasks/task_thread.rb +0 -53
  149. data/lib/celluloid/thread_handle.rb +0 -50
  150. data/lib/celluloid/uuid.rb +0 -38
  151. data/spec/celluloid/cpu_counter_spec.rb +0 -82
  152. data/spec/celluloid/fsm_spec.rb +0 -107
  153. data/spec/celluloid/internal_pool_spec.rb +0 -52
  154. data/spec/celluloid/links_spec.rb +0 -45
  155. data/spec/celluloid/logging/ring_buffer_spec.rb +0 -38
  156. data/spec/celluloid/notifications_spec.rb +0 -120
  157. data/spec/celluloid/pool_spec.rb +0 -92
  158. data/spec/celluloid/probe_spec.rb +0 -121
  159. data/spec/celluloid/properties_spec.rb +0 -42
  160. data/spec/celluloid/registry_spec.rb +0 -64
  161. data/spec/celluloid/stack_dump_spec.rb +0 -64
  162. data/spec/celluloid/supervision_group_spec.rb +0 -65
  163. data/spec/celluloid/supervisor_spec.rb +0 -103
  164. data/spec/celluloid/tasks/task_fiber_spec.rb +0 -5
  165. data/spec/celluloid/tasks/task_thread_spec.rb +0 -5
  166. data/spec/celluloid/thread_handle_spec.rb +0 -26
  167. 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,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Celluloid::TaskFiber, actor_system: :within do
4
- it_behaves_like "a Celluloid Task", Celluloid::TaskFiber
5
- end
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Celluloid::TaskThread, actor_system: :within do
4
- it_behaves_like "a Celluloid Task", Celluloid::TaskThread
5
- 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
@@ -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