iron_mq 2.0.0 → 2.1.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.
- data/Gemfile.lock +6 -22
- data/lib/iron_mq/queues.rb +16 -0
- data/lib/iron_mq/version.rb +1 -1
- data/test/long_run.rb +3 -6
- data/test/long_run_worker.rb +25 -11
- data/test/quick_run.rb +1 -1
- data/test/test_beanstalkd.rb +1 -1
- data/test/test_iron_mq.rb +61 -59
- data/test/tmp.rb +37 -0
- metadata +4 -2
data/Gemfile.lock
CHANGED
@@ -1,42 +1,26 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
iron_mq (
|
4
|
+
iron_mq (2.0.0)
|
5
5
|
iron_core (>= 0.2.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
addressable (2.2.8)
|
11
10
|
beanstalk-client (1.1.1)
|
12
|
-
concur (0.
|
13
|
-
em-http-request
|
14
|
-
em-http-request
|
15
|
-
eventmachine
|
16
|
-
eventmachine
|
11
|
+
concur (1.0.0)
|
17
12
|
faraday
|
18
13
|
faraday
|
19
|
-
cookiejar (0.3.0)
|
20
|
-
em-http-request (1.0.2)
|
21
|
-
addressable (>= 2.2.3)
|
22
|
-
cookiejar
|
23
|
-
em-socksify
|
24
|
-
eventmachine (>= 1.0.0.beta.4)
|
25
|
-
http_parser.rb (>= 0.5.3)
|
26
|
-
em-socksify (0.2.0)
|
27
|
-
eventmachine (>= 1.0.0.beta.4)
|
28
|
-
eventmachine (1.0.0.rc.4)
|
29
14
|
faraday (0.8.1)
|
30
15
|
multipart-post (~> 1.1)
|
31
|
-
ffi (1.
|
32
|
-
|
33
|
-
iron_core (0.2.0)
|
16
|
+
ffi (1.1.3)
|
17
|
+
iron_core (0.3.3)
|
34
18
|
rest (>= 2.0.0)
|
35
19
|
mime-types (1.19)
|
36
20
|
multipart-post (1.1.5)
|
37
21
|
net-http-persistent (2.7)
|
38
22
|
rake (0.9.2.2)
|
39
|
-
rest (2.0.
|
23
|
+
rest (2.0.2)
|
40
24
|
net-http-persistent
|
41
25
|
rest-client (>= 0.3.0)
|
42
26
|
rest-client (1.6.7)
|
@@ -45,7 +29,7 @@ GEM
|
|
45
29
|
typhoeus (0.4.2)
|
46
30
|
ffi (~> 1.0)
|
47
31
|
mime-types (~> 1.18)
|
48
|
-
uber_config (0.0.
|
32
|
+
uber_config (0.0.6)
|
49
33
|
|
50
34
|
PLATFORMS
|
51
35
|
ruby
|
data/lib/iron_mq/queues.rb
CHANGED
@@ -28,6 +28,13 @@ module IronMQ
|
|
28
28
|
ret
|
29
29
|
end
|
30
30
|
|
31
|
+
def clear(options={})
|
32
|
+
@client.logger.debug "Clearing queue #{options[:name]}"
|
33
|
+
r1 = @client.post("#{path(options)}/clear", options)
|
34
|
+
p r1
|
35
|
+
r1
|
36
|
+
end
|
37
|
+
|
31
38
|
# options:
|
32
39
|
# :name => can specify an alternative queue name
|
33
40
|
def get(options={})
|
@@ -74,6 +81,10 @@ module IronMQ
|
|
74
81
|
raw["name"]
|
75
82
|
end
|
76
83
|
|
84
|
+
def reload
|
85
|
+
load_queue
|
86
|
+
end
|
87
|
+
|
77
88
|
# Used if lazy loading
|
78
89
|
def load_queue
|
79
90
|
q = @client.queues.get(:name=>name)
|
@@ -82,6 +93,10 @@ module IronMQ
|
|
82
93
|
q
|
83
94
|
end
|
84
95
|
|
96
|
+
def clear()
|
97
|
+
@client.queues.clear(:name=>name)
|
98
|
+
end
|
99
|
+
|
85
100
|
def size
|
86
101
|
return raw["size"] if raw["size"]
|
87
102
|
return @size if @size
|
@@ -109,6 +124,7 @@ module IronMQ
|
|
109
124
|
def delete(id, options={})
|
110
125
|
@client.messages.delete(id, options.merge(:queue_name=>name))
|
111
126
|
end
|
127
|
+
|
112
128
|
end
|
113
129
|
|
114
130
|
end
|
data/lib/iron_mq/version.rb
CHANGED
data/test/long_run.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'concur'
|
3
|
+
require 'uber_config'
|
3
4
|
begin
|
4
5
|
require File.join(File.dirname(__FILE__), '..', 'lib', 'iron_mq')
|
5
6
|
rescue Exception => ex
|
@@ -9,15 +10,11 @@ end
|
|
9
10
|
|
10
11
|
require_relative 'long_run_worker'
|
11
12
|
|
12
|
-
@config =
|
13
|
+
@config = UberConfig.load
|
13
14
|
@num_to_add = 1000
|
14
15
|
|
15
|
-
#IronWorker.configure do |c|
|
16
|
-
# c.token = @config['iron_mq']['token']
|
17
|
-
# c.project_id = @config['iron_mq']['project_id']
|
18
|
-
#end
|
19
|
-
|
20
16
|
worker = LongRunWorker.new
|
17
|
+
worker.queue_name = "concur5"
|
21
18
|
worker.config = @config
|
22
19
|
worker.num_to_add = @num_to_add
|
23
20
|
worker.run
|
data/test/long_run_worker.rb
CHANGED
@@ -3,12 +3,12 @@ require 'iron_mq'
|
|
3
3
|
|
4
4
|
class LongRunWorker
|
5
5
|
|
6
|
-
attr_accessor :config, :num_to_add
|
6
|
+
attr_accessor :config, :num_to_add, :queue_name
|
7
7
|
|
8
8
|
def run
|
9
9
|
|
10
10
|
@client = IronMQ::Client.new(@config['iron'])
|
11
|
-
@client.queue_name
|
11
|
+
queue = @client.queue(queue_name)
|
12
12
|
|
13
13
|
@error_count = 0
|
14
14
|
|
@@ -19,7 +19,7 @@ class LongRunWorker
|
|
19
19
|
task = executor.execute do
|
20
20
|
begin
|
21
21
|
puts "POST #{i}..."
|
22
|
-
res =
|
22
|
+
res = queue.post("hello world! #{i}")
|
23
23
|
rescue => ex
|
24
24
|
puts "ERROR! #{ex.class.name}: #{ex.message} -- #{ex.backtrace.inspect}"
|
25
25
|
@error_count += 1
|
@@ -34,26 +34,40 @@ class LongRunWorker
|
|
34
34
|
puts "waiting #{i}, queue size=#{executor.queue_size}"
|
35
35
|
sleep 2
|
36
36
|
end
|
37
|
-
|
38
|
-
|
39
37
|
put_time = (Time.now.to_f - start.to_f)
|
40
38
|
puts "Finished pushing in #{put_time} seconds"
|
41
39
|
|
40
|
+
queue = @client.queue(queue_name)
|
41
|
+
queue_size_after_push = queue.size
|
42
|
+
puts "QUEUE SIZE: #{queue_size_after_push}"
|
43
|
+
|
42
44
|
#exit if true
|
43
45
|
|
44
46
|
start = Time.now
|
45
47
|
puts "Getting and deleting #{@num_to_add} items at #{start}..."
|
46
48
|
@num_to_add.times do |i|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
task = executor.execute do
|
50
|
+
puts "GET #{i}..."
|
51
|
+
res = queue.get()
|
52
|
+
p res
|
53
|
+
puts "DELETE #{i}..."
|
54
|
+
res = queue.delete(res.id)
|
55
|
+
p res
|
56
|
+
end
|
57
|
+
end
|
58
|
+
i = 0
|
59
|
+
while executor.queue_size > 0 do
|
60
|
+
i += 1
|
61
|
+
puts "waiting #{i}, queue size=#{executor.queue_size}"
|
62
|
+
sleep 2
|
53
63
|
end
|
54
64
|
|
65
|
+
queue = @client.queue(queue_name)
|
66
|
+
|
55
67
|
puts "Finished pushing #{@num_to_add} items in #{put_time} seconds."
|
68
|
+
puts "QUEUE SIZE after push: #{queue_size_after_push}"
|
56
69
|
puts "Finished getting and deleting #{@num_to_add} items in #{(Time.now.to_f - start.to_f)} seconds."
|
70
|
+
puts "QUEUE SIZE after delete: #{queue.size}"
|
57
71
|
puts "Errors: #{@error_count}"
|
58
72
|
|
59
73
|
executor.shutdown
|
data/test/quick_run.rb
CHANGED
data/test/test_beanstalkd.rb
CHANGED
data/test/test_iron_mq.rb
CHANGED
@@ -19,7 +19,7 @@ class IronMQTests < TestBase
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_performance_post_100_messages
|
22
|
-
@client.queue_name = '
|
22
|
+
@client.queue_name = 'test_basics3'
|
23
23
|
# slower to rackspace since this is running on aws
|
24
24
|
timeout = @client.host.include?('rackspace') ? 40 : 10
|
25
25
|
assert_performance timeout do
|
@@ -31,7 +31,7 @@ class IronMQTests < TestBase
|
|
31
31
|
|
32
32
|
|
33
33
|
def test_basics
|
34
|
-
@client.queue_name = '
|
34
|
+
@client.queue_name = 'test_basics3'
|
35
35
|
clear_queue
|
36
36
|
|
37
37
|
res = @client.messages.post("hello world!")
|
@@ -41,6 +41,7 @@ class IronMQTests < TestBase
|
|
41
41
|
assert res.msg
|
42
42
|
|
43
43
|
queue = @client.queues.get(:name => @client.queue_name)
|
44
|
+
p queue
|
44
45
|
assert queue.size == 1
|
45
46
|
res = @client.messages.get()
|
46
47
|
p res
|
@@ -75,7 +76,7 @@ class IronMQTests < TestBase
|
|
75
76
|
|
76
77
|
|
77
78
|
# new style of referencing queue
|
78
|
-
queue = @client.queue("
|
79
|
+
queue = @client.queue("test_basics3")
|
79
80
|
v = "hello big world"
|
80
81
|
res = queue.post(v)
|
81
82
|
p res
|
@@ -185,7 +186,7 @@ class IronMQTests < TestBase
|
|
185
186
|
assert res.size == 0
|
186
187
|
|
187
188
|
|
188
|
-
queue = @client.queue("
|
189
|
+
queue = @client.queue("test_basics3")
|
189
190
|
assert queue.name
|
190
191
|
assert queue.size
|
191
192
|
|
@@ -237,61 +238,62 @@ class IronMQTests < TestBase
|
|
237
238
|
end
|
238
239
|
end
|
239
240
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
241
|
+
def test_release
|
242
|
+
puts 'test_release'
|
243
|
+
@client.queue_name = "test_release"
|
244
|
+
clear_queue
|
245
|
+
msgTxt = "testMessage-"+Time.now.to_s
|
246
|
+
puts msgTxt
|
247
|
+
msg_id = @client.messages.post(msgTxt, {:timeout => 60*5}).id
|
248
|
+
puts "msg_id: #{msg_id}"
|
249
|
+
msg = @client.messages.get
|
250
|
+
p msg
|
251
|
+
assert msg.id == msg_id
|
252
|
+
# Ok, so should have received same message, now let's release it quicker than the original timeout
|
253
|
+
|
254
|
+
# but first, ensure the next get is nil
|
255
|
+
msg = @client.messages.get
|
256
|
+
p msg
|
257
|
+
assert msg.nil?
|
258
|
+
|
259
|
+
# now release it instantly
|
260
|
+
@client.messages.release(msg_id)
|
261
|
+
msg = @client.messages.get
|
262
|
+
p msg
|
263
|
+
assert msg
|
264
|
+
assert msg.id == msg_id
|
265
|
+
|
266
|
+
# ok, so should be reserved again
|
267
|
+
msgr = @client.messages.get
|
268
|
+
p msgr
|
269
|
+
assert msgr.nil?
|
270
|
+
|
271
|
+
# let's release it in 10 seconds
|
272
|
+
@client.messages.release(msg_id, :delay=>10)
|
273
|
+
msg = @client.messages.get
|
274
|
+
p msg
|
275
|
+
assert msg.nil?
|
276
|
+
|
277
|
+
sleep 11
|
278
|
+
|
279
|
+
msg = @client.messages.get
|
280
|
+
p msg
|
281
|
+
assert msg
|
282
|
+
|
283
|
+
msg.release(:delay => 5)
|
284
|
+
msg = @client.messages.get
|
285
|
+
p msg
|
286
|
+
assert msg.nil?
|
287
|
+
|
288
|
+
sleep 6
|
289
|
+
|
290
|
+
msg = @client.messages.get
|
291
|
+
p msg
|
292
|
+
assert msg
|
293
|
+
|
294
|
+
end
|
295
|
+
|
296
|
+
|
295
297
|
|
296
298
|
end
|
297
299
|
|
data/test/tmp.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Put config.yml file in ~/Dropbox/configs/ironmq_gem/test/config.yml
|
2
|
+
|
3
|
+
#$abt_config = {:hello=>'abt_config_ya'}
|
4
|
+
|
5
|
+
gem 'test-unit'
|
6
|
+
require 'test/unit'
|
7
|
+
require 'yaml'
|
8
|
+
require_relative 'test_base'
|
9
|
+
|
10
|
+
class IronMQTests < TestBase
|
11
|
+
def setup
|
12
|
+
super
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_clear
|
17
|
+
|
18
|
+
q = @client.queue("clearer")
|
19
|
+
|
20
|
+
clear_queue(q.name)
|
21
|
+
|
22
|
+
val = "hi mr clean"
|
23
|
+
q.post(val)
|
24
|
+
assert q.size == 1
|
25
|
+
|
26
|
+
q.clear
|
27
|
+
msg = q.get
|
28
|
+
assert msg.nil?
|
29
|
+
|
30
|
+
q.reload
|
31
|
+
|
32
|
+
assert q.size == 0
|
33
|
+
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
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: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: iron_core
|
@@ -165,6 +165,7 @@ files:
|
|
165
165
|
- test/test_beanstalkd.rb
|
166
166
|
- test/test_bulk.rb
|
167
167
|
- test/test_iron_mq.rb
|
168
|
+
- test/tmp.rb
|
168
169
|
homepage: https://github.com/iron-io/iron_mq_ruby
|
169
170
|
licenses: []
|
170
171
|
post_install_message:
|
@@ -198,3 +199,4 @@ test_files:
|
|
198
199
|
- test/test_beanstalkd.rb
|
199
200
|
- test/test_bulk.rb
|
200
201
|
- test/test_iron_mq.rb
|
202
|
+
- test/tmp.rb
|