bunnish 0.0.3 → 0.0.4
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/VERSION +1 -1
- data/bunnish.gemspec +6 -2
- data/lib/bunnish/command/count.rb +1 -1
- data/lib/bunnish/command/delete.rb +5 -3
- data/lib/bunnish/command/help.rb +17 -6
- data/lib/bunnish/command/publish.rb +23 -63
- data/lib/bunnish/command/status.rb +1 -1
- data/lib/bunnish/command/subscribe.rb +9 -30
- data/lib/bunnish/core/common.rb +19 -0
- data/lib/bunnish/core/publish.rb +50 -0
- data/lib/bunnish/core/subscribe.rb +16 -0
- data/lib/bunnish/core.rb +3 -0
- data/lib/bunnish.rb +21 -0
- data/spec/bin/bunnish_spec.rb +51 -17
- data/spec/spec_helper.rb +10 -1
- metadata +8 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/bunnish.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "bunnish"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kenji Hara"]
|
12
|
-
s.date = "2012-12-
|
12
|
+
s.date = "2012-12-09"
|
13
13
|
s.description = "Command for AMQP access to Message Queue."
|
14
14
|
s.email = "haracane@gmail.com"
|
15
15
|
s.executables = ["bunnish"]
|
@@ -35,6 +35,10 @@ Gem::Specification.new do |s|
|
|
35
35
|
"lib/bunnish/command/publish.rb",
|
36
36
|
"lib/bunnish/command/status.rb",
|
37
37
|
"lib/bunnish/command/subscribe.rb",
|
38
|
+
"lib/bunnish/core.rb",
|
39
|
+
"lib/bunnish/core/common.rb",
|
40
|
+
"lib/bunnish/core/publish.rb",
|
41
|
+
"lib/bunnish/core/subscribe.rb",
|
38
42
|
"spec/bin/bunnish_spec.rb",
|
39
43
|
"spec/lib/bunnish/command/count_spec.rb",
|
40
44
|
"spec/lib/bunnish/command/delete_spec.rb",
|
@@ -16,6 +16,8 @@ module Bunnish::Command
|
|
16
16
|
user = params[:user]
|
17
17
|
password = params[:password]
|
18
18
|
durable = params[:durable]
|
19
|
+
|
20
|
+
log_label = params[:log_label]
|
19
21
|
|
20
22
|
queue_name_list = argv.shift
|
21
23
|
|
@@ -34,16 +36,16 @@ module Bunnish::Command
|
|
34
36
|
queue = bunny.queue(queue_name, :durable=>durable)
|
35
37
|
|
36
38
|
if queue.nil? then
|
37
|
-
|
39
|
+
Bunnish.logger.info "#{log_label} #{queue_name} does not exist"
|
38
40
|
next
|
39
41
|
end
|
40
42
|
|
41
43
|
result = queue.delete
|
42
44
|
|
43
45
|
if result == :delete_ok then
|
44
|
-
|
46
|
+
Bunnish.logger.info "#{log_label} deleted #{queue_name}"
|
45
47
|
else
|
46
|
-
|
48
|
+
Bunnish.logger.warn "#{log_label} failed to delete #{queue_name}"
|
47
49
|
exit_code = 1
|
48
50
|
end
|
49
51
|
end
|
data/lib/bunnish/command/help.rb
CHANGED
@@ -1,11 +1,22 @@
|
|
1
1
|
module Bunnish::Command
|
2
2
|
module Help
|
3
|
-
def self.run(argv, input_stream=$stdin, output_stream=$stdout
|
4
|
-
output_stream.puts
|
5
|
-
usage: bunnish COMMAND
|
6
|
-
|
7
|
-
|
3
|
+
def self.run(argv, input_stream=$stdin, output_stream=$stdout)
|
4
|
+
output_stream.puts <<-EOF
|
5
|
+
usage: bunnish COMMAND [-h HOST] [-p PORT] [-u USER] [-P PASSWORD]
|
6
|
+
[--durable FLAG] [--ack FLAG] [--raise-exception]
|
7
|
+
[--log-label LABEL] [--log-dir DIR] [--log-file FILE]
|
8
|
+
-h HOST message queue server address. default is localhost.
|
9
|
+
-p PORT port number. default is 5672.
|
10
|
+
-u USER user name. default is 'guest'.
|
11
|
+
-P PASSWORD password. default is 'guest'.
|
12
|
+
--durable FLAG FLAG=t:disk queue; FLAG=f:memory queue(default).
|
13
|
+
--ack FLAG FLAG=t:enable ack(default); FLAG=t:disable ack.
|
14
|
+
--raise-exception raise exception.
|
15
|
+
--log-label LABEL set log label.
|
16
|
+
--log-dir DIR set log directory.
|
17
|
+
--log-file FILE set log file.
|
18
|
+
EOF
|
8
19
|
return 0
|
9
20
|
end
|
10
21
|
end
|
11
|
-
end
|
22
|
+
end
|
@@ -1,27 +1,6 @@
|
|
1
1
|
module Bunnish::Command
|
2
2
|
module Publish
|
3
|
-
def self.
|
4
|
-
streams.each do |stream|
|
5
|
-
if stream then
|
6
|
-
stream.puts message
|
7
|
-
stream.flush
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.output_publish_log(streams, queue, count, log_label)
|
13
|
-
message_count = '?'
|
14
|
-
consumer_count = '?'
|
15
|
-
begin
|
16
|
-
message_count = queue.status[:message_count]
|
17
|
-
consumer_count = queue.status[:consumer_count]
|
18
|
-
rescue Exception=>e
|
19
|
-
end
|
20
|
-
|
21
|
-
self.output_log streams, Time.now.strftime("[%Y-%m-%d %H:%M:%S](INFO)#{log_label} published #{count} messages into #{queue.name}(#{message_count} messages, #{consumer_count} consumers)")
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.run(argv, input_stream=$stdin, output_stream=$stdout, error_stream=$stderr)
|
3
|
+
def self.run(argv, input_stream=$stdin, output_stream=$stdout)
|
25
4
|
|
26
5
|
params = Bunnish.parse_opts(argv)
|
27
6
|
|
@@ -55,60 +34,44 @@ module Bunnish::Command
|
|
55
34
|
if log_path then
|
56
35
|
log_stream = open(log_path, "a")
|
57
36
|
log_streams[queue_name] = log_stream
|
58
|
-
|
37
|
+
Bunnish.logger.info "#{log_label} output log into #{log_path}"
|
59
38
|
end
|
60
39
|
end
|
61
40
|
|
62
41
|
fanout_flag = (exchange_name && exchange_name != '' && 1 < queue_name_list.size)
|
63
42
|
|
64
43
|
bunny = nil
|
65
|
-
direct_exchange = nil
|
66
44
|
|
67
45
|
publish_flag = false
|
68
46
|
|
47
|
+
exchange_list = []
|
48
|
+
|
69
49
|
begin
|
70
|
-
direct_exchange_list = nil
|
71
|
-
|
72
50
|
# publish message to exchange
|
73
51
|
count = 0
|
74
52
|
|
75
53
|
lines = []
|
76
54
|
|
77
|
-
|
78
55
|
while line = input_stream.gets do
|
79
56
|
if bunny == nil then
|
80
57
|
bunny = Bunny.new(:logging => false, :spec => '09', :host=>host, :port=>port, :user=>user, :pass=>password)
|
81
|
-
|
82
58
|
# start a communication session with the amqp server
|
83
59
|
bunny.start
|
84
|
-
|
85
60
|
# create/get exchange
|
86
61
|
if fanout_flag then
|
87
|
-
|
88
|
-
|
89
|
-
queue_name_list.each do |queue_name|
|
90
|
-
# create/get queue
|
91
|
-
error_stream.puts Time.now.strftime("[%Y-%m-%d %H:%M:%S]") + "(INFO)#{log_label} create queue '#{queue_name}'"
|
92
|
-
queue = bunny.queue(queue_name, :durable=>durable)
|
93
|
-
error_stream.puts Time.now.strftime("[%Y-%m-%d %H:%M:%S]") + "(INFO)#{log_label} bind queue '#{queue_name}' to fanout exchange '#{exchange_name}'"
|
94
|
-
queue.bind(fanout_exchange)
|
95
|
-
self.output_log [error_stream, log_streams[queue_name]], Time.now.strftime("[%Y-%m-%d %H:%M:%S](INFO)#{log_label} publish to #{queue_name}(#{queue.status[:message_count]} messages, #{queue.status[:consumer_count]} consumers)")
|
96
|
-
end
|
62
|
+
fanout_exchange = Bunnish::Core::Publish.create_fanout_exchange(bunny, queue_name_list, log_streams, params)
|
63
|
+
exchange_list.push fanout_exchange
|
97
64
|
else
|
98
|
-
direct_exchange_list = queue_name_list.map {
|
99
|
-
|
100
|
-
error_stream.puts Time.now.strftime("[%Y-%m-%d %H:%M:%S]") + "(INFO)#{log_label} create direct exchange '#{queue_name}'"
|
101
|
-
direct_exchange = bunny.exchange(queue_name, :type=>:direct)
|
102
|
-
|
103
|
-
error_stream.puts Time.now.strftime("[%Y-%m-%d %H:%M:%S]") + "(INFO)#{log_label} create queue '#{queue_name}'"
|
104
|
-
queue = bunny.queue(queue_name, :durable=>durable)
|
105
|
-
|
106
|
-
error_stream.puts Time.now.strftime("[%Y-%m-%d %H:%M:%S]") + "(INFO)#{log_label} bind queue '#{queue_name}' to direct exchange '#{queue_name}'"
|
107
|
-
queue.bind(direct_exchange)
|
108
|
-
self.output_log [error_stream, log_streams[queue_name]], Time.now.strftime("[%Y-%m-%d %H:%M:%S](INFO)#{log_label} publish to #{queue_name}(#{queue.status[:message_count]} messages, #{queue.status[:consumer_count]} consumers)")
|
109
|
-
|
110
|
-
direct_exchange
|
65
|
+
direct_exchange_list = queue_name_list.map {|queue_name|
|
66
|
+
Bunnish::Core::Publish.create_direct_exchange(bunny, queue_name, log_streams, params)
|
111
67
|
}
|
68
|
+
exchange_list = direct_exchange_list
|
69
|
+
end
|
70
|
+
|
71
|
+
queue_name_list.each do |queue_name|
|
72
|
+
queue = bunny.queue(queue_name, :durable=>durable)
|
73
|
+
message = "#{log_label} publish to #{queue_name}(#{queue.status[:message_count]} messages, #{queue.status[:consumer_count]} consumers)"
|
74
|
+
Bunnish::Core::Common.output_log [log_streams[queue_name]], "INFO", message
|
112
75
|
end
|
113
76
|
end
|
114
77
|
|
@@ -121,13 +84,10 @@ module Bunnish::Command
|
|
121
84
|
message = line
|
122
85
|
end
|
123
86
|
|
124
|
-
|
125
|
-
|
126
|
-
else
|
127
|
-
direct_exchange_list.each do |direct_exchange|
|
128
|
-
direct_exchange.publish(message)
|
129
|
-
end
|
87
|
+
exchange_list.each do |exchange|
|
88
|
+
exchange.publish(message)
|
130
89
|
end
|
90
|
+
|
131
91
|
count += 1
|
132
92
|
|
133
93
|
if unit_size <= count then
|
@@ -135,7 +95,7 @@ module Bunnish::Command
|
|
135
95
|
queue_name_list.each do |queue_name|
|
136
96
|
queue = bunny.queue(queue_name, :durable=>durable)
|
137
97
|
log_stream = log_streams[queue_name]
|
138
|
-
|
98
|
+
Bunnish::Core::Publish.output_publish_log [log_stream], queue, count, log_label
|
139
99
|
end
|
140
100
|
count = 0
|
141
101
|
end
|
@@ -147,9 +107,9 @@ module Bunnish::Command
|
|
147
107
|
log_stream = log_streams[queue_name]
|
148
108
|
if bunny then
|
149
109
|
queue = bunny.queue(queue_name, :durable=>durable)
|
150
|
-
|
110
|
+
Bunnish::Core::Publish.output_publish_log [log_stream], queue, count, log_label if 0 < count || !publish_flag
|
151
111
|
else
|
152
|
-
|
112
|
+
Bunnish::Core::Common.output_log [log_stream], "INFO", "#{log_label} no input for #{queue_name}"
|
153
113
|
end
|
154
114
|
end
|
155
115
|
|
@@ -160,8 +120,8 @@ module Bunnish::Command
|
|
160
120
|
bunny.stop if bunny
|
161
121
|
raise e if raise_exception_flag
|
162
122
|
else
|
163
|
-
message =
|
164
|
-
|
123
|
+
message = "#{log_label} #{e.message}(#{e.class.name}): #{e.backtrace.map{|s| " #{s}"}.join("\n")}"
|
124
|
+
Bunnish::Core::Common.output_log(log_streams.values, "EXCEPTION", message)
|
165
125
|
end
|
166
126
|
end
|
167
127
|
|
@@ -1,27 +1,6 @@
|
|
1
1
|
module Bunnish::Command
|
2
2
|
module Subscribe
|
3
|
-
def self.
|
4
|
-
streams.each do |stream|
|
5
|
-
if stream then
|
6
|
-
stream.puts message
|
7
|
-
stream.flush
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.output_subscribe_log(streams, queue, count, log_label)
|
13
|
-
message_count = '?'
|
14
|
-
consumer_count = '?'
|
15
|
-
begin
|
16
|
-
message_count = queue.status[:message_count]
|
17
|
-
consumer_count = queue.status[:consumer_count]
|
18
|
-
rescue Exception=>e
|
19
|
-
end
|
20
|
-
|
21
|
-
self.output_log streams, Time.now.strftime("[%Y-%m-%d %H:%M:%S](INFO)#{log_label} subscribed #{count} messages from #{queue.name}(#{message_count} messages, #{consumer_count} consumers)")
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.run(argv, input_stream=$stdin, output_stream=$stdout, error_stream=$stderr)
|
3
|
+
def self.run(argv, input_stream=$stdin, output_stream=$stdout)
|
25
4
|
params = Bunnish.parse_opts(argv)
|
26
5
|
|
27
6
|
host = params[:host]
|
@@ -51,7 +30,7 @@ module Bunnish::Command
|
|
51
30
|
|
52
31
|
if log_path
|
53
32
|
log_stream = open(log_path, "a")
|
54
|
-
|
33
|
+
Bunnish.logger.info "#{log_label} output log into #{log_path}"
|
55
34
|
end
|
56
35
|
|
57
36
|
exchange_name = queue_name
|
@@ -79,15 +58,15 @@ module Bunnish::Command
|
|
79
58
|
end
|
80
59
|
|
81
60
|
if message_max
|
82
|
-
|
61
|
+
Bunnish::Core::Common.output_log [log_stream], "INFO", "#{log_label} subscribe #{message_max} messages from #{queue_name}(#{remain_count} messages, #{consumer_count} consumers)"
|
83
62
|
|
84
63
|
if message_max <= 0
|
85
|
-
|
64
|
+
Bunnish::Core::Common.output_log [log_stream], "INFO", "#{log_label} finished"
|
86
65
|
bunny.stop
|
87
66
|
return 0
|
88
67
|
end
|
89
68
|
else
|
90
|
-
|
69
|
+
Bunnish::Core::Common.output_log [log_stream], "INFO", "#{log_label} subscribe from #{queue_name}(#{remain_count} messages, #{consumer_count} consumers)"
|
91
70
|
end
|
92
71
|
|
93
72
|
if !exchange_name.nil? && exchange_name != '' then
|
@@ -101,7 +80,7 @@ module Bunnish::Command
|
|
101
80
|
subscribe_flag = false
|
102
81
|
|
103
82
|
if remain_count == 0 then
|
104
|
-
|
83
|
+
Bunnish::Core::Common.output_log [log_stream], "INFO", "#{log_label} no messages in #{queue_name}(#{remain_count} messages, #{consumer_count} consumers)"
|
105
84
|
else
|
106
85
|
# subscribe to queue
|
107
86
|
begin
|
@@ -116,7 +95,7 @@ module Bunnish::Command
|
|
116
95
|
total_count += 1
|
117
96
|
if unit_size <= count then
|
118
97
|
subscribe_flag = true
|
119
|
-
|
98
|
+
Bunnish::Core::Common.output_log [log_stream], "INFO", "#{log_label} subscribed #{count} messages from #{queue_name}"
|
120
99
|
count = 0
|
121
100
|
break if min_size && remain_count <= total_count + min_size
|
122
101
|
end
|
@@ -127,14 +106,14 @@ module Bunnish::Command
|
|
127
106
|
bunny.stop if bunny
|
128
107
|
raise e if raise_exception_flag
|
129
108
|
else
|
130
|
-
|
109
|
+
Bunnish::Core::Common.output_log [log_stream], "EXCEPTION", "#{log_label} #{e.message}(#{e.class.name}): #{e.backtrace.map{|s| " #{s}"}.join("\n")}"
|
131
110
|
end
|
132
111
|
end
|
133
112
|
end
|
134
113
|
|
135
114
|
subscribe_flag = true if 0 < count
|
136
115
|
|
137
|
-
|
116
|
+
Bunnish::Core::Subscribe.output_subscribe_log [log_stream], queue, count, log_label # if 0 < count || subscribe_flag
|
138
117
|
|
139
118
|
if log_stream then
|
140
119
|
log_stream.close
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Bunnish::Core
|
2
|
+
module Common
|
3
|
+
def self.output_log(streams, log_level, message)
|
4
|
+
case log_level
|
5
|
+
when "INFO"
|
6
|
+
Bunnish.logger.info(message)
|
7
|
+
when "EXCEPTION"
|
8
|
+
Bunnish.logger.warn(message)
|
9
|
+
end
|
10
|
+
message = Time.now.strftime("[%Y-%m-%d %H:%M:%S](#{log_level})#{message}")
|
11
|
+
streams.each do |stream|
|
12
|
+
if stream then
|
13
|
+
stream.puts message
|
14
|
+
stream.flush
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Bunnish::Core
|
2
|
+
module Publish
|
3
|
+
def self.output_publish_log(streams, queue, count, log_label)
|
4
|
+
message_count = '?'
|
5
|
+
consumer_count = '?'
|
6
|
+
begin
|
7
|
+
message_count = queue.status[:message_count]
|
8
|
+
consumer_count = queue.status[:consumer_count]
|
9
|
+
rescue Exception=>e
|
10
|
+
end
|
11
|
+
|
12
|
+
message = "#{log_label} published #{count} messages into #{queue.name}(#{message_count} messages, #{consumer_count} consumers)"
|
13
|
+
Bunnish::Core::Common.output_log(streams, "INFO", message)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.create_fanout_exchange(bunny, queue_name_list, log_streams={}, options={})
|
17
|
+
durable = options[:durable]
|
18
|
+
log_label = options[:log_label]
|
19
|
+
exchange_name = options[:exchange_name]
|
20
|
+
|
21
|
+
Bunnish.logger.info "#{log_label} create fanout exchange '#{exchange_name}'"
|
22
|
+
fanout_exchange = bunny.exchange(exchange_name, :type=>:fanout, :persistent=>durable)
|
23
|
+
|
24
|
+
queue_name_list.each do |queue_name|
|
25
|
+
# create/get queue
|
26
|
+
Bunnish.logger.info "#{log_label} create queue '#{queue_name}'"
|
27
|
+
queue = bunny.queue(queue_name, :durable=>durable)
|
28
|
+
Bunnish.logger.info "#{log_label} bind queue '#{queue_name}' to fanout exchange '#{exchange_name}'"
|
29
|
+
queue.bind(fanout_exchange)
|
30
|
+
end
|
31
|
+
return fanout_exchange
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.create_direct_exchange(bunny, queue_name, log_streams={}, options={})
|
35
|
+
durable = options[:durable]
|
36
|
+
log_label = options[:log_label]
|
37
|
+
|
38
|
+
Bunnish.logger.info "#{log_label} create direct exchange '#{queue_name}'"
|
39
|
+
direct_exchange = bunny.exchange(queue_name, :type=>:direct)
|
40
|
+
|
41
|
+
Bunnish.logger.info "#{log_label} create queue '#{queue_name}'"
|
42
|
+
queue = bunny.queue(queue_name, :durable=>durable)
|
43
|
+
|
44
|
+
Bunnish.logger.info "#{log_label} bind queue '#{queue_name}' to direct exchange '#{queue_name}'"
|
45
|
+
queue.bind(direct_exchange)
|
46
|
+
|
47
|
+
return direct_exchange
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Bunnish::Core
|
2
|
+
module Subscribe
|
3
|
+
def self.output_subscribe_log(streams, queue, count, log_label)
|
4
|
+
message_count = '?'
|
5
|
+
consumer_count = '?'
|
6
|
+
begin
|
7
|
+
message_count = queue.status[:message_count]
|
8
|
+
consumer_count = queue.status[:consumer_count]
|
9
|
+
rescue Exception=>e
|
10
|
+
end
|
11
|
+
|
12
|
+
message = "#{log_label} subscribed #{count} messages from #{queue.name}(#{message_count} messages, #{consumer_count} consumers)"
|
13
|
+
Bunnish::Core::Common.output_log(streams, "INFO", message)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/bunnish/core.rb
ADDED
data/lib/bunnish.rb
CHANGED
@@ -111,6 +111,27 @@ module Bunnish
|
|
111
111
|
}
|
112
112
|
|
113
113
|
end
|
114
|
+
|
115
|
+
def self.logger
|
116
|
+
@logger ||= (rails_logger || default_logger)
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.rails_logger
|
120
|
+
(defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger) ||
|
121
|
+
(defined?(RAILS_DEFAULT_LOGGER) && RAILS_DEFAULT_LOGGER.respond_to?(:debug) && RAILS_DEFAULT_LOGGER)
|
122
|
+
end
|
123
|
+
|
124
|
+
def self.default_logger
|
125
|
+
require 'logger'
|
126
|
+
l = Logger.new(STDERR)
|
127
|
+
l.level = Logger::INFO
|
128
|
+
l
|
129
|
+
end
|
130
|
+
|
131
|
+
def self.logger=(logger)
|
132
|
+
@logger = logger
|
133
|
+
end
|
114
134
|
end
|
115
135
|
|
116
136
|
require "bunnish/command"
|
137
|
+
require "bunnish/core"
|
data/spec/bin/bunnish_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe "bin/bunnish" do
|
4
4
|
before :all do
|
5
|
-
@
|
5
|
+
@stderr_dst = Bunnish::REDIRECT[:stderr]
|
6
6
|
@input_file = Tempfile.new("bunnish")
|
7
7
|
@input_file.puts "foo"
|
8
8
|
@input_file.puts "bar"
|
@@ -17,18 +17,18 @@ describe "bin/bunnish" do
|
|
17
17
|
`cat #{@input_file.path} | #{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish publish bunnish-test-queue 2> /dev/null`
|
18
18
|
end
|
19
19
|
after :each do
|
20
|
-
`#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish delete bunnish-test-queue 2> /dev/null`
|
20
|
+
`#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish delete bunnish-test-queue,bunnish-test-queue-2 2> /dev/null`
|
21
21
|
end
|
22
22
|
describe "count" do
|
23
23
|
it "should output valid queue count" do
|
24
|
-
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish count bunnish-test-queue
|
24
|
+
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish count bunnish-test-queue #{@stderr_dst}`
|
25
25
|
result.chomp!
|
26
26
|
result.should == "3"
|
27
27
|
end
|
28
28
|
end
|
29
29
|
describe "delete" do
|
30
30
|
it "should delete queue" do
|
31
|
-
`#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish delete bunnish-test-queue
|
31
|
+
`#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish delete bunnish-test-queue #{@stderr_dst}`
|
32
32
|
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish count bunnish-test-queue 2> /dev/null`
|
33
33
|
result = result.chomp!
|
34
34
|
result.should == "0"
|
@@ -36,27 +36,61 @@ describe "bin/bunnish" do
|
|
36
36
|
end
|
37
37
|
describe "help" do
|
38
38
|
it "should delete queue" do
|
39
|
-
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish help bunnish-test-queue
|
39
|
+
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish help bunnish-test-queue #{@stderr_dst}`
|
40
40
|
result.split().size.should > 0
|
41
41
|
$?.should == 0
|
42
42
|
end
|
43
43
|
end
|
44
44
|
describe "publish" do
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
45
|
+
context "when exchange-name is not set" do
|
46
|
+
it "should publish valid messages with direct exchange" do
|
47
|
+
`cat #{@input_file.path} | #{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish publish bunnish-test-queue,bunnish-test-queue-2 #{@stderr_dst}`
|
48
|
+
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish subscribe bunnish-test-queue 2> /dev/null`
|
49
|
+
result = result.split()
|
50
|
+
# result.each do |line| STDERR.puts line end
|
51
|
+
result.shift.should == "foo"
|
52
|
+
result.shift.should == "bar"
|
53
|
+
result.shift.should == "baz"
|
54
|
+
result.shift.should == "foo"
|
55
|
+
result.shift.should == "bar"
|
56
|
+
result.shift.should == "baz"
|
57
|
+
result.size.should == 0
|
58
|
+
|
59
|
+
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish subscribe bunnish-test-queue-2 2> /dev/null`
|
60
|
+
result = result.split()
|
61
|
+
result.shift.should == "foo"
|
62
|
+
result.shift.should == "bar"
|
63
|
+
result.shift.should == "baz"
|
64
|
+
result.size.should == 0
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context "when exchange-name is set" do
|
69
|
+
it "should publish valid messages with fanout exchange" do
|
70
|
+
`cat #{@input_file.path} | #{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish publish --exchange-name bunnish-test-exchange bunnish-test-queue,bunnish-test-queue-2 #{@stderr_dst}`
|
71
|
+
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish subscribe bunnish-test-queue 2> /dev/null`
|
72
|
+
result = result.split()
|
73
|
+
# result.each do |line| STDERR.puts line end
|
74
|
+
result.shift.should == "foo"
|
75
|
+
result.shift.should == "bar"
|
76
|
+
result.shift.should == "baz"
|
77
|
+
result.shift.should == "foo"
|
78
|
+
result.shift.should == "bar"
|
79
|
+
result.shift.should == "baz"
|
80
|
+
result.size.should == 0
|
81
|
+
|
82
|
+
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish subscribe bunnish-test-queue-2 2> /dev/null`
|
83
|
+
result = result.split()
|
84
|
+
result.shift.should == "foo"
|
85
|
+
result.shift.should == "bar"
|
86
|
+
result.shift.should == "baz"
|
87
|
+
result.size.should == 0
|
88
|
+
end
|
55
89
|
end
|
56
90
|
end
|
57
91
|
describe "status" do
|
58
92
|
it "should print valid status of message queue" do
|
59
|
-
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish status bunnish-test-queue
|
93
|
+
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish status bunnish-test-queue #{@stderr_dst}`
|
60
94
|
result = result.split(/\n/)
|
61
95
|
# STDERR.puts result.inspect
|
62
96
|
result.include?("bunnish-test-queue : 3 messages, 0 consumers").should be_true
|
@@ -64,7 +98,7 @@ describe "bin/bunnish" do
|
|
64
98
|
end
|
65
99
|
describe "subscribe" do
|
66
100
|
it "should subscribe valid messages" do
|
67
|
-
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish subscribe bunnish-test-queue
|
101
|
+
result = `#{Bunnish::RUBY_CMD} #{Bunnish::BIN_DIR}/bunnish subscribe bunnish-test-queue #{@stderr_dst}`
|
68
102
|
result = result.split()
|
69
103
|
# result.each do |line| STDERR.puts line end
|
70
104
|
result.shift.should == "foo"
|
data/spec/spec_helper.rb
CHANGED
@@ -17,5 +17,14 @@ module Bunnish
|
|
17
17
|
BIN_DIR = "#{BUNNISH_HOME}/bin"
|
18
18
|
LIB_DIR = "#{BUNNISH_HOME}/lib"
|
19
19
|
RUBY_CMD = "/usr/bin/env ruby -I #{LIB_DIR}"
|
20
|
-
REDIRECT = {:stderr=>"/dev/null"}
|
20
|
+
REDIRECT = {:stderr=>"2> /dev/null"}
|
21
|
+
end
|
22
|
+
|
23
|
+
Bunnish.logger = Logger.new(STDERR)
|
24
|
+
if File.exist?('/tmp/bunnish.debug') then
|
25
|
+
Bunnish.logger.level = Logger::DEBUG
|
26
|
+
Bunnish::REDIRECT[:stderr] = nil
|
27
|
+
else
|
28
|
+
Bunnish.logger.level = Logger::ERROR
|
29
|
+
Bunnish::REDIRECT[:stderr] = "2> /dev/null"
|
21
30
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bunnish
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kenji Hara
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-12-
|
18
|
+
date: 2012-12-09 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: json
|
@@ -147,6 +147,10 @@ files:
|
|
147
147
|
- lib/bunnish/command/publish.rb
|
148
148
|
- lib/bunnish/command/status.rb
|
149
149
|
- lib/bunnish/command/subscribe.rb
|
150
|
+
- lib/bunnish/core.rb
|
151
|
+
- lib/bunnish/core/common.rb
|
152
|
+
- lib/bunnish/core/publish.rb
|
153
|
+
- lib/bunnish/core/subscribe.rb
|
150
154
|
- spec/bin/bunnish_spec.rb
|
151
155
|
- spec/lib/bunnish/command/count_spec.rb
|
152
156
|
- spec/lib/bunnish/command/delete_spec.rb
|