beetle 0.3.0.rc.13 → 0.3.0.rc.14
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.
- data/README.rdoc +1 -1
- data/Rakefile +27 -18
- data/beetle.gemspec +6 -11
- data/examples/simple.rb +1 -3
- data/lib/beetle/message.rb +1 -1
- data/lib/beetle/redis_ext.rb +0 -24
- data/lib/beetle/version.rb +1 -1
- data/lib/beetle.rb +9 -1
- data/test/beetle/beetle_test.rb +16 -0
- data/test/beetle/configuration_test.rb +6 -0
- data/test/beetle/deduplication_store_test.rb +3 -3
- data/test/beetle/redis_ext_test.rb +4 -13
- data/test/test_helper.rb +7 -8
- metadata +28 -104
data/README.rdoc
CHANGED
|
@@ -85,7 +85,7 @@ For development, you'll need
|
|
|
85
85
|
{Ali Jelveh}[http://github.com/dudemeister] and
|
|
86
86
|
{Sebastian Roebke}[http://github.com/boosty].
|
|
87
87
|
|
|
88
|
-
You
|
|
88
|
+
You can find out more about our work on our {dev blog}[http://devblog.xing.com].
|
|
89
89
|
|
|
90
90
|
Copyright (c) 2010 {XING AG}[http://www.xing.com/]
|
|
91
91
|
|
data/Rakefile
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require 'rake'
|
|
2
2
|
require 'rake/testtask'
|
|
3
|
-
require 'rcov/rcovtask'
|
|
4
3
|
require 'bundler/gem_tasks'
|
|
5
4
|
|
|
6
5
|
# rake 0.9.2 hack to supress deprecation warnings caused by cucumber
|
|
@@ -11,25 +10,35 @@ require 'cucumber/rake/task'
|
|
|
11
10
|
$:.unshift 'lib'
|
|
12
11
|
require 'beetle'
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
if RUBY_VERSION < "1.9"
|
|
14
|
+
require 'rcov/rcovtask'
|
|
15
|
+
|
|
16
|
+
namespace :test do
|
|
17
|
+
namespace :coverage do
|
|
18
|
+
desc "Delete aggregate coverage data."
|
|
19
|
+
task(:clean) { rm_f "coverage.data" }
|
|
20
|
+
end
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
desc 'Aggregate code coverage'
|
|
23
|
+
task :coverage => "test:coverage:clean"
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
Rcov::RcovTask.new(:coverage) do |t|
|
|
26
|
+
t.libs << "test"
|
|
27
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
|
28
|
+
t.output_dir = "test/coverage"
|
|
29
|
+
t.verbose = true
|
|
30
|
+
t.rcov_opts << "--exclude '.*' --include-file 'lib/beetle/'"
|
|
31
|
+
end
|
|
32
|
+
task :coverage do
|
|
33
|
+
system 'open test/coverage/index.html'
|
|
34
|
+
end if RUBY_PLATFORM =~ /darwin/
|
|
35
|
+
end
|
|
36
|
+
else
|
|
37
|
+
namespace :test do
|
|
38
|
+
task :coverage => :test do
|
|
39
|
+
system 'open coverage/index.html'
|
|
40
|
+
end
|
|
29
41
|
end
|
|
30
|
-
task :coverage do
|
|
31
|
-
system 'open test/coverage/index.html'
|
|
32
|
-
end if RUBY_PLATFORM =~ /darwin/
|
|
33
42
|
end
|
|
34
43
|
|
|
35
44
|
namespace :beetle do
|
|
@@ -98,7 +107,7 @@ Rake::TestTask.new do |t|
|
|
|
98
107
|
t.verbose = true
|
|
99
108
|
end
|
|
100
109
|
|
|
101
|
-
require '
|
|
110
|
+
require 'rdoc/task'
|
|
102
111
|
|
|
103
112
|
Rake::RDocTask.new do |rdoc|
|
|
104
113
|
rdoc.rdoc_dir = 'site/rdoc'
|
data/beetle.gemspec
CHANGED
|
@@ -33,19 +33,14 @@ Gem::Specification.new do |s|
|
|
|
33
33
|
|
|
34
34
|
s.specification_version = 3
|
|
35
35
|
s.add_runtime_dependency("uuid4r", [">= 0.1.2"])
|
|
36
|
-
s.add_runtime_dependency("bunny", ["= 0.7.
|
|
37
|
-
s.add_runtime_dependency("redis", ["=
|
|
38
|
-
s.add_runtime_dependency("hiredis", ["= 0.4.
|
|
39
|
-
s.add_runtime_dependency("amq-client", ["= 0.9.
|
|
40
|
-
s.add_runtime_dependency("amq-protocol", ["= 0.9.
|
|
41
|
-
s.add_runtime_dependency("amqp", ["= 0.9.
|
|
36
|
+
s.add_runtime_dependency("bunny", ["= 0.7.9"])
|
|
37
|
+
s.add_runtime_dependency("redis", ["= 3.0.1"])
|
|
38
|
+
s.add_runtime_dependency("hiredis", ["= 0.4.5"])
|
|
39
|
+
s.add_runtime_dependency("amq-client", ["= 0.9.3"])
|
|
40
|
+
s.add_runtime_dependency("amq-protocol", ["= 0.9.3"])
|
|
41
|
+
s.add_runtime_dependency("amqp", ["= 0.9.6"])
|
|
42
42
|
s.add_runtime_dependency("activesupport", [">= 2.3.4"])
|
|
43
43
|
s.add_runtime_dependency("eventmachine_httpserver", [">= 0.2.1"])
|
|
44
44
|
s.add_runtime_dependency("daemons", [">= 1.0.10"])
|
|
45
|
-
s.add_development_dependency("rake", [">= 0.8.7"])
|
|
46
|
-
s.add_development_dependency("mocha", [">= 0"])
|
|
47
|
-
s.add_development_dependency("rcov", ["~> 0.9.10"])
|
|
48
|
-
s.add_development_dependency("cucumber", [">= 0.7.2"])
|
|
49
|
-
s.add_development_dependency("daemon_controller", [">= 0"])
|
|
50
45
|
end
|
|
51
46
|
|
data/examples/simple.rb
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# simple.rb
|
|
2
2
|
# this example shows you a very basic message/handler setup
|
|
3
3
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
4
|
# ! check the examples/README.rdoc for information on starting your redis/rabbit !
|
|
7
5
|
#
|
|
8
6
|
# start it with ruby simple.rb
|
|
@@ -15,7 +13,7 @@ Beetle.config.logger.level = Logger::INFO
|
|
|
15
13
|
|
|
16
14
|
# setup client
|
|
17
15
|
client = Beetle::Client.new
|
|
18
|
-
client.register_queue(:test
|
|
16
|
+
client.register_queue(:test)
|
|
19
17
|
client.register_message(:test)
|
|
20
18
|
|
|
21
19
|
# purge the test queue
|
data/lib/beetle/message.rb
CHANGED
|
@@ -199,7 +199,7 @@ module Beetle
|
|
|
199
199
|
# have we already seen this message? if not, set the status to "incomplete" and store
|
|
200
200
|
# the message exipration timestamp in the deduplication store.
|
|
201
201
|
def key_exists?
|
|
202
|
-
old_message =
|
|
202
|
+
old_message = !@store.msetnx(msg_id, :status =>"incomplete", :expires => @expires_at, :timeout => now + timeout)
|
|
203
203
|
if old_message
|
|
204
204
|
logger.debug "Beetle: received duplicate message: #{msg_id} on queue: #{@queue}"
|
|
205
205
|
end
|
data/lib/beetle/redis_ext.rb
CHANGED
|
@@ -19,11 +19,6 @@ class Redis #:nodoc:
|
|
|
19
19
|
slaveof(host, port)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
# Redis 2 tries to establish a connection on inspect. this is evil!
|
|
23
|
-
def inspect
|
|
24
|
-
super
|
|
25
|
-
end
|
|
26
|
-
|
|
27
22
|
def info_with_rescue
|
|
28
23
|
info
|
|
29
24
|
rescue Exception
|
|
@@ -51,23 +46,4 @@ class Redis #:nodoc:
|
|
|
51
46
|
info["role"] == "slave" && info["master_host"] == host && info["master_port"] == port.to_s
|
|
52
47
|
end
|
|
53
48
|
|
|
54
|
-
# redis 2.2.2 shutdown implementation does not disconnect from the redis server.
|
|
55
|
-
# this leaves the connection in an inconsistent state and causes the next command to silently fail.
|
|
56
|
-
# this in turn breaks our cucumber test scenarios.
|
|
57
|
-
# fix this here, until a new version is released which fixes the problem.
|
|
58
|
-
|
|
59
|
-
alias_method :broken_shutdown, :shutdown
|
|
60
|
-
|
|
61
|
-
# Synchronously save the dataset to disk and then shut down the server.
|
|
62
|
-
def shutdown
|
|
63
|
-
synchronize do
|
|
64
|
-
begin
|
|
65
|
-
@client.call [:shutdown]
|
|
66
|
-
rescue Errno::ECONNREFUSED
|
|
67
|
-
ensure
|
|
68
|
-
@client.disconnect
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
49
|
end
|
data/lib/beetle/version.rb
CHANGED
data/lib/beetle.rb
CHANGED
|
@@ -10,6 +10,7 @@ require 'socket'
|
|
|
10
10
|
require 'beetle/version'
|
|
11
11
|
|
|
12
12
|
module Beetle
|
|
13
|
+
#:nocov:
|
|
13
14
|
Timer = if RUBY_VERSION < "1.9"
|
|
14
15
|
begin
|
|
15
16
|
require 'system_timer'
|
|
@@ -23,6 +24,7 @@ module Beetle
|
|
|
23
24
|
require 'timeout'
|
|
24
25
|
Timeout
|
|
25
26
|
end
|
|
27
|
+
#:nocov:
|
|
26
28
|
|
|
27
29
|
# abstract superclass for Beetle specific exceptions
|
|
28
30
|
class Error < StandardError; end
|
|
@@ -52,7 +54,11 @@ module Beetle
|
|
|
52
54
|
def self.hostname
|
|
53
55
|
name = Socket.gethostname
|
|
54
56
|
parts = name.split('.')
|
|
55
|
-
parts.size > 1
|
|
57
|
+
if parts.size > 1
|
|
58
|
+
name
|
|
59
|
+
else
|
|
60
|
+
Socket.gethostbyname(parts.first).first rescue name
|
|
61
|
+
end
|
|
56
62
|
end
|
|
57
63
|
|
|
58
64
|
# use ruby's autoload mechanism for loading beetle classes
|
|
@@ -76,7 +82,9 @@ module Beetle
|
|
|
76
82
|
raise if $!.is_a?(Mocha::ExpectationError)
|
|
77
83
|
end
|
|
78
84
|
else
|
|
85
|
+
#:nocov:
|
|
79
86
|
def self.reraise_expectation_errors! #:nodoc:
|
|
80
87
|
end
|
|
88
|
+
#:nocov:
|
|
81
89
|
end
|
|
82
90
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
|
2
|
+
|
|
3
|
+
module Beetle
|
|
4
|
+
class HostnameTest < Test::Unit::TestCase
|
|
5
|
+
test "should use Socket.gethostname if returned name name is fully qualified" do
|
|
6
|
+
Socket.expects(:gethostname).returns("a.b.com")
|
|
7
|
+
assert_equal "a.b.com", Beetle.hostname
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "should use Socket.gethosbyname if returned name name is not fully qualified" do
|
|
11
|
+
Socket.expects(:gethostname).returns("a")
|
|
12
|
+
Socket.expects(:gethostbyname).with("a").returns(["a.b.com"])
|
|
13
|
+
assert_equal "a.b.com", Beetle.hostname
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -13,6 +13,12 @@ module Beetle
|
|
|
13
13
|
assert_equal new_value, config.gc_threshold
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
+
test "should log an error if the specified file does not exist" do
|
|
17
|
+
config = Configuration.new
|
|
18
|
+
config.logger.expects(:error)
|
|
19
|
+
assert_raises(Errno::ENOENT){ config.config_file = "some/path/to/a/file" }
|
|
20
|
+
end
|
|
21
|
+
|
|
16
22
|
test "should log to STDOUT if no log_file given" do
|
|
17
23
|
config = Configuration.new
|
|
18
24
|
Logger.expects(:new).with(STDOUT).returns(stub_everything)
|
|
@@ -13,11 +13,11 @@ module Beetle
|
|
|
13
13
|
assert_equal 0, @r.del("hahahaha")
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
test "msetnx returns
|
|
17
|
-
assert_equal
|
|
16
|
+
test "msetnx returns a boolean" do
|
|
17
|
+
assert_equal true, @r.msetnx("a", 1, "b", 2)
|
|
18
18
|
assert_equal "1", @r.get("a")
|
|
19
19
|
assert_equal "2", @r.get("b")
|
|
20
|
-
assert_equal
|
|
20
|
+
assert_equal false, @r.msetnx("a", 3, "b", 4)
|
|
21
21
|
assert_equal "1", @r.get("a")
|
|
22
22
|
assert_equal "2", @r.get("b")
|
|
23
23
|
end
|
|
@@ -61,23 +61,14 @@ module Beetle
|
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
class
|
|
64
|
+
class RedisShutdownTest < Test::Unit::TestCase
|
|
65
65
|
def setup
|
|
66
66
|
@r = Redis.new(:host => "localhost", :port => 6390)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
@r.client.expects(:call_without_reply).with([:shutdown]).once
|
|
73
|
-
@r.client.expects(:disconnect).never
|
|
74
|
-
@r.broken_shutdown
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
test "patched redis shutdown implementation should call :shutdown and rescue Errno::ECONNREFUSED" do
|
|
78
|
-
@r.client.expects(:call).with([:shutdown]).once.raises(Errno::ECONNREFUSED)
|
|
79
|
-
@r.client.expects(:disconnect).once
|
|
80
|
-
@r.shutdown
|
|
69
|
+
test "redis shutdown implementation should call :shutdown and return nil" do
|
|
70
|
+
@r.client.expects(:call).with([:shutdown]).once.raises(Redis::ConnectionError)
|
|
71
|
+
assert_nil @r.shutdown
|
|
81
72
|
end
|
|
82
73
|
end
|
|
83
74
|
|
data/test/test_helper.rb
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
require 'rubygems'
|
|
2
|
+
if RUBY_VERSION >= "1.9"
|
|
3
|
+
require 'simplecov'
|
|
4
|
+
SimpleCov.start do
|
|
5
|
+
add_filter "/test/"
|
|
6
|
+
end
|
|
7
|
+
end
|
|
2
8
|
require 'test/unit'
|
|
3
9
|
require 'mocha'
|
|
4
10
|
require 'active_support/testing/declarative'
|
|
@@ -7,14 +13,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../lib/beetle')
|
|
|
7
13
|
require File.expand_path(File.dirname(__FILE__) + '/colorized_test_output')
|
|
8
14
|
|
|
9
15
|
# we can remove this hack which is needed only for testing
|
|
10
|
-
|
|
11
|
-
require 'qrack/errors'
|
|
12
|
-
rescue LoadError
|
|
13
|
-
module Qrack
|
|
14
|
-
class BufferOverflowError < StandardError; end
|
|
15
|
-
class InvalidTypeError < StandardError; end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
16
|
+
require 'qrack/errors'
|
|
18
17
|
|
|
19
18
|
|
|
20
19
|
class Test::Unit::TestCase
|
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: beetle
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: -3659944352
|
|
5
|
+
prerelease: 6
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 3
|
|
9
9
|
- 0
|
|
10
10
|
- rc
|
|
11
|
-
-
|
|
12
|
-
version: 0.3.0.rc.
|
|
11
|
+
- 14
|
|
12
|
+
version: 0.3.0.rc.14
|
|
13
13
|
platform: ruby
|
|
14
14
|
authors:
|
|
15
15
|
- Stefan Kaes
|
|
@@ -21,8 +21,7 @@ autorequire:
|
|
|
21
21
|
bindir: bin
|
|
22
22
|
cert_chain: []
|
|
23
23
|
|
|
24
|
-
date: 2012-
|
|
25
|
-
default_executable: beetle
|
|
24
|
+
date: 2012-07-01 00:00:00 Z
|
|
26
25
|
dependencies:
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: uuid4r
|
|
@@ -48,12 +47,12 @@ dependencies:
|
|
|
48
47
|
requirements:
|
|
49
48
|
- - "="
|
|
50
49
|
- !ruby/object:Gem::Version
|
|
51
|
-
hash:
|
|
50
|
+
hash: 17
|
|
52
51
|
segments:
|
|
53
52
|
- 0
|
|
54
53
|
- 7
|
|
55
|
-
-
|
|
56
|
-
version: 0.7.
|
|
54
|
+
- 9
|
|
55
|
+
version: 0.7.9
|
|
57
56
|
type: :runtime
|
|
58
57
|
version_requirements: *id002
|
|
59
58
|
- !ruby/object:Gem::Dependency
|
|
@@ -64,12 +63,12 @@ dependencies:
|
|
|
64
63
|
requirements:
|
|
65
64
|
- - "="
|
|
66
65
|
- !ruby/object:Gem::Version
|
|
67
|
-
hash:
|
|
66
|
+
hash: 5
|
|
68
67
|
segments:
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
version:
|
|
68
|
+
- 3
|
|
69
|
+
- 0
|
|
70
|
+
- 1
|
|
71
|
+
version: 3.0.1
|
|
73
72
|
type: :runtime
|
|
74
73
|
version_requirements: *id003
|
|
75
74
|
- !ruby/object:Gem::Dependency
|
|
@@ -80,12 +79,12 @@ dependencies:
|
|
|
80
79
|
requirements:
|
|
81
80
|
- - "="
|
|
82
81
|
- !ruby/object:Gem::Version
|
|
83
|
-
hash:
|
|
82
|
+
hash: 5
|
|
84
83
|
segments:
|
|
85
84
|
- 0
|
|
86
85
|
- 4
|
|
87
|
-
-
|
|
88
|
-
version: 0.4.
|
|
86
|
+
- 5
|
|
87
|
+
version: 0.4.5
|
|
89
88
|
type: :runtime
|
|
90
89
|
version_requirements: *id004
|
|
91
90
|
- !ruby/object:Gem::Dependency
|
|
@@ -96,12 +95,12 @@ dependencies:
|
|
|
96
95
|
requirements:
|
|
97
96
|
- - "="
|
|
98
97
|
- !ruby/object:Gem::Version
|
|
99
|
-
hash:
|
|
98
|
+
hash: 61
|
|
100
99
|
segments:
|
|
101
100
|
- 0
|
|
102
101
|
- 9
|
|
103
|
-
-
|
|
104
|
-
version: 0.9.
|
|
102
|
+
- 3
|
|
103
|
+
version: 0.9.3
|
|
105
104
|
type: :runtime
|
|
106
105
|
version_requirements: *id005
|
|
107
106
|
- !ruby/object:Gem::Dependency
|
|
@@ -112,12 +111,12 @@ dependencies:
|
|
|
112
111
|
requirements:
|
|
113
112
|
- - "="
|
|
114
113
|
- !ruby/object:Gem::Version
|
|
115
|
-
hash:
|
|
114
|
+
hash: 61
|
|
116
115
|
segments:
|
|
117
116
|
- 0
|
|
118
117
|
- 9
|
|
119
|
-
-
|
|
120
|
-
version: 0.9.
|
|
118
|
+
- 3
|
|
119
|
+
version: 0.9.3
|
|
121
120
|
type: :runtime
|
|
122
121
|
version_requirements: *id006
|
|
123
122
|
- !ruby/object:Gem::Dependency
|
|
@@ -128,12 +127,12 @@ dependencies:
|
|
|
128
127
|
requirements:
|
|
129
128
|
- - "="
|
|
130
129
|
- !ruby/object:Gem::Version
|
|
131
|
-
hash:
|
|
130
|
+
hash: 55
|
|
132
131
|
segments:
|
|
133
132
|
- 0
|
|
134
133
|
- 9
|
|
135
|
-
-
|
|
136
|
-
version: 0.9.
|
|
134
|
+
- 6
|
|
135
|
+
version: 0.9.6
|
|
137
136
|
type: :runtime
|
|
138
137
|
version_requirements: *id007
|
|
139
138
|
- !ruby/object:Gem::Dependency
|
|
@@ -184,82 +183,6 @@ dependencies:
|
|
|
184
183
|
version: 1.0.10
|
|
185
184
|
type: :runtime
|
|
186
185
|
version_requirements: *id010
|
|
187
|
-
- !ruby/object:Gem::Dependency
|
|
188
|
-
name: rake
|
|
189
|
-
prerelease: false
|
|
190
|
-
requirement: &id011 !ruby/object:Gem::Requirement
|
|
191
|
-
none: false
|
|
192
|
-
requirements:
|
|
193
|
-
- - ">="
|
|
194
|
-
- !ruby/object:Gem::Version
|
|
195
|
-
hash: 49
|
|
196
|
-
segments:
|
|
197
|
-
- 0
|
|
198
|
-
- 8
|
|
199
|
-
- 7
|
|
200
|
-
version: 0.8.7
|
|
201
|
-
type: :development
|
|
202
|
-
version_requirements: *id011
|
|
203
|
-
- !ruby/object:Gem::Dependency
|
|
204
|
-
name: mocha
|
|
205
|
-
prerelease: false
|
|
206
|
-
requirement: &id012 !ruby/object:Gem::Requirement
|
|
207
|
-
none: false
|
|
208
|
-
requirements:
|
|
209
|
-
- - ">="
|
|
210
|
-
- !ruby/object:Gem::Version
|
|
211
|
-
hash: 3
|
|
212
|
-
segments:
|
|
213
|
-
- 0
|
|
214
|
-
version: "0"
|
|
215
|
-
type: :development
|
|
216
|
-
version_requirements: *id012
|
|
217
|
-
- !ruby/object:Gem::Dependency
|
|
218
|
-
name: rcov
|
|
219
|
-
prerelease: false
|
|
220
|
-
requirement: &id013 !ruby/object:Gem::Requirement
|
|
221
|
-
none: false
|
|
222
|
-
requirements:
|
|
223
|
-
- - ~>
|
|
224
|
-
- !ruby/object:Gem::Version
|
|
225
|
-
hash: 47
|
|
226
|
-
segments:
|
|
227
|
-
- 0
|
|
228
|
-
- 9
|
|
229
|
-
- 10
|
|
230
|
-
version: 0.9.10
|
|
231
|
-
type: :development
|
|
232
|
-
version_requirements: *id013
|
|
233
|
-
- !ruby/object:Gem::Dependency
|
|
234
|
-
name: cucumber
|
|
235
|
-
prerelease: false
|
|
236
|
-
requirement: &id014 !ruby/object:Gem::Requirement
|
|
237
|
-
none: false
|
|
238
|
-
requirements:
|
|
239
|
-
- - ">="
|
|
240
|
-
- !ruby/object:Gem::Version
|
|
241
|
-
hash: 7
|
|
242
|
-
segments:
|
|
243
|
-
- 0
|
|
244
|
-
- 7
|
|
245
|
-
- 2
|
|
246
|
-
version: 0.7.2
|
|
247
|
-
type: :development
|
|
248
|
-
version_requirements: *id014
|
|
249
|
-
- !ruby/object:Gem::Dependency
|
|
250
|
-
name: daemon_controller
|
|
251
|
-
prerelease: false
|
|
252
|
-
requirement: &id015 !ruby/object:Gem::Requirement
|
|
253
|
-
none: false
|
|
254
|
-
requirements:
|
|
255
|
-
- - ">="
|
|
256
|
-
- !ruby/object:Gem::Version
|
|
257
|
-
hash: 3
|
|
258
|
-
segments:
|
|
259
|
-
- 0
|
|
260
|
-
version: "0"
|
|
261
|
-
type: :development
|
|
262
|
-
version_requirements: *id015
|
|
263
186
|
description: A highly available, reliable messaging infrastructure
|
|
264
187
|
email: opensource@xing.com
|
|
265
188
|
executables:
|
|
@@ -327,6 +250,7 @@ files:
|
|
|
327
250
|
- MIT-LICENSE
|
|
328
251
|
- test/beetle/amqp_gem_behavior_test.rb
|
|
329
252
|
- test/beetle/base_test.rb
|
|
253
|
+
- test/beetle/beetle_test.rb
|
|
330
254
|
- test/beetle/client_test.rb
|
|
331
255
|
- test/beetle/configuration_test.rb
|
|
332
256
|
- test/beetle/deduplication_store_test.rb
|
|
@@ -343,7 +267,6 @@ files:
|
|
|
343
267
|
- test/colorized_test_output.rb
|
|
344
268
|
- test/test_helper.rb
|
|
345
269
|
- bin/beetle
|
|
346
|
-
has_rdoc: true
|
|
347
270
|
homepage: http://xing.github.com/beetle/
|
|
348
271
|
licenses: []
|
|
349
272
|
|
|
@@ -375,13 +298,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
375
298
|
requirements: []
|
|
376
299
|
|
|
377
300
|
rubyforge_project:
|
|
378
|
-
rubygems_version: 1.
|
|
301
|
+
rubygems_version: 1.8.24
|
|
379
302
|
signing_key:
|
|
380
303
|
specification_version: 3
|
|
381
304
|
summary: High Availability AMQP Messaging with Redundant Queues
|
|
382
305
|
test_files:
|
|
383
306
|
- test/beetle/amqp_gem_behavior_test.rb
|
|
384
307
|
- test/beetle/base_test.rb
|
|
308
|
+
- test/beetle/beetle_test.rb
|
|
385
309
|
- test/beetle/client_test.rb
|
|
386
310
|
- test/beetle/configuration_test.rb
|
|
387
311
|
- test/beetle/deduplication_store_test.rb
|