beetle 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
data/beetle.gemspec
CHANGED
@@ -64,6 +64,7 @@ module Beetle
|
|
64
64
|
def pong(payload)
|
65
65
|
id = payload["id"]
|
66
66
|
token = payload["token"]
|
67
|
+
return unless validate_pong_client_id(id)
|
67
68
|
logger.info "Received pong message from id '#{id}' with token '#{token}'"
|
68
69
|
return unless redeem_token(token)
|
69
70
|
@client_pong_ids_received << id
|
@@ -164,6 +165,15 @@ module Beetle
|
|
164
165
|
redis.unknowns.include?(current_master) ? redis.slaves_of(current_master).first : current_master
|
165
166
|
end
|
166
167
|
|
168
|
+
def validate_pong_client_id(client_id)
|
169
|
+
unless known_client = @client_ids.include?(client_id)
|
170
|
+
msg = "Received pong message from unknown client '#{client_id}'"
|
171
|
+
logger.error(msg)
|
172
|
+
beetle.publish(:system_notification, {"message" => msg}.to_json)
|
173
|
+
end
|
174
|
+
known_client
|
175
|
+
end
|
176
|
+
|
167
177
|
def redeem_token(token)
|
168
178
|
valid_token = token == @current_token
|
169
179
|
logger.info "Ignored message (token was '#{token.inspect}', but expected '#{@current_token.inspect}')" unless valid_token
|
@@ -275,4 +275,22 @@ module Beetle
|
|
275
275
|
info
|
276
276
|
end
|
277
277
|
end
|
278
|
+
|
279
|
+
class RedisConfigurationServerSystemNotificationAndLoggingTest < Test::Unit::TestCase
|
280
|
+
def setup
|
281
|
+
Beetle.config.redis_configuration_client_ids = "rc-client-1,rc-client-2"
|
282
|
+
@server = RedisConfigurationServer.new
|
283
|
+
@server.stubs(:beetle).returns(stub(:publish))
|
284
|
+
@server.stubs(:logger).returns(stub)
|
285
|
+
EventMachine.stubs(:add_timer).yields
|
286
|
+
end
|
287
|
+
|
288
|
+
test "should log and send a system notification when pong message from unknown client received" do
|
289
|
+
payload = {"id" => "unknown-client", "token" => @server.current_token}
|
290
|
+
msg = "Received pong message from unknown client 'unknown-client'"
|
291
|
+
@server.beetle.expects(:publish).with(:system_notification, ({:message => msg}).to_json)
|
292
|
+
@server.logger.expects(:error).with(msg)
|
293
|
+
@server.pong(payload)
|
294
|
+
end
|
295
|
+
end
|
278
296
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beetle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 4
|
10
|
+
version: 0.2.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Stefan Kaes
|
@@ -18,7 +18,7 @@ autorequire:
|
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
20
|
|
21
|
-
date: 2010-
|
21
|
+
date: 2010-08-06 00:00:00 +02:00
|
22
22
|
default_executable: beetle
|
23
23
|
dependencies:
|
24
24
|
- !ruby/object:Gem::Dependency
|