iron_mq 5.0.1 → 6.0.0.pre1

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.
@@ -1,6 +1,7 @@
1
1
  gem 'test-unit'
2
2
  require 'test/unit'
3
3
  require 'yaml'
4
+ require 'parallel'
4
5
  require_relative 'test_base'
5
6
 
6
7
  class TmpTests < TestBase
@@ -10,5 +11,6 @@ class TmpTests < TestBase
10
11
  end
11
12
 
12
13
 
14
+
13
15
  end
14
16
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_mq
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 6.0.0.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Yantsevich
@@ -9,160 +9,174 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-18 00:00:00.000000000 Z
12
+ date: 2014-11-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: iron_core
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: 0.5.1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 0.5.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: test-unit
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: minitest
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: '5.0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: '5.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: beanstalk-client
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: uber_config
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: typhoeus
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '>='
102
+ - - ">="
103
103
  - !ruby/object:Gem::Version
104
104
  version: 0.5.4
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - '>='
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: 0.5.4
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: net-http-persistent
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - '>='
116
+ - - ">="
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - '>='
123
+ - - ">="
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: quicky
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - '>='
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - '>='
137
+ - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: iron_worker_ng
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - '>='
144
+ - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - '>='
151
+ - - ">="
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: go
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - '>='
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: parallel
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
159
173
  - !ruby/object:Gem::Version
160
174
  version: '0'
161
175
  type: :development
162
176
  prerelease: false
163
177
  version_requirements: !ruby/object:Gem::Requirement
164
178
  requirements:
165
- - - '>='
179
+ - - ">="
166
180
  - !ruby/object:Gem::Version
167
181
  version: '0'
168
182
  description: Ruby client for IronMQ by www.iron.io
@@ -173,7 +187,7 @@ executables: []
173
187
  extensions: []
174
188
  extra_rdoc_files: []
175
189
  files:
176
- - .gitignore
190
+ - ".gitignore"
177
191
  - Gemfile
178
192
  - Gemfile.lock
179
193
  - LICENSE
@@ -188,6 +202,7 @@ files:
188
202
  - lib/iron_mq/response.rb
189
203
  - lib/iron_mq/subscribers.rb
190
204
  - lib/iron_mq/version.rb
205
+ - test/Rakefile
191
206
  - test/long_run.rb
192
207
  - test/long_run_worker.rb
193
208
  - test/quick_run.rb
@@ -195,10 +210,10 @@ files:
195
210
  - test/schedule_abt.rb
196
211
  - test/test_alerts.rb
197
212
  - test/test_base.rb
198
- - test/test_beanstalkd.rb
199
213
  - test/test_bulk.rb
200
214
  - test/test_iron_mq.rb
201
215
  - test/test_mq_worker_subscribers.rb
216
+ - test/test_performance.rb
202
217
  - test/test_push_queues.rb
203
218
  - test/tmp.rb
204
219
  homepage: https://github.com/iron-io/iron_mq_ruby
@@ -211,21 +226,22 @@ require_paths:
211
226
  - lib
212
227
  required_ruby_version: !ruby/object:Gem::Requirement
213
228
  requirements:
214
- - - '>='
229
+ - - ">="
215
230
  - !ruby/object:Gem::Version
216
231
  version: '1.8'
217
232
  required_rubygems_version: !ruby/object:Gem::Requirement
218
233
  requirements:
219
- - - '>='
234
+ - - ">="
220
235
  - !ruby/object:Gem::Version
221
236
  version: 1.3.6
222
237
  requirements: []
223
238
  rubyforge_project:
224
- rubygems_version: 2.1.11
239
+ rubygems_version: 2.4.2
225
240
  signing_key:
226
241
  specification_version: 4
227
242
  summary: Ruby client for IronMQ by www.iron.io
228
243
  test_files:
244
+ - test/Rakefile
229
245
  - test/long_run.rb
230
246
  - test/long_run_worker.rb
231
247
  - test/quick_run.rb
@@ -233,9 +249,9 @@ test_files:
233
249
  - test/schedule_abt.rb
234
250
  - test/test_alerts.rb
235
251
  - test/test_base.rb
236
- - test/test_beanstalkd.rb
237
252
  - test/test_bulk.rb
238
253
  - test/test_iron_mq.rb
239
254
  - test/test_mq_worker_subscribers.rb
255
+ - test/test_performance.rb
240
256
  - test/test_push_queues.rb
241
257
  - test/tmp.rb
