celluloid 0.17.1.2 → 0.17.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +16 -1
- data/culture/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
- data/culture/celluloid-culture.gemspec +1 -1
- data/culture/gems/dependencies.yml +9 -8
- data/culture/rubocop/perf.yml +0 -0
- data/culture/rubocop/rubocop.yml +1 -0
- data/culture/rubocop/style.yml +9 -0
- data/lib/celluloid.rb +2 -2
- data/lib/celluloid/exceptions.rb +1 -0
- data/lib/celluloid/group/spawner.rb +14 -16
- data/lib/celluloid/rspec.rb +61 -1
- data/lib/celluloid/version.rb +1 -1
- data/spec/celluloid/block_spec.rb +13 -13
- data/spec/celluloid/calls_spec.rb +0 -17
- data/spec/celluloid/condition_spec.rb +1 -1
- data/spec/celluloid/group/spawner_spec.rb +9 -0
- data/spec/celluloid/mailbox/evented_spec.rb +2 -2
- data/spec/deprecate/calls_spec.rb +0 -18
- data/spec/deprecate/future_spec.rb +2 -2
- data/spec/shared/actor_examples.rb +11 -16
- data/spec/spec_helper.rb +1 -94
- data/spec/support/configure_rspec.rb +77 -0
- data/spec/support/env.rb +13 -8
- data/spec/support/examples/actor_class.rb +1 -1
- data/spec/support/examples/call_class.rb +37 -0
- data/spec/support/includer.rb +1 -4
- data/spec/support/logging.rb +2 -10
- data/spec/support/loose_threads.rb +20 -9
- data/spec/support/sleep_and_wait.rb +1 -1
- metadata +33 -31
- data/spec/support/split_logs.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e4fef1274946e44231177bcac481a79c785e496
|
4
|
+
data.tar.gz: ddabf286ed4d0ac58f7f58f6ae9f843fd5b82a62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8864299ee4256cc2fbe2f5cd32bd59f49f80033f6352a65ae76ac4381c9903835b563147d66ef19585d836e5a1bac92801269276dca003a093dc2c845c91c04d
|
7
|
+
data.tar.gz: fc79f37cf47fd47111cf2304c977c64d0d1e1e37b5c07f9d863e4975f1dd901ab2f43692a0cb656a36c98a93d9811bcdbcf10edecb027444ced46f916b19685d
|
data/CHANGES.md
CHANGED
@@ -1,4 +1,19 @@
|
|
1
|
-
0.17.
|
1
|
+
0.17.2 (2015-09-30)
|
2
|
+
-----
|
3
|
+
* Revamped test suite, using shared RSpec configuration layer provided by Celluloid itself.
|
4
|
+
* Updated gem dependencies provided by Celluloid::Sync... extraneous gems removed, or marked as development dependencies.
|
5
|
+
- Clean up deprecation notes.
|
6
|
+
|
7
|
+
0.17.1.2 (2015-08-21)
|
8
|
+
-----
|
9
|
+
- Fixes to posted markdown content.
|
10
|
+
- Pull in new gem dependencies.
|
11
|
+
|
12
|
+
0.17.1.1 (2015-08-07)
|
13
|
+
-----
|
14
|
+
- Revert "no task to suspend" code from #232.
|
15
|
+
|
16
|
+
0.17.1 (2015-08-06)
|
2
17
|
-----
|
3
18
|
* `Celluloid::ActorSystem` moved to `Celluloid::Actor::System`, and from `celluloid/actor_system.rb` to `celluloid/actor/system.rb`
|
4
19
|
* Added extensible API for defining new SystemEvents, and having them handled... without everyone changing `Actor#handle_system_event`.
|
File without changes
|
@@ -1,6 +1,11 @@
|
|
1
1
|
bundler:
|
2
|
+
dependency: development
|
3
|
+
|
2
4
|
nenv:
|
5
|
+
dependency: development
|
6
|
+
|
3
7
|
dotenv:
|
8
|
+
dependency: development
|
4
9
|
|
5
10
|
benchmark_suite:
|
6
11
|
dependency: development
|
@@ -23,6 +28,9 @@ rspec:
|
|
23
28
|
guard-rspec:
|
24
29
|
dependency: development
|
25
30
|
|
31
|
+
rspec-retry:
|
32
|
+
dependency: development
|
33
|
+
|
26
34
|
coveralls:
|
27
35
|
dependency: development
|
28
36
|
gemfile:
|
@@ -30,7 +38,7 @@ coveralls:
|
|
30
38
|
|
31
39
|
celluloid:
|
32
40
|
dependency: core
|
33
|
-
version: ">= 0.17.
|
41
|
+
version: ">= 0.17.2"
|
34
42
|
gemfile:
|
35
43
|
github: celluloid/celluloid
|
36
44
|
branch: master
|
@@ -75,10 +83,3 @@ timers:
|
|
75
83
|
version: ">= 4.1.1"
|
76
84
|
gemfile:
|
77
85
|
github: celluloid/timers
|
78
|
-
|
79
|
-
rspec-logsplit:
|
80
|
-
version: ">= 0.1.2"
|
81
|
-
gemfile:
|
82
|
-
github: "abstractive/rspec-logsplit"
|
83
|
-
branch: "master"
|
84
|
-
require: false
|
File without changes
|
data/culture/rubocop/rubocop.yml
CHANGED
data/culture/rubocop/style.yml
CHANGED
data/lib/celluloid.rb
CHANGED
@@ -24,7 +24,7 @@ module Celluloid
|
|
24
24
|
BARE_OBJECT_WARNING_MESSAGE = "WARNING: BARE CELLULOID OBJECT "
|
25
25
|
|
26
26
|
class << self
|
27
|
-
attr_writer :actor_system
|
27
|
+
attr_writer :actor_system # Default Actor System
|
28
28
|
attr_accessor :logger # Thread-safe logger class
|
29
29
|
attr_accessor :log_actor_crashes
|
30
30
|
attr_accessor :group_class # Default internal thread group to use
|
@@ -165,7 +165,7 @@ module Celluloid
|
|
165
165
|
# Terminate all actors at exit
|
166
166
|
at_exit do
|
167
167
|
sleep 0.126 # hax grace period for unnaturally terminating actors
|
168
|
-
|
168
|
+
# allows "reason" in exit_handler to resolve before being destroyed
|
169
169
|
if defined?(RUBY_ENGINE) && RUBY_ENGINE == "ruby" && RUBY_VERSION >= "1.9"
|
170
170
|
# workaround for MRI bug losing exit status in at_exit block
|
171
171
|
# http://bugs.ruby-lang.org/issues/5218
|
data/lib/celluloid/exceptions.rb
CHANGED
@@ -17,48 +17,46 @@ module Celluloid
|
|
17
17
|
|
18
18
|
def shutdown
|
19
19
|
@running = false
|
20
|
+
queue = []
|
20
21
|
@mutex.synchronize do
|
21
|
-
queue = Queue.new
|
22
22
|
loop do
|
23
23
|
break if @group.empty?
|
24
24
|
th = @group.shift
|
25
25
|
th.kill
|
26
26
|
queue << th
|
27
27
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
end
|
29
|
+
Thread.pass unless queue.empty?
|
30
|
+
loop do
|
31
|
+
break if queue.empty?
|
32
|
+
queue.pop.join
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
36
|
def idle?
|
36
|
-
to_a.select { |t| t[:
|
37
|
+
to_a.select { |t| t[:celluloid_thread_state] == :running }.empty?
|
37
38
|
end
|
38
39
|
|
39
40
|
def busy?
|
40
|
-
to_a.select { |t| t[:
|
41
|
+
to_a.select { |t| t[:celluloid_thread_state] == :running }.any?
|
41
42
|
end
|
42
43
|
|
43
44
|
private
|
44
45
|
|
45
46
|
def instantiate(proc)
|
46
47
|
thread = Thread.new do
|
47
|
-
Thread.current[:
|
48
|
-
started: Time.now,
|
49
|
-
state: :running,
|
50
|
-
}
|
51
|
-
|
48
|
+
Thread.current[:celluloid_thread_state] = :running
|
52
49
|
begin
|
53
50
|
proc.call
|
54
51
|
rescue ::Exception => ex
|
55
52
|
Internals::Logger.crash("thread crashed", ex)
|
56
|
-
Thread.current[:
|
53
|
+
Thread.current[:celluloid_thread_state] = :error
|
57
54
|
ensure
|
58
|
-
unless Thread.current[:
|
59
|
-
Thread.current[:
|
55
|
+
unless Thread.current[:celluloid_thread_state] == :error
|
56
|
+
Thread.current[:celluloid_thread_state] = :finished
|
60
57
|
end
|
61
|
-
Thread.current
|
58
|
+
@mutex.synchronize { @group.delete Thread.current }
|
59
|
+
Thread.exit
|
62
60
|
end
|
63
61
|
end
|
64
62
|
|
data/lib/celluloid/rspec.rb
CHANGED
@@ -1,12 +1,72 @@
|
|
1
|
+
require "dotenv"
|
2
|
+
require "nenv"
|
3
|
+
|
1
4
|
require "celluloid/test"
|
2
5
|
|
6
|
+
# To help produce better bug reports in Rubinius
|
7
|
+
if RUBY_ENGINE == "rbx"
|
8
|
+
# $DEBUG = true # would be nice if this didn't fail ... :(
|
9
|
+
require "rspec/matchers"
|
10
|
+
require "rspec/matchers/built_in/be"
|
11
|
+
end
|
12
|
+
|
13
|
+
require "rspec/retry"
|
14
|
+
|
15
|
+
module Specs
|
16
|
+
|
17
|
+
CHECK_LOOSE_THREADS = !Nenv.ci? unless defined? CHECK_LOOSE_THREADS
|
18
|
+
ALLOW_RETRIES = 3 unless defined? ALLOW_RETRIES
|
19
|
+
ALLOW_SLOW_MAILBOXES = false unless defined? ALLOW_SLOW_MAILBOXES
|
20
|
+
|
21
|
+
INCLUDE_SUPPORT = [
|
22
|
+
"env",
|
23
|
+
"logging",
|
24
|
+
"sleep_and_wait",
|
25
|
+
"reset_class_variables",
|
26
|
+
"crash_checking",
|
27
|
+
"loose_threads",
|
28
|
+
"stubbing",
|
29
|
+
"coverage",
|
30
|
+
"includer",
|
31
|
+
"configure_rspec"
|
32
|
+
]
|
33
|
+
|
34
|
+
INCLUDE_PATHS = [
|
35
|
+
"./spec/support/*.rb",
|
36
|
+
"./spec/support/examples/*.rb",
|
37
|
+
"./spec/shared/*.rb"
|
38
|
+
]
|
39
|
+
|
40
|
+
MAX_EXECUTION = 13
|
41
|
+
MAX_ATTEMPTS = 20
|
42
|
+
|
43
|
+
TIMER_QUANTUM = 0.05 # Timer accuracy enforced by the tests (50ms)
|
44
|
+
|
45
|
+
BACKTRACE_OMITTED = [
|
46
|
+
"rspec-expectations",
|
47
|
+
"rspec-core",
|
48
|
+
"rspec-mocks",
|
49
|
+
"rspec-retry",
|
50
|
+
"rubysl-thread",
|
51
|
+
"rubysl-timeout"
|
52
|
+
]
|
53
|
+
end
|
54
|
+
|
3
55
|
$CELLULOID_DEBUG = true
|
4
56
|
|
57
|
+
# Require but disable, so it has to be explicitly enabled in tests
|
58
|
+
require "celluloid/probe"
|
59
|
+
$CELLULOID_MONITORING = false
|
60
|
+
|
61
|
+
Celluloid.shutdown_timeout = 1
|
62
|
+
|
5
63
|
# Load shared examples and test support code for other gems to use.
|
6
64
|
|
7
|
-
|
65
|
+
Specs::INCLUDE_SUPPORT.each { |f|
|
8
66
|
require "#{File.expand_path('../../../spec/support', __FILE__)}/#{f}.rb"
|
9
67
|
}
|
10
68
|
|
69
|
+
Specs.reset_probe(nil)
|
70
|
+
|
11
71
|
Dir["#{File.expand_path('../../../spec/support/examples', __FILE__)}/*.rb"].map { |f| require f }
|
12
72
|
Dir["#{File.expand_path('../../../spec/shared', __FILE__)}/*.rb"].map { |f| require f }
|
data/lib/celluloid/version.rb
CHANGED
@@ -19,21 +19,21 @@ RSpec.describe "Blocks", actor_system: :global do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
def deferred_excecution(value, &
|
23
|
-
defer
|
22
|
+
def deferred_excecution(value, &_block)
|
23
|
+
defer do
|
24
24
|
yield(value)
|
25
|
-
|
25
|
+
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def deferred_current_actor(&
|
29
|
-
defer
|
28
|
+
def deferred_current_actor(&_block)
|
29
|
+
defer do
|
30
30
|
yield(current_actor.name)
|
31
|
-
|
31
|
+
end
|
32
32
|
end
|
33
33
|
|
34
|
-
def defer_for_something(other, &
|
34
|
+
def defer_for_something(other, &_block)
|
35
35
|
sender_actor = current_actor
|
36
|
-
defer
|
36
|
+
defer do
|
37
37
|
$data << [:outside, @name, current_actor.name]
|
38
38
|
other.do_something_and_callback do |value|
|
39
39
|
$data << [:yielded, @name, current_actor.name]
|
@@ -42,7 +42,7 @@ RSpec.describe "Blocks", actor_system: :global do
|
|
42
42
|
$data << sender_actor.receive_result(:sender)
|
43
43
|
:pete_the_polyglot_alien
|
44
44
|
end
|
45
|
-
|
45
|
+
end
|
46
46
|
end
|
47
47
|
|
48
48
|
def do_something_and_callback
|
@@ -76,14 +76,14 @@ RSpec.describe "Blocks", actor_system: :global do
|
|
76
76
|
expect($data).to eq(expected)
|
77
77
|
end
|
78
78
|
|
79
|
-
execute_deferred =
|
79
|
+
execute_deferred = proc do
|
80
80
|
a1 = MyBlockActor.new("one")
|
81
81
|
expect(a1.deferred_excecution(:pete_the_polyglot_alien) { |v| v })
|
82
|
-
|
83
|
-
|
82
|
+
.to eq(:pete_the_polyglot_alien)
|
83
|
+
end
|
84
84
|
|
85
85
|
# unless RUBY_ENGINE == 'jruby'
|
86
|
-
|
86
|
+
xit("can be deferred", &execute_deferred)
|
87
87
|
# else
|
88
88
|
# it("can be deferred", &execute_deferred)
|
89
89
|
# end
|
@@ -1,22 +1,5 @@
|
|
1
1
|
RSpec.describe Celluloid::Call::Sync, actor_system: :global do
|
2
2
|
# TODO: these should be Call::Sync unit tests (without working on actual actors)
|
3
|
-
class CallExampleActor
|
4
|
-
include Celluloid
|
5
|
-
|
6
|
-
def initialize(next_actor = nil)
|
7
|
-
@next = next_actor
|
8
|
-
end
|
9
|
-
|
10
|
-
def actual_method; end
|
11
|
-
|
12
|
-
def inspect
|
13
|
-
fail "Don't call!"
|
14
|
-
end
|
15
|
-
|
16
|
-
def chained_call_ids
|
17
|
-
[call_chain_id, @next.call_chain_id]
|
18
|
-
end
|
19
|
-
end
|
20
3
|
|
21
4
|
let(:actor) { CallExampleActor.new }
|
22
5
|
let(:logger) { Specs::FakeLogger.current }
|
@@ -4,5 +4,14 @@ require "celluloid/internals/logger"
|
|
4
4
|
if Celluloid.group_class == Celluloid::Group::Spawner
|
5
5
|
RSpec.describe Celluloid::Group::Spawner do
|
6
6
|
it_behaves_like "a Celluloid Group"
|
7
|
+
|
8
|
+
it "does not leak finished threads" do
|
9
|
+
queue = Queue.new
|
10
|
+
th = subject.get { queue.pop }
|
11
|
+
expect do
|
12
|
+
queue << nil
|
13
|
+
th.join
|
14
|
+
end.to change { subject.group.length }.by(-1)
|
15
|
+
end
|
7
16
|
end
|
8
17
|
end
|
@@ -13,7 +13,7 @@ RSpec.describe Celluloid::Mailbox::Evented do
|
|
13
13
|
#
|
14
14
|
unless RUBY_ENGINE == "rbx"
|
15
15
|
it "recovers from timeout exceeded to process mailbox message" do
|
16
|
-
timeout_interval =
|
16
|
+
timeout_interval = Specs::TIMER_QUANTUM + 0.1
|
17
17
|
started_at = Time.now
|
18
18
|
expect do
|
19
19
|
Kernel.send(:timeout, timeout_interval) do
|
@@ -21,7 +21,7 @@ RSpec.describe Celluloid::Mailbox::Evented do
|
|
21
21
|
end
|
22
22
|
end.to raise_exception(Timeout::Error)
|
23
23
|
|
24
|
-
expect(Time.now - started_at).to be_within(
|
24
|
+
expect(Time.now - started_at).to be_within(Specs::TIMER_QUANTUM).of timeout_interval
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -1,24 +1,6 @@
|
|
1
1
|
RSpec.describe "Deprecated Celluloid::SyncCall", actor_system: :global do
|
2
2
|
subject { Celluloid::SyncCall.new }
|
3
3
|
|
4
|
-
class DeprecatedCallExampleActor
|
5
|
-
include Celluloid
|
6
|
-
|
7
|
-
def initialize(next_actor = nil)
|
8
|
-
@next = next_actor
|
9
|
-
end
|
10
|
-
|
11
|
-
def actual_method; end
|
12
|
-
|
13
|
-
def inspect
|
14
|
-
fail "Please don't call me! I'm not ready yet!"
|
15
|
-
end
|
16
|
-
|
17
|
-
def chained_call_ids
|
18
|
-
[call_chain_id, @next.call_chain_id]
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
4
|
let(:actor) { DeprecatedCallExampleActor.new }
|
23
5
|
|
24
6
|
context "when obj does not respond to a method" do
|
@@ -19,9 +19,9 @@ RSpec.describe "Deprecated Celluloid::Future", actor_system: :global do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
it "knows if it's got a value yet" do
|
22
|
-
future = Celluloid::Future.new { sleep
|
22
|
+
future = Celluloid::Future.new { sleep Specs::TIMER_QUANTUM * 5 }
|
23
23
|
expect(future).not_to be_ready
|
24
|
-
sleep
|
24
|
+
sleep Specs::TIMER_QUANTUM * 6
|
25
25
|
expect(future).to be_ready
|
26
26
|
end
|
27
27
|
|
@@ -1,9 +1,4 @@
|
|
1
1
|
RSpec.shared_examples "a Celluloid Actor" do
|
2
|
-
before(:each) do |example|
|
3
|
-
@fake_logger = Specs::FakeLogger.new(Celluloid.logger, example.description)
|
4
|
-
stub_const("Celluloid::Internals::Logger", @fake_logger)
|
5
|
-
end
|
6
|
-
|
7
2
|
around do |ex|
|
8
3
|
Celluloid.boot
|
9
4
|
ex.run
|
@@ -766,13 +761,13 @@ RSpec.shared_examples "a Celluloid Actor" do
|
|
766
761
|
|
767
762
|
def exclusive_with_block_log_task(task)
|
768
763
|
exclusive do
|
769
|
-
sleep
|
764
|
+
sleep Specs::TIMER_QUANTUM
|
770
765
|
log_task(task)
|
771
766
|
end
|
772
767
|
end
|
773
768
|
|
774
769
|
def exclusive_log_task(task)
|
775
|
-
sleep
|
770
|
+
sleep Specs::TIMER_QUANTUM
|
776
771
|
log_task(task)
|
777
772
|
end
|
778
773
|
exclusive :exclusive_log_task
|
@@ -794,14 +789,14 @@ RSpec.shared_examples "a Celluloid Actor" do
|
|
794
789
|
it "executes methods in the proper order with block form" do
|
795
790
|
subject.async.exclusive_with_block_log_task(:one)
|
796
791
|
subject.async.log_task(:two)
|
797
|
-
sleep
|
792
|
+
sleep Specs::TIMER_QUANTUM * 2
|
798
793
|
expect(subject.tasks).to eq([:one, :two])
|
799
794
|
end
|
800
795
|
|
801
796
|
it "executes methods in the proper order with a class-level annotation" do
|
802
797
|
subject.async.exclusive_log_task :one
|
803
798
|
subject.async.log_task :two
|
804
|
-
sleep
|
799
|
+
sleep Specs::TIMER_QUANTUM * 2
|
805
800
|
expect(subject.tasks).to eq([:one, :two])
|
806
801
|
end
|
807
802
|
|
@@ -828,7 +823,7 @@ RSpec.shared_examples "a Celluloid Actor" do
|
|
828
823
|
end
|
829
824
|
|
830
825
|
def eat_donuts
|
831
|
-
sleep
|
826
|
+
sleep Specs::TIMER_QUANTUM
|
832
827
|
@tasks << "donuts"
|
833
828
|
end
|
834
829
|
|
@@ -844,7 +839,7 @@ RSpec.shared_examples "a Celluloid Actor" do
|
|
844
839
|
before do
|
845
840
|
actor.async.eat_donuts
|
846
841
|
actor.async.drink_coffee
|
847
|
-
sleep
|
842
|
+
sleep Specs::TIMER_QUANTUM * 2
|
848
843
|
end
|
849
844
|
|
850
845
|
it "executes in an exclusive order" do
|
@@ -888,7 +883,7 @@ RSpec.shared_examples "a Celluloid Actor" do
|
|
888
883
|
ended_at = Time.now - started_at
|
889
884
|
|
890
885
|
expect(result).to_not be
|
891
|
-
expect(ended_at).to be_within(
|
886
|
+
expect(ended_at).to be_within(Specs::TIMER_QUANTUM).of interval
|
892
887
|
end
|
893
888
|
end
|
894
889
|
end
|
@@ -930,8 +925,8 @@ RSpec.shared_examples "a Celluloid Actor" do
|
|
930
925
|
end.new
|
931
926
|
end
|
932
927
|
|
933
|
-
let(:interval) {
|
934
|
-
let(:sleep_interval) { interval +
|
928
|
+
let(:interval) { Specs::TIMER_QUANTUM * 10 }
|
929
|
+
let(:sleep_interval) { interval + Specs::TIMER_QUANTUM } # wonky! #/
|
935
930
|
|
936
931
|
it "suspends execution of a method (but not the actor) for a given time" do
|
937
932
|
# Sleep long enough to ensure we're actually seeing behavior when asleep
|
@@ -944,7 +939,7 @@ RSpec.shared_examples "a Celluloid Actor" do
|
|
944
939
|
|
945
940
|
future.value
|
946
941
|
# I got 0.558 (in a slighly busy MRI) which is outside 0.05 of 0.5, so let's use (0.05 * 2)
|
947
|
-
expect(Time.now - started_at).to be_within(
|
942
|
+
expect(Time.now - started_at).to be_within(Specs::TIMER_QUANTUM * 2).of interval
|
948
943
|
end
|
949
944
|
|
950
945
|
it "schedules timers which fire in the future" do
|
@@ -1247,7 +1242,7 @@ RSpec.shared_examples "a Celluloid Actor" do
|
|
1247
1242
|
it "logs on unhandled messages" do
|
1248
1243
|
expect(logger).to receive(:debug).with("Discarded message (unhandled): first")
|
1249
1244
|
actor.mailbox << :first
|
1250
|
-
sleep
|
1245
|
+
sleep Specs::TIMER_QUANTUM
|
1251
1246
|
end
|
1252
1247
|
end
|
1253
1248
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,100 +1,7 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "bundler/setup"
|
3
3
|
|
4
|
-
# To help produce better bug reports in Rubinius
|
5
|
-
if RUBY_ENGINE == "rbx"
|
6
|
-
# $DEBUG = true # would be nice if this didn't fail ... :(
|
7
|
-
require "rspec/matchers"
|
8
|
-
require "rspec/matchers/built_in/be"
|
9
|
-
end
|
10
|
-
|
11
|
-
# Require in order, so both CELLULOID_TEST and CELLULOID_DEBUG are true
|
12
4
|
require "celluloid/rspec"
|
13
5
|
require "celluloid/essentials"
|
14
6
|
|
15
|
-
|
16
|
-
|
17
|
-
# Require but disable, so it has to be explicitly enabled in tests
|
18
|
-
require "celluloid/probe"
|
19
|
-
$CELLULOID_MONITORING = false
|
20
|
-
Specs.reset_probe(nil)
|
21
|
-
|
22
|
-
Celluloid.shutdown_timeout = 1
|
23
|
-
|
24
|
-
Dir["./spec/support/*.rb", "./spec/shared/*.rb"].map { |f| require f }
|
25
|
-
|
26
|
-
RSpec.configure do |config|
|
27
|
-
config.filter_run focus: true unless Nenv.ci?
|
28
|
-
|
29
|
-
config.run_all_when_everything_filtered = true
|
30
|
-
config.disable_monkey_patching!
|
31
|
-
config.profile_examples = 3
|
32
|
-
|
33
|
-
Specs.configure(config)
|
34
|
-
|
35
|
-
config.before(:suite) do
|
36
|
-
Specs.stub_out_class_method(Celluloid::Internals::Logger, :crash) do |*args|
|
37
|
-
_name, ex = *args
|
38
|
-
fail "Unstubbed Logger.crash() was called:\n crash(\n #{args.map(&:inspect).join(",\n ")})"\
|
39
|
-
"\nException backtrace: \n (#{ex.class}) #{ex.backtrace * "\n (#{ex.class}) "}"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
config.before(:each) do |example|
|
44
|
-
@fake_logger = Specs::FakeLogger.new(Celluloid.logger, example.description)
|
45
|
-
stub_const("Celluloid::Internals::Logger", @fake_logger)
|
46
|
-
end
|
47
|
-
|
48
|
-
config.around do |ex|
|
49
|
-
ex.run
|
50
|
-
if @fake_logger.crashes?
|
51
|
-
crashes = @fake_logger.crashes.map do |args, call_stack|
|
52
|
-
msg, ex = *args
|
53
|
-
"\n** Crash: #{msg.inspect}(#{ex.inspect})\n Backtrace:\n (crash) #{call_stack * "\n (crash) "}"\
|
54
|
-
"\n** Crash: \"Actor crashed!\"(#{ex.inspect})\n Backtrace:\n (crash) #{call_stack * "\n (crash) "}"\
|
55
|
-
"\n Exception Backtrace (#{ex.inspect}):\n (ex) #{ex.backtrace * "\n (ex) "}"
|
56
|
-
end.join("\n")
|
57
|
-
|
58
|
-
fail "Actor crashes occurred (please stub/mock if these are expected): #{crashes}"
|
59
|
-
end
|
60
|
-
@fake_logger = nil
|
61
|
-
end
|
62
|
-
|
63
|
-
config.around do |ex|
|
64
|
-
Celluloid.actor_system = nil
|
65
|
-
|
66
|
-
Specs.assert_no_loose_threads(ex.description) do
|
67
|
-
Specs.reset_class_variables(ex.description) do
|
68
|
-
ex.run
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
config.around actor_system: :global do |ex|
|
74
|
-
# Needed because some specs mock/stub/expect on the logger
|
75
|
-
Celluloid.logger = Specs.logger
|
76
|
-
|
77
|
-
Celluloid.boot
|
78
|
-
ex.run
|
79
|
-
Celluloid.shutdown
|
80
|
-
end
|
81
|
-
|
82
|
-
config.around actor_system: :within do |ex|
|
83
|
-
Celluloid::Actor::System.new.within do
|
84
|
-
ex.run
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
config.filter_gems_from_backtrace(*%w(rspec-expectations rspec-core rspec-mocks rspec-logsplit rubysl-thread rubysl-timeout))
|
89
|
-
|
90
|
-
config.mock_with :rspec do |mocks|
|
91
|
-
mocks.verify_doubled_constant_names = true
|
92
|
-
mocks.verify_partial_doubles = true
|
93
|
-
end
|
94
|
-
|
95
|
-
config.around(:each) do |example|
|
96
|
-
# Needed because some specs mock/stub/expect on the logger
|
97
|
-
Celluloid.logger = Specs.logger
|
98
|
-
example.run
|
99
|
-
end
|
100
|
-
end
|
7
|
+
Dir[*Specs::INCLUDE_PATHS].map { |f| require f }
|
@@ -0,0 +1,77 @@
|
|
1
|
+
RSpec.configure do |config|
|
2
|
+
config.filter_run focus: true unless Nenv.ci?
|
3
|
+
config.run_all_when_everything_filtered = true
|
4
|
+
config.disable_monkey_patching!
|
5
|
+
config.profile_examples = 3
|
6
|
+
config.filter_gems_from_backtrace(*Specs::BACKTRACE_OMITTED)
|
7
|
+
|
8
|
+
config.verbose_retry = true
|
9
|
+
config.default_retry_count = Specs::ALLOW_RETRIES
|
10
|
+
config.display_try_failure_messages = true
|
11
|
+
config.default_sleep_interval = 1
|
12
|
+
config.exceptions_to_retry = [Timeout::Error, Celluloid::ThreadLeak]
|
13
|
+
|
14
|
+
config.mock_with :rspec do |mocks|
|
15
|
+
mocks.verify_doubled_constant_names = true
|
16
|
+
mocks.verify_partial_doubles = true
|
17
|
+
end
|
18
|
+
|
19
|
+
config.before(:suite) do
|
20
|
+
Specs.stub_out_class_method(Celluloid::Internals::Logger, :crash) do |*args|
|
21
|
+
_name, ex = *args
|
22
|
+
fail "Unstubbed Logger.crash() was called:\n crash(\n #{args.map(&:inspect).join(",\n ")})"\
|
23
|
+
"\nException backtrace: \n (#{ex.class}) #{ex.backtrace * "\n (#{ex.class}) "}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
config.before(:each) do |example|
|
28
|
+
@fake_logger = Specs::FakeLogger.new(Celluloid.logger, example.description)
|
29
|
+
stub_const("Celluloid::Internals::Logger", @fake_logger)
|
30
|
+
end
|
31
|
+
|
32
|
+
config.around do |ex|
|
33
|
+
# Needed because some specs mock/stub/expect on the logger
|
34
|
+
Celluloid.logger = Specs.logger
|
35
|
+
Celluloid.actor_system = nil
|
36
|
+
Specs.reset_class_variables(ex.description) do
|
37
|
+
Timeout.timeout(Specs::MAX_EXECUTION) { ex.run }
|
38
|
+
end
|
39
|
+
if @fake_logger.crashes?
|
40
|
+
crashes = @fake_logger.crashes.map do |args, call_stack|
|
41
|
+
msg, ex = *args
|
42
|
+
"\n** Crash: #{msg.inspect}(#{ex.inspect})\n Backtrace:\n (crash) #{call_stack * "\n (crash) "}"\
|
43
|
+
"\n Exception Backtrace (#{ex.inspect}):\n (ex) #{ex.backtrace * "\n (ex) "}"
|
44
|
+
end.join("\n")
|
45
|
+
fail "Actor crashes occured (please stub/mock if these are expected): #{crashes}"
|
46
|
+
end
|
47
|
+
@fake_logger = nil
|
48
|
+
Specs.assert_no_loose_threads!("after example: #{ex.description}") if Specs::CHECK_LOOSE_THREADS
|
49
|
+
end
|
50
|
+
|
51
|
+
config.around :each, library: :IO do |ex|
|
52
|
+
Celluloid.boot
|
53
|
+
FileUtils.rm("/tmp/cell_sock") if File.exist?("/tmp/cell_sock")
|
54
|
+
ex.run
|
55
|
+
Celluloid.shutdown
|
56
|
+
end
|
57
|
+
|
58
|
+
config.around :each, library: :ZMQ do |ex|
|
59
|
+
Celluloid::ZMQ.init(1) unless ex.metadata[:no_init]
|
60
|
+
Celluloid.boot
|
61
|
+
ex.run
|
62
|
+
Celluloid.shutdown
|
63
|
+
Celluloid::ZMQ.terminate
|
64
|
+
end
|
65
|
+
|
66
|
+
config.around :each, actor_system: :global do |ex|
|
67
|
+
Celluloid.boot
|
68
|
+
ex.run
|
69
|
+
Celluloid.shutdown
|
70
|
+
end
|
71
|
+
|
72
|
+
config.around :each, actor_system: :within do |ex|
|
73
|
+
Celluloid::Actor::System.new.within do
|
74
|
+
ex.run
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/spec/support/env.rb
CHANGED
@@ -1,16 +1,21 @@
|
|
1
1
|
require "nenv"
|
2
2
|
require "dotenv"
|
3
|
-
Dotenv.load!(Nenv("celluloid").config_file || (Nenv.ci? ? ".env-ci" : ".env-dev"))
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
# Default to `pwd`/.env-* ( whatever is in the current directory )
|
5
|
+
# Otherwise take the `.env-*` from the gem itself.
|
6
|
+
unless env = Nenv("celluloid").config_file
|
7
|
+
env = Nenv.ci? ? ".env-ci" : ".env-dev"
|
8
|
+
unless File.exist?(env)
|
9
|
+
env = File.expand_path("../../../#{env}", __FILE__)
|
8
10
|
end
|
11
|
+
end
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
13
|
+
Dotenv.load!(env) rescue nil # If for some reason no .env-* files are available at all, use defaults.
|
14
|
+
|
15
|
+
module Specs
|
16
|
+
class << self
|
17
|
+
def env
|
18
|
+
@env ||= Nenv("celluloid_specs")
|
14
19
|
end
|
15
20
|
end
|
16
21
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class CallExampleActor
|
2
|
+
include Celluloid
|
3
|
+
|
4
|
+
def initialize(next_actor = nil)
|
5
|
+
@next = next_actor
|
6
|
+
end
|
7
|
+
|
8
|
+
def actual_method; end
|
9
|
+
|
10
|
+
def inspect
|
11
|
+
fail "Don't call!"
|
12
|
+
end
|
13
|
+
|
14
|
+
def chained_call_ids
|
15
|
+
[call_chain_id, @next.call_chain_id]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# de DEPRECATE:
|
20
|
+
|
21
|
+
class DeprecatedCallExampleActor
|
22
|
+
include Celluloid
|
23
|
+
|
24
|
+
def initialize(next_actor = nil)
|
25
|
+
@next = next_actor
|
26
|
+
end
|
27
|
+
|
28
|
+
def actual_method; end
|
29
|
+
|
30
|
+
def inspect
|
31
|
+
fail "Please don't call me! I'm not ready yet!"
|
32
|
+
end
|
33
|
+
|
34
|
+
def chained_call_ids
|
35
|
+
[call_chain_id, @next.call_chain_id]
|
36
|
+
end
|
37
|
+
end
|
data/spec/support/includer.rb
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
module CelluloidSpecs
|
2
2
|
def self.included_module
|
3
3
|
# Celluloid::IO implements this with with 'Celluloid::IO'
|
4
|
-
Celluloid
|
4
|
+
(defined? INCLUDED_MODULE) ? INCLUDED_MODULE : Celluloid
|
5
5
|
end
|
6
|
-
|
7
|
-
# Timer accuracy enforced by the tests (50ms)
|
8
|
-
TIMER_QUANTUM = 0.05
|
9
6
|
end
|
data/spec/support/logging.rb
CHANGED
@@ -14,10 +14,6 @@ module Specs
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def split_logs?
|
18
|
-
log.strategy == "split"
|
19
|
-
end
|
20
|
-
|
21
17
|
def logger
|
22
18
|
@logger ||= default_logger.tap { |logger| logger.level = log.level }
|
23
19
|
end
|
@@ -32,13 +28,9 @@ module Specs
|
|
32
28
|
Logger.new(STDERR)
|
33
29
|
when "single"
|
34
30
|
Logger.new(open_logfile(log.file, log.sync?))
|
35
|
-
when "split"
|
36
|
-
# Use Celluloid in case there's logging in a before/after handle
|
37
|
-
# (is that a bug in rspec-log_split?)
|
38
|
-
Celluloid.logger
|
39
31
|
else
|
40
32
|
fail "Unknown logger strategy: #{strategy.inspect}."\
|
41
|
-
" Expected '
|
33
|
+
" Expected 'single' or 'stderr'."
|
42
34
|
end
|
43
35
|
end
|
44
36
|
|
@@ -51,7 +43,7 @@ module Specs
|
|
51
43
|
end
|
52
44
|
|
53
45
|
def default_strategy
|
54
|
-
(Nenv.ci? ? "stderr" : "
|
46
|
+
(Nenv.ci? ? "stderr" : "single")
|
55
47
|
end
|
56
48
|
|
57
49
|
def default_level_for(env, level)
|
@@ -4,6 +4,11 @@ module Specs
|
|
4
4
|
Thread.list.map do |thread|
|
5
5
|
next unless thread
|
6
6
|
next if thread == Thread.current
|
7
|
+
|
8
|
+
# TODO: Remove Specs::ALLOW_SLOW_MAILBOXES hax.
|
9
|
+
# Allows slow shutdown of mailboxes.
|
10
|
+
# Find more graceful way to do shutdown.
|
11
|
+
|
7
12
|
if RUBY_PLATFORM == "java"
|
8
13
|
# Avoid disrupting jRuby's "fiber" threads.
|
9
14
|
name = thread.to_java.getNativeThread.get_name
|
@@ -16,25 +21,31 @@ module Specs
|
|
16
21
|
|
17
22
|
if RUBY_ENGINE == "rbx"
|
18
23
|
# Avoid disrupting Rubinious thread
|
19
|
-
next if thread.backtrace.empty?
|
20
24
|
next if thread.backtrace.first =~ %r{rubysl/timeout/timeout\.rb}
|
25
|
+
|
26
|
+
if Specs::ALLOW_SLOW_MAILBOXES
|
27
|
+
if thread.backtrace.first =~ /wait/
|
28
|
+
next if thread.backtrace[1] =~ /mailbox\.rb/ && thread.backtrace[1] =~ /check/
|
29
|
+
end
|
30
|
+
end
|
21
31
|
end
|
22
32
|
|
23
33
|
if RUBY_ENGINE == "ruby"
|
24
34
|
# Sometimes stays
|
25
|
-
next if thread.backtrace.
|
35
|
+
next if thread.backtrace.nil?
|
36
|
+
next unless thread.backtrace.is_a?(Array)
|
37
|
+
next if thread.backtrace.empty?
|
38
|
+
next if thread.backtrace.first =~ /timeout\.rb/
|
39
|
+
|
40
|
+
if Specs::ALLOW_SLOW_MAILBOXES
|
41
|
+
next if thread.backtrace[1] =~ /mailbox\.rb/ && thread.backtrace[1] =~ /sleep/
|
42
|
+
end
|
26
43
|
end
|
27
44
|
|
28
45
|
thread
|
29
46
|
end.compact
|
30
47
|
end
|
31
48
|
|
32
|
-
def assert_no_loose_threads(location)
|
33
|
-
Specs.assert_no_loose_threads!("before example: #{location}")
|
34
|
-
yield
|
35
|
-
Specs.assert_no_loose_threads!("after example: #{location}")
|
36
|
-
end
|
37
|
-
|
38
49
|
def thread_name(thread)
|
39
50
|
(RUBY_PLATFORM == "java") ? thread.to_java.getNativeThread.get_name : ""
|
40
51
|
end
|
@@ -58,7 +69,7 @@ module Specs
|
|
58
69
|
sleep
|
59
70
|
end
|
60
71
|
|
61
|
-
fail "Aborted due to runaway threads (#{location})\n"\
|
72
|
+
fail Celluloid::ThreadLeak, "Aborted due to runaway threads (#{location})\n"\
|
62
73
|
"List: (#{loose.map(&:inspect)})\n:#{backtraces.join("\n")}"
|
63
74
|
end
|
64
75
|
end
|
@@ -6,7 +6,7 @@ module Specs
|
|
6
6
|
end
|
7
7
|
|
8
8
|
diff = Time.now.to_f - t1
|
9
|
-
STDERR.puts "wait took a bit long: #{diff} seconds" if diff >
|
9
|
+
STDERR.puts "wait took a bit long: #{diff} seconds" if diff > Specs::TIMER_QUANTUM
|
10
10
|
rescue Timeout::Error
|
11
11
|
t2 = Time.now.to_f
|
12
12
|
raise "Timeout after: #{t2 - t1} seconds"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: celluloid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Arcieri
|
@@ -9,16 +9,16 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
15
16
|
version_requirements: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
18
|
- - ">="
|
18
19
|
- !ruby/object:Gem::Version
|
19
20
|
version: '0'
|
20
|
-
|
21
|
-
type: :runtime
|
21
|
+
type: :development
|
22
22
|
prerelease: false
|
23
23
|
requirement: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
@@ -26,13 +26,13 @@ dependencies:
|
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
+
name: nenv
|
29
30
|
version_requirements: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
32
|
- - ">="
|
32
33
|
- !ruby/object:Gem::Version
|
33
34
|
version: '0'
|
34
|
-
|
35
|
-
type: :runtime
|
35
|
+
type: :development
|
36
36
|
prerelease: false
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
@@ -40,13 +40,13 @@ dependencies:
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
+
name: dotenv
|
43
44
|
version_requirements: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
46
|
- - ">="
|
46
47
|
- !ruby/object:Gem::Version
|
47
48
|
version: '0'
|
48
|
-
|
49
|
-
type: :runtime
|
49
|
+
type: :development
|
50
50
|
prerelease: false
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
@@ -54,12 +54,12 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
+
name: benchmark_suite
|
57
58
|
version_requirements: !ruby/object:Gem::Requirement
|
58
59
|
requirements:
|
59
60
|
- - ">="
|
60
61
|
- !ruby/object:Gem::Version
|
61
62
|
version: '0'
|
62
|
-
name: benchmark_suite
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,12 +68,12 @@ dependencies:
|
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
+
name: rubocop
|
71
72
|
version_requirements: !ruby/object:Gem::Requirement
|
72
73
|
requirements:
|
73
74
|
- - ">="
|
74
75
|
- !ruby/object:Gem::Version
|
75
76
|
version: '0'
|
76
|
-
name: rubocop
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,12 +82,12 @@ dependencies:
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
+
name: transpec
|
85
86
|
version_requirements: !ruby/object:Gem::Requirement
|
86
87
|
requirements:
|
87
88
|
- - ">="
|
88
89
|
- !ruby/object:Gem::Version
|
89
90
|
version: '0'
|
90
|
-
name: transpec
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,12 +96,12 @@ dependencies:
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
|
+
name: pry
|
99
100
|
version_requirements: !ruby/object:Gem::Requirement
|
100
101
|
requirements:
|
101
102
|
- - ">="
|
102
103
|
- !ruby/object:Gem::Version
|
103
104
|
version: '0'
|
104
|
-
name: pry
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,12 +110,12 @@ dependencies:
|
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
|
+
name: rake
|
113
114
|
version_requirements: !ruby/object:Gem::Requirement
|
114
115
|
requirements:
|
115
116
|
- - ">="
|
116
117
|
- !ruby/object:Gem::Version
|
117
118
|
version: '0'
|
118
|
-
name: rake
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,12 +124,12 @@ dependencies:
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
+
name: rspec
|
127
128
|
version_requirements: !ruby/object:Gem::Requirement
|
128
129
|
requirements:
|
129
130
|
- - ">="
|
130
131
|
- !ruby/object:Gem::Version
|
131
132
|
version: '0'
|
132
|
-
name: rspec
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,12 +138,12 @@ dependencies:
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
|
+
name: guard-rspec
|
141
142
|
version_requirements: !ruby/object:Gem::Requirement
|
142
143
|
requirements:
|
143
144
|
- - ">="
|
144
145
|
- !ruby/object:Gem::Version
|
145
146
|
version: '0'
|
146
|
-
name: guard-rspec
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,12 +152,12 @@ dependencies:
|
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '0'
|
154
154
|
- !ruby/object:Gem::Dependency
|
155
|
+
name: rspec-retry
|
155
156
|
version_requirements: !ruby/object:Gem::Requirement
|
156
157
|
requirements:
|
157
158
|
- - ">="
|
158
159
|
- !ruby/object:Gem::Version
|
159
160
|
version: '0'
|
160
|
-
name: coveralls
|
161
161
|
type: :development
|
162
162
|
prerelease: false
|
163
163
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,13 +166,13 @@ dependencies:
|
|
166
166
|
- !ruby/object:Gem::Version
|
167
167
|
version: '0'
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
|
+
name: coveralls
|
169
170
|
version_requirements: !ruby/object:Gem::Requirement
|
170
171
|
requirements:
|
171
172
|
- - ">="
|
172
173
|
- !ruby/object:Gem::Version
|
173
174
|
version: '0'
|
174
|
-
|
175
|
-
type: :runtime
|
175
|
+
type: :development
|
176
176
|
prerelease: false
|
177
177
|
requirement: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
@@ -180,12 +180,12 @@ dependencies:
|
|
180
180
|
- !ruby/object:Gem::Version
|
181
181
|
version: '0'
|
182
182
|
- !ruby/object:Gem::Dependency
|
183
|
+
name: celluloid-essentials
|
183
184
|
version_requirements: !ruby/object:Gem::Requirement
|
184
185
|
requirements:
|
185
186
|
- - ">="
|
186
187
|
- !ruby/object:Gem::Version
|
187
188
|
version: '0'
|
188
|
-
name: celluloid-supervision
|
189
189
|
type: :runtime
|
190
190
|
prerelease: false
|
191
191
|
requirement: !ruby/object:Gem::Requirement
|
@@ -194,12 +194,12 @@ dependencies:
|
|
194
194
|
- !ruby/object:Gem::Version
|
195
195
|
version: '0'
|
196
196
|
- !ruby/object:Gem::Dependency
|
197
|
+
name: celluloid-supervision
|
197
198
|
version_requirements: !ruby/object:Gem::Requirement
|
198
199
|
requirements:
|
199
200
|
- - ">="
|
200
201
|
- !ruby/object:Gem::Version
|
201
202
|
version: '0'
|
202
|
-
name: celluloid-pool
|
203
203
|
type: :runtime
|
204
204
|
prerelease: false
|
205
205
|
requirement: !ruby/object:Gem::Requirement
|
@@ -208,12 +208,12 @@ dependencies:
|
|
208
208
|
- !ruby/object:Gem::Version
|
209
209
|
version: '0'
|
210
210
|
- !ruby/object:Gem::Dependency
|
211
|
+
name: celluloid-pool
|
211
212
|
version_requirements: !ruby/object:Gem::Requirement
|
212
213
|
requirements:
|
213
214
|
- - ">="
|
214
215
|
- !ruby/object:Gem::Version
|
215
216
|
version: '0'
|
216
|
-
name: celluloid-fsm
|
217
217
|
type: :runtime
|
218
218
|
prerelease: false
|
219
219
|
requirement: !ruby/object:Gem::Requirement
|
@@ -222,12 +222,12 @@ dependencies:
|
|
222
222
|
- !ruby/object:Gem::Version
|
223
223
|
version: '0'
|
224
224
|
- !ruby/object:Gem::Dependency
|
225
|
+
name: celluloid-fsm
|
225
226
|
version_requirements: !ruby/object:Gem::Requirement
|
226
227
|
requirements:
|
227
228
|
- - ">="
|
228
229
|
- !ruby/object:Gem::Version
|
229
230
|
version: '0'
|
230
|
-
name: celluloid-extras
|
231
231
|
type: :runtime
|
232
232
|
prerelease: false
|
233
233
|
requirement: !ruby/object:Gem::Requirement
|
@@ -236,33 +236,33 @@ dependencies:
|
|
236
236
|
- !ruby/object:Gem::Version
|
237
237
|
version: '0'
|
238
238
|
- !ruby/object:Gem::Dependency
|
239
|
+
name: celluloid-extras
|
239
240
|
version_requirements: !ruby/object:Gem::Requirement
|
240
241
|
requirements:
|
241
242
|
- - ">="
|
242
243
|
- !ruby/object:Gem::Version
|
243
|
-
version:
|
244
|
-
name: timers
|
244
|
+
version: '0'
|
245
245
|
type: :runtime
|
246
246
|
prerelease: false
|
247
247
|
requirement: !ruby/object:Gem::Requirement
|
248
248
|
requirements:
|
249
249
|
- - ">="
|
250
250
|
- !ruby/object:Gem::Version
|
251
|
-
version:
|
251
|
+
version: '0'
|
252
252
|
- !ruby/object:Gem::Dependency
|
253
|
+
name: timers
|
253
254
|
version_requirements: !ruby/object:Gem::Requirement
|
254
255
|
requirements:
|
255
256
|
- - ">="
|
256
257
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
258
|
-
name: rspec-logsplit
|
258
|
+
version: 4.1.1
|
259
259
|
type: :runtime
|
260
260
|
prerelease: false
|
261
261
|
requirement: !ruby/object:Gem::Requirement
|
262
262
|
requirements:
|
263
263
|
- - ">="
|
264
264
|
- !ruby/object:Gem::Version
|
265
|
-
version:
|
265
|
+
version: 4.1.1
|
266
266
|
description: Celluloid enables people to build concurrent programs out of concurrent
|
267
267
|
objects just as easily as they build sequential programs out of sequential objects
|
268
268
|
email:
|
@@ -275,7 +275,7 @@ files:
|
|
275
275
|
- CHANGES.md
|
276
276
|
- LICENSE.txt
|
277
277
|
- README.md
|
278
|
-
- culture/
|
278
|
+
- culture/CONDUCT.md
|
279
279
|
- culture/Gemfile
|
280
280
|
- culture/LICENSE.txt
|
281
281
|
- culture/README.md
|
@@ -288,6 +288,7 @@ files:
|
|
288
288
|
- culture/rubocop/README.md
|
289
289
|
- culture/rubocop/lint.yml
|
290
290
|
- culture/rubocop/metrics.yml
|
291
|
+
- culture/rubocop/perf.yml
|
291
292
|
- culture/rubocop/rubocop.yml
|
292
293
|
- culture/rubocop/style.yml
|
293
294
|
- culture/spec/gems_spec.rb
|
@@ -373,18 +374,19 @@ files:
|
|
373
374
|
- spec/shared/mailbox_examples.rb
|
374
375
|
- spec/shared/task_examples.rb
|
375
376
|
- spec/spec_helper.rb
|
377
|
+
- spec/support/configure_rspec.rb
|
376
378
|
- spec/support/coverage.rb
|
377
379
|
- spec/support/crash_checking.rb
|
378
380
|
- spec/support/debugging.rb
|
379
381
|
- spec/support/env.rb
|
380
382
|
- spec/support/examples/actor_class.rb
|
383
|
+
- spec/support/examples/call_class.rb
|
381
384
|
- spec/support/examples/evented_mailbox_class.rb
|
382
385
|
- spec/support/includer.rb
|
383
386
|
- spec/support/logging.rb
|
384
387
|
- spec/support/loose_threads.rb
|
385
388
|
- spec/support/reset_class_variables.rb
|
386
389
|
- spec/support/sleep_and_wait.rb
|
387
|
-
- spec/support/split_logs.rb
|
388
390
|
- spec/support/stubbing.rb
|
389
391
|
homepage: https://github.com/celluloid/celluloid
|
390
392
|
licenses:
|
@@ -398,7 +400,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
398
400
|
requirements:
|
399
401
|
- - ">="
|
400
402
|
- !ruby/object:Gem::Version
|
401
|
-
version: 1.9.
|
403
|
+
version: 1.9.3
|
402
404
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
403
405
|
requirements:
|
404
406
|
- - ">="
|
data/spec/support/split_logs.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require "rspec/log_split" if Specs.split_logs?
|