hoodoo 1.4.1 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Mjc4OGM2NmE0N2Y0Zjg1ZjIzNWIyM2IzMThhYTdjNjZhYzIwNjRmZQ==
4
+ MDhkYWM2MjczODEyMTY0ZmUzM2JmNTE2NDNhNDI0ODVmMzRiNjk2Mg==
5
5
  data.tar.gz: !binary |-
6
- MDJjY2M3YzFhOTVkYmQ4NDNhMmM5ODFhMTVkNDU2ZjU1NTliMzE0ZA==
6
+ N2U4NzAwMTg2YTMwZWFmYjcxMmEwMjM2MWUwOGUxZjJjNTVlOWY3NA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OGY0YzZiM2RkOWY2MDlhM2U2OGYzMGZjZGJhYTEyNDk3NGU0YTZhZTRmYTA3
10
- Nzk3YmJlMzdiNDNkZTM2NDc4ZGI5MDlkOWZlMDgyODU2NDQ2MGQ1MGFmYWZh
11
- M2Q3ZGRjNGE2YzY0ZmFlY2U3NzkxNTJmZTI4OTNjNzVlNjA2N2U=
9
+ MWJlMThiNzJhMzQwMmJiNGUwMDJlNjc0ZTE5MTgyYTA5ZjU4MGQ4YzQ0Yzg2
10
+ M2VhODY0YTkwNmYxZDJjYjM5NzI3M2VlZTYwN2MxYjQ0ZGM3OTEzNjNiYjRl
11
+ MjE0YWQwOTIwZDJmMzUyMTVmODZlZDc1NWE5NjA5YTA3MDQxMDE=
12
12
  data.tar.gz: !binary |-
13
- NTE3NTdhNjAxZTA0NmI3YWQ3OTNmNDgzMTliODVmZTI0NWRmYmE0YTBiZWNm
14
- MjEyY2FiZTRjYTY4NDQ2ZmIyZDgyYjFiYzcwMTJhNWExNmVlZWQxMDYyYjM5
15
- ZWU0N2UwZTRkNWYzNmMxNzhkNTEwMThjMzI2Y2ZmMjY2NGE5NWY=
13
+ OWNkYTUyNmY1MGJhYzNlNWY5NmZhNWZiZjc3NjhjODYwODAzMDY5NjRjZmQz
14
+ OGE3OTQ1NTNmYmRjOTA4ZTRmZTgyODNlMGMyZDQ4ZjViYjBhOGYwZGM5ODZl
15
+ OGFlMjIzMTc4YzJmM2ZlNTFhODZjMTVkYzQ3YTViMzg1NmVjYWI=
@@ -164,7 +164,7 @@ module Hoodoo
164
164
  http_message[ 'session_id' ] = self.session_id()
165
165
  end
166
166
 
167
- amqp_response = self.alchemy().send_message_to_resource( http_message )
167
+ amqp_response = self.alchemy().send_request_to_resource( http_message )
168
168
 
169
169
  description_of_response = DescriptionOfResponse.new
170
170
  description_of_response.action = action
@@ -20,7 +20,6 @@ require 'hoodoo/presenters'
20
20
  # Middleware
21
21
 
22
22
  require 'hoodoo/services/middleware/rack_monkey_patch'
23
- require 'hoodoo/services/middleware/amqp_log_message'
24
23
  require 'hoodoo/services/middleware/amqp_log_writer'
25
24
  require 'hoodoo/services/middleware/interaction'
26
25
  require 'hoodoo/services/middleware/endpoints/inter_resource_remote'
@@ -70,13 +70,13 @@ module Hoodoo; module Services
70
70
  data[ :id ] ||= Hoodoo::UUID.generate()
71
71
 
72
72
  session = data[ :session ] || {}