@@ -1,243 +0,0 @@
1
- require 'test/unit'
2
- require 'beanstalk-client'
3
- require 'yaml'
4
- require File.expand_path('test_base.rb', File.dirname(__FILE__))
5
-
6
- class BeanstalkTests < TestBase
7
- def setup
8
- super
9
-
10
- config = @config['iron']
11
- beanstalkd_host = "#{@host}:#{config['beanstalkd_port'] || 11300}"
12
- puts "beanstalkd url: #{beanstalkd_host}"
13
- @skip = @host.include? 'rackspace'
14
- return if @skip # bypass these tests if rackspace
15
- @beanstalk = Beanstalk::Connection.new(beanstalkd_host)
16
- @beanstalk.put("oauth #{config['token']} #{config['project_id']}")
17
-
18
- clear_tube('default')
19
- end
20
-
21
- def test_basics
22
- return if @skip # bypass this test if rackspace
23
- puts 'test_basics3'
24
-
25
- queue_name = "beanstalk_test"
26
- clear_queue(queue_name)
27
- @beanstalk.use(queue_name)
28
- @beanstalk.watch(queue_name)
29
-
30
- #puts 'reserving...'
31
- #job = beanstalk.reserve(1)
32
- #p job
33
- #exit
34
-
35
- msg = "hello #{Time.now}"
36
- puts "msg=" + msg
37
- @beanstalk.put(msg)
38
- job = @beanstalk.reserve
39
- p job
40
- p job.body
41
- assert_equal msg, job.body, "job.body #{job.body} not the same as the one we put on #{msg}."
42
- job.delete
43
- job = assert_raise(Beanstalk::TimedOut) {
44
- @beanstalk.reserve(1)
45
- }
46
-
47
- hasher = {:x => 1, :y => "hello", "yo" => "scooby doo"}
48
- @beanstalk.put(hasher.to_json)
49
- job = @beanstalk.reserve(1)
50
- got = JSON.parse(job.body)
51
- assert got.is_a?(Hash)
52
- assert_equal hasher[:x], got['x']
53
- job.delete
54
-
55
- msg = "hello there\nthis is a new line"
56
- @beanstalk.put(msg)
57
- job = @beanstalk.reserve(1)
58
- assert_equal msg, job.body, "#{job.body} does not equal #{msg}"
59
- job.delete
60
- end
61
-
62
- def clear_tube(tube)
63
- return if @skip # bypass this test if rackspace
64
- watched = @beanstalk.list_tubes_watched(true)
65
- puts 'watched: ' + watched.inspect
66
- @beanstalk.watch(tube)
67
- puts "clear #{tube}"
68
- # clean up anything in queue
69
- while x = reserve(0) do
70
- puts 'deleting ' + x.inspect
71
- x.delete
72
- end
73
- puts 'done clearing'
74
- @beanstalk.ignore(tube) if not watched.include?(tube)
75
- end
76
-
77
- def test_basics2
78
- return if @skip # bypass this test if rackspace
79
- puts 'test_basics'
80
- msg = "hello #{Time.now}"
81
- @beanstalk.put(msg)
82
- job = reserve
83
- puts 'first job: ' + job.inspect
84
- puts "body=" + job.body # prints "hello"
85
- assert_equal msg, job.body, "body not the same as message."
86
- job.delete
87
- puts 'deleted'
88
- job = reserve(1)
89
- puts 'second job = ' + job.inspect
90
- assert job.nil?, "second job was not nil " + job.inspect
91
-
92
- hasher = {:x => 1, :y => "hello", "yo" => "scooby doo"}
93
- @beanstalk.put(hasher.to_json)
94
- job = reserve(1)
95
- got = JSON.parse(job.body)
96
- puts 'got=' + got.inspect
97
- assert got.is_a?(Hash)
98
- assert_equal hasher[:x], got['x']
99
- job.delete
100
-
101
- msg = "hello there\nthis is a new line"
102
- @beanstalk.put(msg)
103
- job = reserve(1)
104
- assert_equal msg, job.body, "#{job.body} does not equal #{msg}"
105
- job.delete
106
-
107
- # delete queue on test complete
108
- resp = @client.queue('default').delete_queue
109
- assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
110
- end
111
-
112
- def test_timeout
113
- return if @skip # bypass this test if rackspace
114
- puts 'test_timeout'
115
- msg = "timeout message #{Time.now}"
116
- # timeout of 10 seconds
117
- res = @beanstalk.put(msg, 65536, 0, 30)
118
- puts 'result: ' + res.inspect
119
- job = reserve(0)
120
- puts 'first timeout job: ' + job.inspect
121
- assert_equal msg, job.body, "body not the same as message."
122
-
123
- niljob = reserve(0)
124
- assert niljob.nil?, "job is not nil! #{niljob.inspect}"
125
-
126
- # let it time out
127
- sleep 30
128
- job = reserve(0)
129
- puts 'second delayed job: ' + job.inspect
130
- assert_not_nil job, "job is nil"
131
- assert_equal msg, job.body, "body not the same as message."
132
- job.delete
133
-
134
- # delete queue on test complete
135
- resp = @client.queue('default').delete_queue
136
- assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
137
- end
138
-
139
- def test_delay
140
- return if @skip # bypass this test if rackspace
141
- puts 'test_delay'
142
- msg = "delayed message #{Time.now}"
143
- # delay of 2 seconds
144
- @beanstalk.put(msg, 65536, 2)
145
-
146
- # delay should still be in effect, so job is nil
147
- job = reserve(0)
148
- assert job.nil?, "job is not nil"
149
-
150
- # wait for delay to expire
151
- sleep 3
152
- job = reserve(0)
153
- assert_not_nil job, "job is nil"
154
- assert_equal msg, job.body, "body not the same as message."
155
- job.delete
156
-
157
- # delete queues on test complete
158
- resp = @client.queue('default').delete_queue
159
- assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
160
- end
161
-
162
- def tube_message(tube)
163
- return if @skip # bypass this test if rackspace
164
- "hello #{tube}! #{Time.now}"
165
- end
166
-
167
- def reserve(timeout=nil)
168
- return if @skip # bypass this test if rackspace
169
- begin
170
- job = @beanstalk.reserve(timeout)
171
- LOG.info 'got job: ' + job.inspect
172
- job
173
- rescue Beanstalk::TimedOut => ex
174
- puts "Timed out: #{ex.message}"
175
- nil
176
- end
177
- end
178
-
179
- def test_tubes
180
- return if @skip # bypass this test if rackspace
181
- clear_tube('youtube')
182
- tube1 = 'default'
183
- msg1 = tube_message(tube1)
184
- @beanstalk.put(msg1)
185
- tube2 = 'youtube'
186
- @beanstalk.use(tube2) # switch tubes to put messages on
187
- msg2 = tube_message(tube2)
188
- @beanstalk.put(msg2)
189
- # now we have a single message in two different tubes.
190
- # let's first try to ensure we only get the one off the default tube.
191
- job = reserve(1)
192
- assert_equal msg1, job.body, "body #{job.body.to_s} does not equal #{msg1}"
193
- job.delete
194
- # second message should not come off since we're not watching that tube.
195
- job = reserve(1)
196
- assert job.nil?, "second job was not nil " + job.inspect
197
-
198
- @beanstalk.watch(tube2)
199
- job = reserve(1)
200
- assert_equal msg2, job.body, "body #{job.body.to_s} does not equal #{msg2}"
201
- job.delete
202
-
203
- # Now that we're watching both tubes we should get messages put into either.
204
- @beanstalk.use(tube1)
205
- msg3 = tube_message(tube1)
206
- @beanstalk.put(msg3)
207
- job = reserve(1)
208
- assert_equal msg3, job.body
209
- job.delete
210
-
211
- # now put one in default and one in tube2, then we'll ignore default
212
- msg1 = tube_message(tube1)
213
- @beanstalk.put(msg1)
214
- @beanstalk.use(tube2) # switch tubes to put messages on
215
- msg2 = tube_message(tube2)
216
- @beanstalk.put(msg2)
217
-
218
- @beanstalk.ignore(tube1)
219
- job = reserve(1)
220
- assert_equal msg2, job.body, "body #{job.body.to_s} does not equal #{msg2}"
221
- job.delete
222
- job = reserve(1)
223
- assert job.nil?
224
-
225
- # clean up the last message from default
226
- @beanstalk.watch(tube1)
227
- job = reserve(1)
228
- assert_equal msg1, job.body, "body #{job.body.to_s} does not equal #{msg1}"
229
- job.delete
230
-
231
- # delete queues on test complete
232
- resp = @client.queue('youtube').delete_queue
233
- assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
234
-
235
- resp = @client.queue('beanstalk_test').delete_queue
236
- assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
237
-
238
- resp = @client.queue('default').delete_queue
239
- assert_equal 200, resp.code, "API must response with HTTP 200 status, but returned HTTP #{resp.code}"
240
- end
241
-
242
-
243
- end