beetle 0.3.0.rc.11 → 0.3.0.rc.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 cand find out more about our work on our {dev blog}[http://devblog.xing.com].
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
- namespace :test do
15
- namespace :coverage do
16
- desc "Delete aggregate coverage data."
17
- task(:clean) { rm_f "coverage.data" }
18
- end
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
- desc 'Aggregate code coverage'
21
- task :coverage => "test:coverage:clean"
22
+ desc 'Aggregate code coverage'
23
+ task :coverage => "test:coverage:clean"
22
24
 
23
- Rcov::RcovTask.new(:coverage) do |t|
24
- t.libs << "test"
25
- t.test_files = FileList["test/**/*_test.rb"]
26
- t.output_dir = "test/coverage"
27
- t.verbose = true
28
- t.rcov_opts << "--exclude '.*' --include-file 'lib/beetle/'"
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 'rake/rdoctask'
110
+ require 'rdoc/task'
102
111
 
103
112
  Rake::RDocTask.new do |rdoc|
104
113
  rdoc.rdoc_dir = 'site/rdoc'
@@ -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.8"])
37
- s.add_runtime_dependency("redis", ["= 2.2.2"])
38
- s.add_runtime_dependency("hiredis", ["= 0.4.4"])
39
- s.add_runtime_dependency("amq-client", ["= 0.8.7"])
40
- s.add_runtime_dependency("amq-protocol", ["= 0.8.4"])
41
- s.add_runtime_dependency("amqp", ["= 0.8.4"])
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"])
48
- s.add_development_dependency("cucumber", [">= 0.7.2"])
49
- s.add_development_dependency("daemon_controller", [">= 0"])
50
45
  end
51
46
 
@@ -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
@@ -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
@@ -40,7 +42,7 @@ module Beetle
40
42
  # AMQP options for exchange creation
41
43
  EXCHANGE_CREATION_KEYS = [:auto_delete, :durable, :internal, :nowait, :passive]
42
44
  # AMQP options for queue creation
43
- QUEUE_CREATION_KEYS = [:passive, :durable, :exclusive, :auto_delete, :no_wait]
45
+ QUEUE_CREATION_KEYS = [:passive, :durable, :exclusive, :auto_delete, :no_wait, :arguments]
44
46
  # AMQP options for queue bindings
45
47
  QUEUE_BINDING_KEYS = [:key, :no_wait]
46
48
  # AMQP options for message publishing
@@ -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 ? name : Socket.gethostbyname(parts.first).first
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
@@ -149,9 +149,10 @@ module Beetle
149
149
 
150
150
  # this is a convenience method to configure exchanges, queues, messages and handlers
151
151
  # with a common set of options. allows one to call all register methods without the
152
- # register_ prefix. returns self.
152
+ # register_ prefix. returns self. if the passed in block has no parameters, the block
153
+ # will be evaluated in the context of the client configurator.
153
154
  #
154
- # Example:
155
+ # Example: (block with config argument)
155
156
  # client = Beetle.client.new.configure :exchange => :foobar do |config|
156
157
  # config.queue :q1, :key => "foo"
157
158
  # config.queue :q2, :key => "bar"
@@ -160,8 +161,24 @@ module Beetle
160
161
  # config.handler :q1 { puts "got foo"}
161
162
  # config.handler :q2 { puts "got bar"}
162
163
  # end
163
- def configure(options={}) #:yields: config
164
- yield Configurator.new(self, options)
164
+ #
165
+ # Example: (block without config argument)
166
+ # client = Beetle.client.new.configure :exchange => :foobar do
167
+ # queue :q1, :key => "foo"
168
+ # queue :q2, :key => "bar"
169
+ # message :foo
170
+ # message :bar
171
+ # handler :q1 { puts "got foo"}
172
+ # handler :q2 { puts "got bar"}
173
+ # end
174
+ #
175
+ def configure(options={}, &block)
176
+ configurator = Configurator.new(self, options)
177
+ if block.arity == 1
178
+ yield configurator
179
+ else
180
+ configurator.instance_eval &block
181
+ end
165
182
  self
166
183
  end
167
184
 
@@ -223,18 +240,22 @@ module Beetle
223
240
  end
224
241
 
225
242
  # traces queues without consuming them. useful for debugging message flow.
226
- def trace(queue_names=self.queues.keys, &block)
243
+ def trace(queue_names=self.queues.keys, tracer=nil, &block)
227
244
  queues_to_trace = self.queues.slice(*queue_names)
228
245
  queues_to_trace.each do |name, opts|
229
246
  opts.merge! :durable => false, :auto_delete => true, :amqp_name => queue_name_for_tracing(opts[:amqp_name])
230
247
  end
231
- register_handler(queue_names) do |msg|
232
- puts "-----===== new message =====-----"
233
- puts "SERVER: #{msg.server}"
234
- puts "HEADER: #{msg.header.inspect}"
235
- puts "MSGID: #{msg.msg_id}"
236
- puts "DATA: #{msg.data}"
237
- end
248
+ tracer ||=
249
+ lambda do |msg|
250
+ puts "-----===== new message =====-----"
251
+ puts "SERVER: #{msg.server}"
252
+ puts "HEADER: #{msg.header.attributes[:headers].inspect}"
253
+ puts "EXCHANGE: #{msg.header.method.exchange}"
254
+ puts "KEY: #{msg.header.method.routing_key}"
255
+ puts "MSGID: #{msg.msg_id}"
256
+ puts "DATA: #{msg.data}"
257
+ end
258
+ register_handler(queue_names){|msg| tracer.call msg }
238
259
  listen_queues(queue_names, &block)
239
260
  end
240
261
 
@@ -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 = 0 == @store.msetnx(msg_id, :status =>"incomplete", :expires => @expires_at, :timeout => now + timeout)
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Beetle
2
- VERSION = "0.3.0.rc.11"
2
+ VERSION = "0.3.0.rc.14"
3
3
  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
@@ -151,6 +151,16 @@ module Beetle
151
151
  @client.configure(options) {|config| assert_equal 42, config}
152
152
  end
153
153
 
154
+ test "configure should eval a passed block without arguments in the context of the configurator" do
155
+ options = {:exchange => :foobar}
156
+ m = "mock"
157
+ m.expects(:foo).returns(42)
158
+ Client::Configurator.expects(:new).with(@client, options).returns(m)
159
+ value = nil
160
+ @client.configure(options) { value = foo }
161
+ assert_equal 42, value
162
+ end
163
+
154
164
  test "a configurator should forward all known registration methods to the client" do
155
165
  options = {:foo => :bar}
156
166
  config = Client::Configurator.new(@client, options)
@@ -353,7 +363,7 @@ module Beetle
353
363
  client = Client.new
354
364
  client.register_queue("test")
355
365
  sub = client.send(:subscriber)
356
- sub.expects(:register_handler).with(client.queues.keys, {}, nil).yields(stub_everything("message"))
366
+ sub.expects(:register_handler).with(client.queues.keys, {}, nil).yields(message_stub_for_tracing)
357
367
  sub.expects(:listen_queues)
358
368
  client.stubs(:puts)
359
369
  client.trace
@@ -369,11 +379,19 @@ module Beetle
369
379
  client.register_queue("test")
370
380
  client.register_queue("irrelevant")
371
381
  sub = client.send(:subscriber)
372
- sub.expects(:register_handler).with(["test"], {}, nil).yields(stub_everything("message"))
382
+ sub.expects(:register_handler).with(["test"], {}, nil).yields(message_stub_for_tracing)
373
383
  sub.expects(:listen_queues).with(["test"])
374
384
  client.stubs(:puts)
375
385
  client.trace(["test"])
376
386
  end
377
387
 
388
+ def message_stub_for_tracing
389
+ header_stub = stub_everything("header")
390
+ header_stub.stubs(:method).returns(stub_everything("method"))
391
+ header_stub.stubs(:attributes).returns(stub_everything("attributes"))
392
+ msg_stub = stub_everything("message")
393
+ msg_stub.stubs(:header).returns(header_stub)
394
+ msg_stub
395
+ end
378
396
  end
379
397
  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 0 or 1" do
17
- assert_equal 1, @r.msetnx("a", 1, "b", 2)
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 0, @r.msetnx("a", 3, "b", 4)
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
@@ -224,12 +224,12 @@ module Beetle
224
224
  end
225
225
 
226
226
  test "binding a queue should create it using the config and bind it to the exchange with the name specified" do
227
- @client.register_queue("some_queue", :exchange => "some_exchange", :key => "haha.#")
227
+ @client.register_queue("some_queue", :exchange => "some_exchange", :key => "haha.#", :arguments => {"foo" => "fighter"})
228
228
  @pub.expects(:exchange).with("some_exchange").returns(:the_exchange)
229
229
  q = mock("queue")
230
230
  q.expects(:bind).with(:the_exchange, {:key => "haha.#"})
231
231
  m = mock("Bunny")
232
- m.expects(:queue).with("some_queue", :durable => true, :passive => false, :auto_delete => false, :exclusive => false).returns(q)
232
+ m.expects(:queue).with("some_queue", :durable => true, :passive => false, :auto_delete => false, :exclusive => false, :arguments => {"foo" => "fighter"}).returns(q)
233
233
  @pub.expects(:bunny).returns(m)
234
234
 
235
235
  @pub.send(:queue, "some_queue")
@@ -61,23 +61,14 @@ module Beetle
61
61
  end
62
62
  end
63
63
 
64
- class BrokenRedisShutdownTest < Test::Unit::TestCase
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
- # if this test fails after upgrading redis, we can probably remove
70
- # our custom shutdown method from redis_ext.rb
71
- test "orginal redis shutdown implementation is broken" do
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
 
@@ -128,12 +128,12 @@ module Beetle
128
128
  end
129
129
 
130
130
  test "binding a queue should create it using the config and bind it to the exchange with the name specified" do
131
- @client.register_queue("some_queue", "durable" => true, "exchange" => "some_exchange", "key" => "haha.#")
131
+ @client.register_queue("some_queue", "durable" => true, "exchange" => "some_exchange", "key" => "haha.#", "arguments" => {"schmu" => 5})
132
132
  @sub.expects(:exchange).with("some_exchange").returns(:the_exchange)
133
133
  q = mock("queue")
134
134
  q.expects(:bind).with(:the_exchange, {:key => "haha.#"})
135
135
  m = mock("MQ")
136
- m.expects(:queue).with("some_queue", :durable => true, :passive => false, :auto_delete => false, :exclusive => false).returns(q)
136
+ m.expects(:queue).with("some_queue", :durable => true, :passive => false, :auto_delete => false, :exclusive => false, :arguments => {"schmu" => 5}).returns(q)
137
137
  @sub.expects(:channel).returns(m)
138
138
 
139
139
  @sub.send(:queue, "some_queue")
@@ -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
- begin
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: 15424051
4
+ hash: -3659944352
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
9
  - 0
10
10
  - rc
11
- - 11
12
- version: 0.3.0.rc.11
11
+ - 14
12
+ version: 0.3.0.rc.14
13
13
  platform: ruby
14
14
  authors:
15
15
  - Stefan Kaes
@@ -21,7 +21,7 @@ autorequire:
21
21
  bindir: bin
22
22
  cert_chain: []
23
23
 
24
- date: 2011-12-27 00:00:00 Z
24
+ date: 2012-07-01 00:00:00 Z
25
25
  dependencies:
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: uuid4r
@@ -47,12 +47,12 @@ dependencies:
47
47
  requirements:
48
48
  - - "="
49
49
  - !ruby/object:Gem::Version
50
- hash: 19
50
+ hash: 17
51
51
  segments:
52
52
  - 0
53
53
  - 7
54
- - 8
55
- version: 0.7.8
54
+ - 9
55
+ version: 0.7.9
56
56
  type: :runtime
57
57
  version_requirements: *id002
58
58
  - !ruby/object:Gem::Dependency
@@ -63,12 +63,12 @@ dependencies:
63
63
  requirements:
64
64
  - - "="
65
65
  - !ruby/object:Gem::Version
66
- hash: 3
66
+ hash: 5
67
67
  segments:
68
- - 2
69
- - 2
70
- - 2
71
- version: 2.2.2
68
+ - 3
69
+ - 0
70
+ - 1
71
+ version: 3.0.1
72
72
  type: :runtime
73
73
  version_requirements: *id003
74
74
  - !ruby/object:Gem::Dependency
@@ -79,12 +79,12 @@ dependencies:
79
79
  requirements:
80
80
  - - "="
81
81
  - !ruby/object:Gem::Version
82
- hash: 7
82
+ hash: 5
83
83
  segments:
84
84
  - 0
85
85
  - 4
86
- - 4
87
- version: 0.4.4
86
+ - 5
87
+ version: 0.4.5
88
88
  type: :runtime
89
89
  version_requirements: *id004
90
90
  - !ruby/object:Gem::Dependency
@@ -95,12 +95,12 @@ dependencies:
95
95
  requirements:
96
96
  - - "="
97
97
  - !ruby/object:Gem::Version
98
- hash: 49
98
+ hash: 61
99
99
  segments:
100
100
  - 0
101
- - 8
102
- - 7
103
- version: 0.8.7
101
+ - 9
102
+ - 3
103
+ version: 0.9.3
104
104
  type: :runtime
105
105
  version_requirements: *id005
106
106
  - !ruby/object:Gem::Dependency
@@ -111,12 +111,12 @@ dependencies:
111
111
  requirements:
112
112
  - - "="
113
113
  - !ruby/object:Gem::Version
114
- hash: 55
114
+ hash: 61
115
115
  segments:
116
116
  - 0
117
- - 8
118
- - 4
119
- version: 0.8.4
117
+ - 9
118
+ - 3
119
+ version: 0.9.3
120
120
  type: :runtime
121
121
  version_requirements: *id006
122
122
  - !ruby/object:Gem::Dependency
@@ -130,9 +130,9 @@ dependencies:
130
130
  hash: 55
131
131
  segments:
132
132
  - 0
133
- - 8
134
- - 4
135
- version: 0.8.4
133
+ - 9
134
+ - 6
135
+ version: 0.9.6
136
136
  type: :runtime
137
137
  version_requirements: *id007
138
138
  - !ruby/object:Gem::Dependency
@@ -183,80 +183,6 @@ dependencies:
183
183
  version: 1.0.10
184
184
  type: :runtime
185
185
  version_requirements: *id010
186
- - !ruby/object:Gem::Dependency
187
- name: rake
188
- prerelease: false
189
- requirement: &id011 !ruby/object:Gem::Requirement
190
- none: false
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- hash: 49
195
- segments:
196
- - 0
197
- - 8
198
- - 7
199
- version: 0.8.7
200
- type: :development
201
- version_requirements: *id011
202
- - !ruby/object:Gem::Dependency
203
- name: mocha
204
- prerelease: false
205
- requirement: &id012 !ruby/object:Gem::Requirement
206
- none: false
207
- requirements:
208
- - - ">="
209
- - !ruby/object:Gem::Version
210
- hash: 3
211
- segments:
212
- - 0
213
- version: "0"
214
- type: :development
215
- version_requirements: *id012
216
- - !ruby/object:Gem::Dependency
217
- name: rcov
218
- prerelease: false
219
- requirement: &id013 !ruby/object:Gem::Requirement
220
- none: false
221
- requirements:
222
- - - ">="
223
- - !ruby/object:Gem::Version
224
- hash: 3
225
- segments:
226
- - 0
227
- version: "0"
228
- type: :development
229
- version_requirements: *id013
230
- - !ruby/object:Gem::Dependency
231
- name: cucumber
232
- prerelease: false
233
- requirement: &id014 !ruby/object:Gem::Requirement
234
- none: false
235
- requirements:
236
- - - ">="
237
- - !ruby/object:Gem::Version
238
- hash: 7
239
- segments:
240
- - 0
241
- - 7
242
- - 2
243
- version: 0.7.2
244
- type: :development
245
- version_requirements: *id014
246
- - !ruby/object:Gem::Dependency
247
- name: daemon_controller
248
- prerelease: false
249
- requirement: &id015 !ruby/object:Gem::Requirement
250
- none: false
251
- requirements:
252
- - - ">="
253
- - !ruby/object:Gem::Version
254
- hash: 3
255
- segments:
256
- - 0
257
- version: "0"
258
- type: :development
259
- version_requirements: *id015
260
186
  description: A highly available, reliable messaging infrastructure
261
187
  email: opensource@xing.com
262
188
  executables:
@@ -324,6 +250,7 @@ files:
324
250
  - MIT-LICENSE
325
251
  - test/beetle/amqp_gem_behavior_test.rb
326
252
  - test/beetle/base_test.rb
253
+ - test/beetle/beetle_test.rb
327
254
  - test/beetle/client_test.rb
328
255
  - test/beetle/configuration_test.rb
329
256
  - test/beetle/deduplication_store_test.rb
@@ -371,13 +298,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
371
298
  requirements: []
372
299
 
373
300
  rubyforge_project:
374
- rubygems_version: 1.8.10
301
+ rubygems_version: 1.8.24
375
302
  signing_key:
376
303
  specification_version: 3
377
304
  summary: High Availability AMQP Messaging with Redundant Queues
378
305
  test_files:
379
306
  - test/beetle/amqp_gem_behavior_test.rb
380
307
  - test/beetle/base_test.rb
308
+ - test/beetle/beetle_test.rb
381
309
  - test/beetle/client_test.rb
382
310
  - test/beetle/configuration_test.rb
383
311
  - test/beetle/deduplication_store_test.rb