gorg_service 5.1.0 → 5.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c1a373eae1c1f417da46ab05ed254a6282f8db2c
4
- data.tar.gz: b67c38dcea30bac3b29d3857db22794f190f7b00
3
+ metadata.gz: 2085fe592d8c8996fba362f5ab27ed073fc286d7
4
+ data.tar.gz: a7b351d69fbddb9bfea3d4ec5e680eb938bdaeea
5
5
  SHA512:
6
- metadata.gz: ac47bf636d8e2cabf1d8dfcdff4344460df2f9e6b8f533dff63bd122b91ac4d87d822dbdcd8e74cb29889352703481fcc4a1f6e20602af3b7ef6563ef4128e17
7
- data.tar.gz: 097c3a1bebe68f1ddf315e09b1461a8d2fa677e4b09936146a4413d25ae8e893ffa5a627ac2f84daef00d02c74fd1eef1efda48d35677116be392b3d333278f6
6
+ metadata.gz: ae04c871818975d33b1eff5391ce1b677c71b04d2977dbaa4bb4b31fda8d9d53da4e4c39dbfd560f406cecfe48bc62d7700ca2df91627639ff4b09d4db10778a
7
+ data.tar.gz: f97f7c4cb4d13b0134044eb64ee7f1134e2a0f711b034a643ba7b83b8ec43966d8ff2e9d46f32f7b5ed9885812ba60c67a76e1edd763022b15c4073c52f538f3
data/lib/gorg_service.rb CHANGED
@@ -12,7 +12,7 @@ class GorgService
12
12
 
13
13
  #Connection shared across Consumers and Producers (thread safe)
14
14
  def connection
15
- @bunny_session||=Bunny.new(
15
+ @bunny_session||=GorgService.configuration.rabbitmq_client_class.new(
16
16
  :hostname => GorgService.configuration.rabbitmq_host,
17
17
  :port => GorgService.configuration.rabbitmq_port,
18
18
  :user => GorgService.configuration.rabbitmq_user,
@@ -17,7 +17,8 @@ class GorgService
17
17
  # Hold configuration of GorgService in instance variables
18
18
  class Configuration
19
19
 
20
- attr_accessor :application_name,
20
+ attr_accessor :rabbitmq_client_class,
21
+ :application_name,
21
22
  :application_id,
22
23
  :rabbitmq_host,
23
24
  :rabbitmq_port,
@@ -34,6 +35,7 @@ class GorgService
34
35
 
35
36
 
36
37
  def initialize
38
+ @rabbitmq_client_class = Bunny
37
39
  @logger = Logger.new(STDOUT)
38
40
  @application_name = "GorgService"
39
41
  @application_id = "gs"
@@ -57,6 +57,10 @@ class GorgService
57
57
  MessageRouter.register_route(routing_key, self)
58
58
  end
59
59
 
60
+ def reset_listen_to!
61
+ MessageRouter.delete_routes_of(self)
62
+ end
63
+
60
64
  end
61
65
  end
62
66
  end
@@ -22,6 +22,10 @@ class GorgService
22
22
  routes[routing_key]=message_handler
23
23
  end
24
24
 
25
+ def delete_routes_of(message_handler)
26
+ routes.reject!{|_k,v|v==message_handler}
27
+ end
28
+
25
29
  def listened_keys
26
30
  routes.keys
27
31
  end
@@ -144,7 +144,7 @@ class GorgService
144
144
  routing_key: delivery_info[:routing_key],
145
145
  id: properties[:message_id],
146
146
  reply_to: properties[:reply_to],
147
- correlation_id: properties[:correlatio_to],
147
+ correlation_id: properties[:correlation_id],
148
148
  sender_id: properties[:app_id],
149
149
  content_type: properties[:content_type],
150
150
  content_encoding: properties[:content_encoding],
@@ -0,0 +1,72 @@
1
+ class BunnyCleaner
2
+
3
+ class Session
4
+ def initialize(*args, &block)
5
+ @target=Bunny::Session.new(*args,&block)
6
+ end
7
+
8
+ def method_missing(method, *args, &block)
9
+ @target.send(method, *args, &block)
10
+ end
11
+
12
+ def self.method_missing(method, *args, &block)
13
+ Bunny::Session.send(method, *args, &block)
14
+ end
15
+
16
+ def create_channel(*args,&block)
17
+ ch=@target.create_channel(*args,&block)
18
+ BunnyCleaner.registered_channels<<ch
19
+ ch
20
+ end
21
+ end
22
+
23
+
24
+ def initialize(*args, &block)
25
+ @target=Session.new(*args, &block)
26
+ end
27
+
28
+ def method_missing(method, *args, &block)
29
+ @target.send(method, *args, &block)
30
+ end
31
+
32
+ def self.method_missing(method, *args, &block)
33
+ Bunny.send(method, *args, &block)
34
+ end
35
+
36
+ class << self
37
+ def registered_channels
38
+ @registered_channels||=[]
39
+ end
40
+
41
+ def cleaning(&block)
42
+ begin
43
+ init_cleaning
44
+ block.call
45
+ ensure
46
+ clean
47
+ end
48
+ end
49
+
50
+
51
+ def clean
52
+ connections=[]
53
+ @registered_channels.each do |ch|
54
+ c=ch.connection
55
+ connections<<c
56
+ c.start unless c.status == :open
57
+
58
+ c.with_channel do |chan|
59
+ ch.queues.keys.each{|q| c.queue_exists?(q)&&chan.queue_delete(q) }
60
+ ch.exchanges.keys.each{|ex| c.exchange_exists?(ex)&&chan.exchange_delete(ex) }
61
+ end
62
+ end
63
+ connections.uniq.each{|c|c.stop}
64
+ end
65
+
66
+ def init_cleaning
67
+ registered_channels.clear
68
+ end
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,30 @@
1
+ class LogMessageHandler < GorgService::Consumer::MessageHandler::Base
2
+ def initialize(msg)
3
+ GorgService.logger.debug "Message received in LogMessageHandler"
4
+ self.class.messages<<msg
5
+ end
6
+
7
+ def self.messages
8
+ @@messages||=[]
9
+ end
10
+
11
+ def self.has_received_error?(type)
12
+ messages.any?{|m| m.errors.any?{|x| x.type==type}}
13
+ end
14
+
15
+ def self.has_received_hardfail?
16
+ self.has_received_error?("harderror")
17
+ end
18
+
19
+ def self.has_received_hardfail?
20
+ self.has_received_error?("softerror")
21
+ end
22
+
23
+ def self.has_received_a_message_with_routing_key?(routing_key)
24
+ messages.any?{|m| m.routing_key==routing_key}
25
+ end
26
+
27
+ def self.reset
28
+ @@messages=nil
29
+ end
30
+ end
@@ -2,5 +2,5 @@
2
2
  # encoding: utf-8
3
3
 
4
4
  class GorgService
5
- VERSION = "5.1.0"
5
+ VERSION = "5.2.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gorg_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Narbonne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-08 00:00:00.000000000 Z
11
+ date: 2017-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -178,6 +178,8 @@ files:
178
178
  - lib/gorg_service/message/json_schema.rb
179
179
  - lib/gorg_service/producer.rb
180
180
  - lib/gorg_service/rabbitmq_env_builder.rb
181
+ - lib/gorg_service/rspec/bunny_cleaner.rb
182
+ - lib/gorg_service/rspec/log_message_handler.rb
181
183
  - lib/gorg_service/version.rb
182
184
  homepage: https://github.com/Zooip/gorg_service
183
185
  licenses: