droid19 1.0.2

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.
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Request' do
4
+ before do
5
+ @mq = mock("MQ")
6
+ @exchange = mock("MQ Exchange")
7
+ @queue = mock("MQ Queue")
8
+
9
+ @qobj = mock("Droid::BasicQueue Instance")
10
+ @qobj.stubs(:q).returns(@queue)
11
+ @qobj.stubs(:mq).returns(@mq)
12
+ @qobj.stubs(:ex).returns(@exchange)
13
+
14
+ @header = mock("amqp header", :headers => {})
15
+
16
+ @raw_message = '{"x":123,"y":"abc"}'
17
+
18
+ @res = Droid::Request.new(@qobj, @header, @raw_message)
19
+ end
20
+
21
+ it "allows access to response via symbols or strings in array access" do
22
+ @res['x'].should == 123
23
+ @res[:x].should == 123
24
+ @res['y'].should == 'abc'
25
+ @res[:y].should == 'abc'
26
+ end
27
+
28
+ it "calls ack on the header" do
29
+ @header.expects(:ack)
30
+ @res.ack
31
+ end
32
+
33
+ it "calls q on the qobj" do
34
+ @qobj.expects(:q)
35
+ @res.q
36
+ end
37
+
38
+ it "calls ex on the qobj" do
39
+ @qobj.expects(:ex)
40
+ @res.ex
41
+ end
42
+
43
+ it "calls mq on the qobj" do
44
+ @qobj.expects(:mq)
45
+ @res.mq
46
+ end
47
+ end
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'baconmocha'
3
+ require 'rspec'
4
+
5
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
6
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+
8
+ require 'droid'
9
+
10
+ Droid.log.level = Logger::FATAL
11
+
12
+ Bacon.summary_on_exit
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Utils' do
4
+ before do
5
+ end
6
+
7
+ it "parses a json message" do
8
+ Droid::Utils.parse_message('{"x":1,"y":2}').should == {'x' => 1, 'y' => 2}
9
+ end
10
+
11
+ it "parses custom headers and force integers on a few values" do
12
+ headers = {
13
+ :x => '1',
14
+ :y => '2',
15
+ :reply_to => 'q.random.reply',
16
+ :published_on => '12345',
17
+ :event_hash => 'x123'
18
+ }
19
+
20
+ h = Droid::Utils.parse_custom_headers(headers)
21
+
22
+ h.size.should == 6
23
+ h[:ttl].should == -1
24
+ h[:reply_to].should == 'q.random.reply'
25
+ h[:published_on].should == 12345
26
+ h[:event_hash].should == 'x123'
27
+ end
28
+
29
+ it "raises an exception if the data to format for publish is not a hash" do
30
+ lambda { Droid::Utils.format_publish('bad payload') }.should.raise Droid::BadPayload
31
+ end
32
+
33
+ it "generates a name for the instance" do
34
+ Socket.stubs(:gethostname).returns('deepblue.123')
35
+ Droid::Utils.generate_name_for_instance('woo').should == 'woo.deepblue.123'
36
+ end
37
+
38
+ it "generates queue name, really more like a generic identifier" do
39
+ Socket.stubs(:gethostname).returns('deepblue.123')
40
+ Droid::Utils.generate_queue('topic').should == "topic.deepblue.123.#{$$}"
41
+ Droid::Utils.generate_queue('topic', 'local').should == "topic.deepblue.123.local"
42
+ end
43
+ end
@@ -0,0 +1,16 @@
1
+ require_relative 'spec_helper'
2
+
3
+ Thread.new do
4
+ sleep 2
5
+ TCPServer.new('localhost', 20_001).accept.close
6
+ end
7
+
8
+ describe 'Connectivity' do
9
+ it "waits for the rabbitmq server to come up before opening the amqp connection" do
10
+ start = Time.now
11
+ Droid.wait_for_tcp_port('localhost', 20_001)
12
+ finish = Time.now
13
+ (finish - start).should > 1
14
+ (finish - start).should < 3
15
+ end
16
+ end
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: droid19
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 2
9
+ version: 1.0.2
10
+ platform: ruby
11
+ authors:
12
+ - Ricardo Chimal, Jr.
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-04-05 00:00:00 -07:00
18
+ default_executable: bleedq
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: baconmocha
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :development
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: json_pure
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 2
44
+ - 0
45
+ version: 1.2.0
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: rest-client
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 1
58
+ - 2
59
+ - 0
60
+ version: 1.2.0
61
+ type: :runtime
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: amqp
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - "="
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 0
73
+ - 6
74
+ - 7
75
+ version: 0.6.7
76
+ type: :runtime
77
+ version_requirements: *id004
78
+ - !ruby/object:Gem::Dependency
79
+ name: bunny
80
+ prerelease: false
81
+ requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ~>
85
+ - !ruby/object:Gem::Version
86
+ segments:
87
+ - 0
88
+ - 6
89
+ - 0
90
+ version: 0.6.0
91
+ type: :runtime
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: eventmachine_httpserver
95
+ prerelease: false
96
+ requirement: &id006 !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - "="
100
+ - !ruby/object:Gem::Version
101
+ segments:
102
+ - 0
103
+ - 2
104
+ - 0
105
+ version: 0.2.0
106
+ type: :runtime
107
+ version_requirements: *id006
108
+ description: Easy to use AMQP Library with constructs for typical usage patterns
109
+ email: ricardo@heroku.com
110
+ executables:
111
+ - bleedq
112
+ extensions: []
113
+
114
+ extra_rdoc_files: []
115
+
116
+ files:
117
+ - Rakefile
118
+ - VERSION
119
+ - bin/bleedq
120
+ - droid.gemspec
121
+ - examples/async_reply.rb
122
+ - examples/heroku_async_reply.rb
123
+ - examples/sync.rb
124
+ - examples/worker.rb
125
+ - lib/droid.rb
126
+ - lib/droid/em.rb
127
+ - lib/droid/heroku.rb
128
+ - lib/droid/heroku/local_stats.rb
129
+ - lib/droid/heroku/logger_client.rb
130
+ - lib/droid/heroku/memcache_cluster.rb
131
+ - lib/droid/heroku/stats.rb
132
+ - lib/droid/json_server.rb
133
+ - lib/droid/monkey.rb
134
+ - lib/droid/publish.rb
135
+ - lib/droid/queue.rb
136
+ - lib/droid/request.rb
137
+ - lib/droid/sync.rb
138
+ - lib/droid/utilization.rb
139
+ - lib/droid/utils.rb
140
+ - lib/heroku_droid.rb
141
+ - lib/local_stats.rb
142
+ - lib/memcache_cluster.rb
143
+ - lib/stats.rb
144
+ - spec/publish_spec.rb
145
+ - spec/response_spec.rb
146
+ - spec/spec_helper.rb
147
+ - spec/utils_spec.rb
148
+ - spec/wait_for_port_spec.rb
149
+ has_rdoc: true
150
+ homepage: http://heroku.com
151
+ licenses: []
152
+
153
+ post_install_message:
154
+ rdoc_options: []
155
+
156
+ require_paths:
157
+ - lib
158
+ required_ruby_version: !ruby/object:Gem::Requirement
159
+ none: false
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ segments:
164
+ - 0
165
+ version: "0"
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ none: false
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ segments:
172
+ - 0
173
+ version: "0"
174
+ requirements: []
175
+
176
+ rubyforge_project:
177
+ rubygems_version: 1.3.7
178
+ signing_key:
179
+ specification_version: 3
180
+ summary: AMQP Wrapper Library
181
+ test_files:
182
+ - examples/async_reply.rb
183
+ - examples/heroku_async_reply.rb
184
+ - examples/sync.rb
185
+ - examples/worker.rb
186
+ - spec/publish_spec.rb
187
+ - spec/response_spec.rb
188
+ - spec/spec_helper.rb
189
+ - spec/utils_spec.rb
190
+ - spec/wait_for_port_spec.rb