73
- message = Hoodoo::Services::Middleware::AMQPLogMessage.new( {
73
+ message = {
74
74
 
75
75
  :id => data[ :id ],
76
76
  :level => level,
77
77
  :component => component,
78
78
  :code => code,
79
- :reported_at => Time.now,
79
+ :reported_at => Time.now.iso8601( 12 ),
80
80
 
81
81
  :data => data,
82
82
 
@@ -84,9 +84,9 @@ module Hoodoo; module Services
84
84
  :caller_id => session[ 'caller_id' ],
85
85
  :identity => ( session[ 'identity' ] || {} ).to_h
86
86
 
87
- } ).to_h()
87
+ }.to_json()
88
88
 
89
- @alchemy.send_message_to_queue( @routing_key, message )
89
+ @alchemy.send_message_to_service( @routing_key, { "body" => message } )
90
90
  end
91
91
  end
92
92
 
@@ -12,6 +12,6 @@ module Hoodoo
12
12
  # The Hoodoo gem version. If this changes, ensure that the date in
13
13
  # "hoodoo.gemspec" is correct and run "bundle install" (or "update").
14
14
  #
15
- VERSION = '1.4.1'
15
+ VERSION = '1.5.0'
16
16
 
17
17
  end
@@ -60,7 +60,7 @@ describe Hoodoo::Services::Middleware::AMQPLogWriter do
60
60
  level = 'warn'
61
61
  component = 'test_component'
62
62
  code = 'test_code'
63
- reported_at = Time.now
63
+ reported_at = Time.now.iso8601( 12 )
64
64
  id = Hoodoo::UUID.generate
65
65
  interaction_id = Hoodoo::UUID.generate
66
66
  data = {
@@ -83,8 +83,7 @@ describe Hoodoo::Services::Middleware::AMQPLogWriter do
83
83
  :identity => Hoodoo::Utilities.stringify( @session.identity.to_h )
84
84
  }
85
85
 
86
- expect( Hoodoo::Services::Middleware::AMQPLogMessage ).to receive( :new ).with( expected_hash ).and_return( {} )
87
- expect( @alchemy ).to receive( :send_message_to_queue ).with( @queue, {} ).once
86
+ expect( @alchemy ).to receive( :send_message_to_service ).with( @queue, { "body" => expected_hash.to_json } ).once
88
87
 
89
88
  @logger.report( level, component, code, data )
90
89
  end
@@ -102,7 +102,7 @@ describe Hoodoo::Services::Middleware do
102
102
  mock_query[ 'filter' ] = URI.encode_www_form( mock_query[ 'filter' ] ) if ( mock_query[ 'filter' ].is_a?( ::Hash ) )
103
103
  end
104
104
 
