beetle 0.3.0.rc.9 → 0.3.0.rc.12

Sign up to get free protection for your applications and to get access to all the features.
data/RELEASE_NOTES.rdoc CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  == Version 0.3.0
4
4
 
5
+ * redis master file contents now correctly reflects the state of the running configuration server
5
6
  * allow accelerating master switch via POST to redis configuration server
6
7
  * embedded http server into the redis configuration server (port 8080)
7
8
  * fixed a problem with redis shutdown command
data/beetle.gemspec CHANGED
@@ -35,16 +35,16 @@ Gem::Specification.new do |s|
35
35
  s.add_runtime_dependency("uuid4r", [">= 0.1.2"])
36
36
  s.add_runtime_dependency("bunny", ["= 0.7.8"])
37
37
  s.add_runtime_dependency("redis", ["= 2.2.2"])
38
- s.add_runtime_dependency("hiredis", ["= 0.3.2"])
39
- s.add_runtime_dependency("amq-client", ["= 0.8.5"])
40
- s.add_runtime_dependency("amq-protocol", ["= 0.8.3"])
41
- s.add_runtime_dependency("amqp", ["= 0.8.2"])
38
+ s.add_runtime_dependency("hiredis", ["= 0.4.4"])
39
+ s.add_runtime_dependency("amq-client", ["= 0.9.1"])
40
+ s.add_runtime_dependency("amq-protocol", ["= 0.9.0"])
41
+ s.add_runtime_dependency("amqp", ["= 0.9.2"])
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
45
  s.add_development_dependency("rake", [">= 0.8.7"])
46
46
  s.add_development_dependency("mocha", [">= 0"])
47
- s.add_development_dependency("rcov", [">= 0"])
47
+ s.add_development_dependency("rcov", ["~> 0.9.10"])
48
48
  s.add_development_dependency("cucumber", [">= 0.7.2"])
49
49
  s.add_development_dependency("daemon_controller", [">= 0"])
50
50
  end
@@ -15,6 +15,7 @@ Feature: Redis auto failover
15
15
  And the retry timeout for the redis master check is reached
16
16
  Then a system notification for "redis-1" not being available should be sent
17
17
  And the role of redis server "redis-2" should be "master"
18
+ And the redis master file of the redis configuration server should contain "redis-2"
18
19
  And the redis master of "rc-client-1" should be "redis-2"
19
20
  And the redis master of "rc-client-2" should be "redis-2"
20
21
  And the redis master of the beetle handler should be "redis-2"
@@ -95,6 +95,12 @@ Then /^the redis master of "([^\"]*)" should be "([^\"]*)"$/ do |redis_configura
95
95
  assert master, "#{redis_name} is not master of #{redis_configuration_client_name}, master file content: #{server_info.inspect}"
96
96
  end
97
97
 
98
+ Then /^the redis master file of the redis configuration server should contain "([^"]*)"$/ do |redis_name| # " for emacs :(
99
+ master_file = TestDaemons::RedisConfigurationServer.redis_master_file
100
+ file_contents = File.read(master_file).chomp
101
+ assert_equal TestDaemons::Redis[redis_name].ip_with_port, file_contents
102
+ end
103
+
98
104
  Then /^the redis master of "([^\"]*)" should be undefined$/ do |redis_configuration_client_name|
99
105
  master_file = redis_master_file(redis_configuration_client_name)
100
106
  empty = false
@@ -83,7 +83,7 @@ module Beetle
83
83
  # called when handler execution raised an exception and no error callback was
84
84
  # specified when the handler instance was created
85
85
  def error(exception)
86
- logger.error "Beetle: handler execution raised an exception: #{exception}"
86
+ logger.error "Beetle: handler execution raised an exception: #{exception.class}(#{exception.message})"
87
87
  end
88
88
 
89
89
  # called when message processing has finally failed (i.e., the number of allowed
@@ -279,6 +279,7 @@ module Beetle
279
279
  beetle.publish(:system_notification, {"message" => msg}.to_json)
280
280
 
281
281
  new_master.master!
282
+ write_redis_master_file(new_master.server)
282
283
  @current_master = new_master
283
284
  else
284
285
  msg = "Redis master could not be switched, no slave available to become new master, promoting old master"
@@ -1,3 +1,3 @@
1
1
  module Beetle
2
- VERSION = "0.3.0.rc.9"
2
+ VERSION = "0.3.0.rc.12"
3
3
  end
@@ -80,7 +80,7 @@ module Beetle
80
80
  test "default implementation of error and process and failure and completed should not crash" do
81
81
  handler = Handler.create(lambda {})
82
82
  handler.process
83
- handler.error('barfoo')
83
+ handler.error(StandardError.new('barfoo'))
84
84
  handler.failure('razzmatazz')
85
85
  handler.completed
86
86
  end
@@ -147,6 +147,7 @@ module Beetle
147
147
  new_master = stub(:master! => nil, :server => "jo:6379")
148
148
  @server.beetle.expects(:publish).with(:system_notification, anything)
149
149
  @server.expects(:determine_new_master).returns(new_master)
150
+ @server.expects(:write_redis_master_file).with(new_master.server)
150
151
  @server.send :switch_master
151
152
  assert_equal new_master, @server.current_master
152
153
  end
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: 15424055
5
- prerelease: 6
4
+ hash: 534360161
5
+ prerelease: true
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
9
  - 0
10
10
  - rc
11
- - 9
12
- version: 0.3.0.rc.9
11
+ - 12
12
+ version: 0.3.0.rc.12
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-10-31 00:00:00 +01:00
24
+ date: 2012-01-25 00:00:00 +01:00
25
25
  default_executable: beetle
26
26
  dependencies:
27
27
  - !ruby/object:Gem::Dependency
@@ -80,12 +80,12 @@ dependencies:
80
80
  requirements:
81
81
  - - "="
82
82
  - !ruby/object:Gem::Version
83
- hash: 23
83
+ hash: 7
84
84
  segments:
85
85
  - 0
86
- - 3
87
- - 2
88
- version: 0.3.2
86
+ - 4
87
+ - 4
88
+ version: 0.4.4
89
89
  type: :runtime
90
90
  version_requirements: *id004
91
91
  - !ruby/object:Gem::Dependency
@@ -96,12 +96,12 @@ dependencies:
96
96
  requirements:
97
97
  - - "="
98
98
  - !ruby/object:Gem::Version
99
- hash: 53
99
+ hash: 57
100
100
  segments:
101
101
  - 0
102
- - 8
103
- - 5
104
- version: 0.8.5
102
+ - 9
103
+ - 1
104
+ version: 0.9.1
105
105
  type: :runtime
106
106
  version_requirements: *id005
107
107
  - !ruby/object:Gem::Dependency
@@ -112,12 +112,12 @@ dependencies:
112
112
  requirements:
113
113
  - - "="
114
114
  - !ruby/object:Gem::Version
115
- hash: 57
115
+ hash: 59
116
116
  segments:
117
117
  - 0
118
- - 8
119
- - 3
120
- version: 0.8.3
118
+ - 9
119
+ - 0
120
+ version: 0.9.0
121
121
  type: :runtime
122
122
  version_requirements: *id006
123
123
  - !ruby/object:Gem::Dependency
@@ -128,12 +128,12 @@ dependencies:
128
128
  requirements:
129
129
  - - "="
130
130
  - !ruby/object:Gem::Version
131
- hash: 59
131
+ hash: 63
132
132
  segments:
133
133
  - 0
134
- - 8
134
+ - 9
135
135
  - 2
136
- version: 0.8.2
136
+ version: 0.9.2
137
137
  type: :runtime
138
138
  version_requirements: *id007
139
139
  - !ruby/object:Gem::Dependency
@@ -220,12 +220,14 @@ dependencies:
220
220
  requirement: &id013 !ruby/object:Gem::Requirement
221
221
  none: false
222
222
  requirements:
223
- - - ">="
223
+ - - ~>
224
224
  - !ruby/object:Gem::Version
225
- hash: 3
225
+ hash: 47
226
226
  segments:
227
227
  - 0
228
- version: "0"
228
+ - 9
229
+ - 10
230
+ version: 0.9.10
229
231
  type: :development
230
232
  version_requirements: *id013
231
233
  - !ruby/object:Gem::Dependency
@@ -282,7 +284,6 @@ files:
282
284
  - examples/redundant.rb
283
285
  - examples/rpc.rb
284
286
  - examples/simple.rb
285
- - examples/test_publisher.rb
286
287
  - lib/beetle/base.rb
287
288
  - lib/beetle/client.rb
288
289
  - lib/beetle/commands/configuration_client.rb
@@ -373,7 +374,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
373
374
  requirements: []
374
375
 
375
376
  rubyforge_project:
376
- rubygems_version: 1.6.2
377
+ rubygems_version: 1.3.7
377
378
  signing_key:
378
379
  specification_version: 3
379
380
  summary: High Availability AMQP Messaging with Redundant Queues
@@ -1,32 +0,0 @@
1
- # attempts.rb
2
- # this example shows you how to use the exception limiting feature of beetle
3
- # it allows you to control the number of retries your handler will go through
4
- # with one message before giving up on it
5
- #
6
- # ! check the examples/README.rdoc for information on starting your redis/rabbit !
7
- #
8
- # start it with ruby attempts.rb
9
-
10
- require "rubygems"
11
- require File.expand_path("../lib/beetle", File.dirname(__FILE__))
12
- require "eventmachine"
13
-
14
- # set Beetle log level to info, less noisy than debug
15
- Beetle.config.logger.level = Logger::INFO
16
-
17
- # setup client
18
- client = Beetle::Client.new
19
- client.register_message(:test)
20
-
21
- n = 0
22
- EM.run do
23
- EM.add_periodic_timer(0.1) do
24
- data = (n+=1)
25
- client.logger.info "publishing #{data}"
26
- client.publish(:test, data)
27
- end
28
- trap("INT") do
29
- client.stop_publishing
30
- EM.stop_event_loop
31
- end
32
- end