105
- expect( @mock_alchemy ).to receive( :send_message_to_resource ).once do | message |
105
+ expect( @mock_alchemy ).to receive( :send_request_to_resource ).once do | message |
106
106
  expect( message ).to eq( {
107
107
  'scheme' => 'http',
108
108
  'verb' => mock_method,
@@ -214,7 +214,7 @@ describe Hoodoo::Services::Middleware do
214
214
  it 'has the expected "development" mode loggers' do
215
215
  force_logging_to( 'development' )
216
216
 
217
- expect_any_instance_of(FakeAlchemy).to receive(:send_message_to_queue).at_least(:once)
217
+ expect_any_instance_of(FakeAlchemy).to receive(:send_message_to_service).at_least(:once)
218
218
  spec_helper_silence_stdout() do
219
219
  get '/v1/test_log/hello', nil, { 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
220
220
  end
@@ -228,7 +228,7 @@ describe Hoodoo::Services::Middleware do
228
228
  it 'has the expected "production" mode loggers' do
229
229
  force_logging_to( 'production' )
230
230
 
231
- expect_any_instance_of(FakeAlchemy).to receive(:send_message_to_queue).at_least(:once)
231
+ expect_any_instance_of(FakeAlchemy).to receive(:send_message_to_service).at_least(:once)
232
232
  get '/v1/test_log/hello', nil, { 'CONTENT_TYPE' => 'application/json; charset=utf-8' }
233
233
 
234
234
  instances = Hoodoo::Services::Middleware.logger.instances
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoodoo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Loyalty New Zealand
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-25 00:00:00.000000000 Z
11
+ date: 2016-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kgio
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - ~>
102
102
  - !ruby/object:Gem::Version
103
- version: '0.1'
103
+ version: '1.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ~>
109
109
  - !ruby/object:Gem::Version
110
- version: '0.1'
110
+ version: '1.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -359,7 +359,6 @@ files:
359
359
  - lib/hoodoo/services/discovery/results/for_http.rb
360
360
  - lib/hoodoo/services/discovery/results/for_local.rb
361
361
  - lib/hoodoo/services/discovery/results/for_remote.rb
362
- - lib/hoodoo/services/middleware/amqp_log_message.rb
363
362
  - lib/hoodoo/services/middleware/amqp_log_writer.rb
364
363
  - lib/hoodoo/services/middleware/endpoints/inter_resource_local.rb
365
364
  - lib/hoodoo/services/middleware/endpoints/inter_resource_remote.rb
@@ -456,7 +455,6 @@ files:
456
455
  - spec/services/discovery/results/for_http_spec.rb
457
456
  - spec/services/discovery/results/for_local_spec.rb
458
457
  - spec/services/discovery/results/for_remote_spec.rb
459
- - spec/services/middleware/amqp_log_message_spec.rb
460
458
  - spec/services/middleware/amqp_log_writer_spec.rb
461
459
  - spec/services/middleware/endpoints/inter_resource_local_spec.rb
462
460
  - spec/services/middleware/endpoints/inter_resource_remote_spec.rb
@@ -585,7 +583,6 @@ test_files:
585
583
  - spec/services/discovery/results/for_http_spec.rb
586
584
  - spec/services/discovery/results/for_local_spec.rb
587
585
  - spec/services/discovery/results/for_remote_spec.rb
588
- - spec/services/middleware/amqp_log_message_spec.rb
589
586
  - spec/services/middleware/amqp_log_writer_spec.rb
590
587
  - spec/services/middleware/endpoints/inter_resource_local_spec.rb
591
588
  - spec/services/middleware/endpoints/inter_resource_remote_spec.rb
@@ -1,124 +0,0 @@
1
- ########################################################################
2
- # File:: amqp_log_message.rb
3
- # (C):: Loyalty New Zealand 2014
4
- #
5
- # Purpose:: Structured logging onto an AMQP-based queue, via the
6
- # Alchemy Flux gem. This class just exists to rationalise
7
- # any parameters inbound in order to generate a clean
8
- # representation for Flux.
9
- #
10
- # The middleware uses this to put log and error messages
11
- # on the queue. Interested services use this to read such
12
- # messages from the queue.
13
- # ----------------------------------------------------------------------
14
- # 20-Nov-2014 (ADH): Created.
15
- ########################################################################
16
-
17
- module Hoodoo; module Services
18
- class Middleware
19
-
20
- # A representation of a log message placed on an AMQP-based queue.
21
- # The primary expected communications interface is Alchemy Flux at
22
- # the time of writing.
23
- #
24
- class AMQPLogMessage
25
-
26
- # The Time +strftime+ formatter used for string conversions in this
27
- # class.
28
- #
29
- TIME_FORMATTER = '%Y-%m-%d %H:%M:%S.%12N %Z'
30
-
31
- # A UUID to assign to this log message. See Hoodoo::UUID::generate.
32
- #
33
- attr_accessor :id
34
-
35
- # Logging level. See Hoodoo::Logger.
36
- #
37
- attr_accessor :level
38
-
39
- # Logging component. See Hoodoo::Logger.
40
- #
41
- attr_accessor :component
42
-
43
- # Component log code. See Hoodoo::Logger.
44
- #
45
- attr_accessor :code
46
-
47
- # The time at which this log message is being reported to the Logger
48
- # instance. This is a formatted *String* to high accuracy. See also
49
- # #reported_at=.
50
- #
51
- attr_reader :reported_at
52
-
53
- # Set the time read back by #reported_at using a Time instance. This
54
- # is formatted internally as a String via TIME_FORMATTER and reported
55
- # as such in subsequent calls to #reported_at.
56
- #
57
- # Conversion from Time to String is done here, rather than by the
58
- # caller setting this instance's variables, so that we can internally
59
- # enforce the accuracy required for this field.
60
- #
61
- # +time+:: The Time instance to set (and process into a string
62
- # internally via TIME_FORMATTER), *or* a String instance
63
- # already so formatted, *or* +nil+ to clear the value.
64
- #
65
- def reported_at=( time )
66
- if time.is_a?( String )
67
- @reported_at = time
68
- elsif time.is_a?( Time )
69
- @reported_at = time.strftime( TIME_FORMATTER )
70
- else
71
- @reported_at = nil
72
- end
73
- end
74
-
75
- # Log payload. See Hoodoo::Logger.
76
- #
77
- attr_accessor :data
78
-
79
- # Optional calling Caller ID, via session data inside the payload - see
80
- # Hoodoo::Logger.
81
- #
82
- attr_accessor :caller_id
83
-
84
- # Optional interaction UUID, via session data inside the payload - see
85
- # Hoodoo::Logger.
86
- #
87
- attr_accessor :interaction_id
88
-
89
- # Optional hash of identity properties from the session data inside the
90
- # payload - see Hoodoo::Logger.
91
- #
92
- attr_accessor :identity
93
-
94
- # Create an instance with options keyed on the attributes defined for
95
- # the class. Option keys may be Strings or Symbols but must only match
96
- # defined attribute names.
97
- #
98
- def initialize( options = {} )
99
- options.each do | name, value |
100
- send( "#{ name }=", value )
101
- end
102
- end
103
-
104
- # Retrieve a simple Hash representation of this instance.
105
- #
106
- def to_h
107
- {
108
- 'id' => @id,
109
- 'level' => @level,
110
- 'component' => @component,
111
- 'code' => @code,
112
- 'reported_at' => @reported_at,
113
-
114
- 'data' => @data,
115
-
116
- 'interaction_id' => @interaction_id,
117
- 'caller_id' => @caller_id,
118
- 'identity' => Hoodoo::Utilities.stringify( @identity )
119
- }
120
- end
121
- end
122
-
123
- end
124
- end; end
@@ -1,58 +0,0 @@
1
- require 'spec_helper.rb'
2
-
3
- describe Hoodoo::Services::Middleware::AMQPLogMessage do
4
-
5
- let( :now ) { Time.now }
6
- let( :base_hash ) {
7
- {
8
- :id => '1',
9
- :level => 'info',
10
- :component => 'RSpec',
11
- :code => 'hello',
12
-
13
- :data => { 'this' => 'that' },
14
-
15
- :interaction_id => '3',
16
- :caller_id => '2',
17
- :identity => { :foo => '4', :bar => '5' },
18
- }
19
- }
20
-
21
- ############################################################################
22
- # All tests must use 'let' to define values for 'reported_at' and
23
- # 'expected_reported_at'.
24
- ############################################################################
25
-
26
- let( :hash ) { base_hash().merge( :reported_at => reported_at() ) }
27
- let( :expected_result ) {
28
- Hoodoo::Utilities.stringify( hash() ).merge( 'reported_at' => expected_reported_at() )
29
- }
30
-
31
- shared_examples 'a well formed logger' do
32
- it 'and canonicalises the fields' do
33
- obj = described_class.new( hash() )
34
- expect( obj.to_h ).to eq( expected_result() )
35
- end
36
- end
37
-
38
- context 'with a Time object in "reported_at"' do
39
- let( :reported_at ) { Time.now }
40
- let( :expected_reported_at ) { reported_at().strftime( Hoodoo::Services::Middleware::AMQPLogMessage::TIME_FORMATTER ) }
41
-
42
- it_behaves_like 'a well formed logger'
43
- end
44
-
45
- context 'with a String object in "reported_at"' do
46
- let( :reported_at ) { Time.now.iso8601 }
47
- let( :expected_reported_at ) { reported_at() }
48
-
49
- it_behaves_like 'a well formed logger'
50
- end
51
-
52
- context 'with "nil" in "reported_at"' do
53
- let( :reported_at ) { nil }
54
- let( :expected_reported_at ) { reported_at() }
55
-
56
- it_behaves_like 'a well formed logger'
57
- end
58
- end