rubywmq 1.0.0 → 1.1.1
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/README +1 -1
- data/examples/put1_a.rb +25 -25
- data/examples/q_to_files.rb +48 -48
- data/ext/build.sh +0 -0
- data/ext/decode_rfh.c +348 -348
- data/ext/decode_rfh.h +45 -45
- data/ext/extconf.rb +44 -44
- data/ext/generate/generate_structs.rb +97 -97
- data/ext/generate/wmq_structs.erb +1 -18
- data/ext/wmq.c +93 -93
- data/ext/wmq.h +367 -350
- data/ext/wmq_message.c +671 -682
- data/ext/wmq_mq_load.c +217 -217
- data/ext/wmq_queue.c +1411 -1411
- data/ext/wmq_queue_manager.c +1570 -1581
- data/tests/test.rb +328 -300
- metadata +46 -47
data/tests/test.rb
CHANGED
@@ -1,300 +1,328 @@
|
|
1
|
-
# Shift include path to use locally built copy of rubywmq - For testing dev builds only
|
2
|
-
#$:.unshift '../lib'
|
3
|
-
|
4
|
-
require 'rubygems'
|
5
|
-
require 'wmq/wmq'
|
6
|
-
require 'wmq/wmq_const_admin'
|
7
|
-
require 'test/unit'
|
8
|
-
class TestTest < Test::Unit::TestCase
|
9
|
-
|
10
|
-
def setup
|
11
|
-
puts '****** setup: start ******'
|
12
|
-
@queue_manager = WMQ::QueueManager.new(:q_mgr_name => 'REID') #, :connection_name=>'localhost(1414)')
|
13
|
-
@queue_manager.connect
|
14
|
-
|
15
|
-
# Create Queue and clear any messages from the queue
|
16
|
-
@in_queue = WMQ::Queue.new(:queue_manager=>@queue_manager,
|
17
|
-
:mode=>:input,
|
18
|
-
:dynamic_q_name=>'UNIT.TEST.*',
|
19
|
-
:q_name=>'SYSTEM.DEFAULT.MODEL.QUEUE',
|
20
|
-
:fail_if_exists=>false)
|
21
|
-
@in_queue.open
|
22
|
-
@in_queue.each { |message| }
|
23
|
-
|
24
|
-
# Open same queue for Output. Queue should be created by now
|
25
|
-
@out_queue = WMQ::Queue.new(:queue_manager=>@queue_manager,
|
26
|
-
:mode=>:output,
|
27
|
-
:q_name=>@in_queue.name)
|
28
|
-
@out_queue.open
|
29
|
-
puts '****** setup: end ******'
|
30
|
-
end
|
31
|
-
|
32
|
-
def teardown
|
33
|
-
puts '****** teardown: start ******'
|
34
|
-
@out_queue.close
|
35
|
-
@in_queue.close
|
36
|
-
@queue_manager.disconnect
|
37
|
-
puts '****** teardown: end ******'
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_exceptions
|
41
|
-
puts '****** test_exceptions: start ******'
|
42
|
-
assert_raise(TypeError) { WMQ::QueueManager.new(1) }
|
43
|
-
assert_nothing_raised { WMQ::QueueManager.new(:exception_on_error=>nil) }
|
44
|
-
assert_raise(TypeError) { WMQ::QueueManager.new(:exception_on_error=>1) }
|
45
|
-
assert_raise(TypeError) { WMQ::QueueManager.new(:q_mgr_name=>2).connect }
|
46
|
-
assert_raise(WMQ::WMQException) { WMQ::QueueManager.new(:q_mgr_name=>'bad').connect }
|
47
|
-
puts '****** test_exceptions: end ******'
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_queue_manager
|
51
|
-
puts '****** test_queue_manager ******'
|
52
|
-
assert_equal(Object, WMQ::QueueManager.superclass)
|
53
|
-
assert_equal(WMQ::QueueManager, @queue_manager.class)
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_1
|
57
|
-
puts '****** test_1 ******'
|
58
|
-
assert_equal(@out_queue.put(:data=>'Hello World'), true)
|
59
|
-
message = WMQ::Message.new
|
60
|
-
assert_equal(@in_queue.get(:message=>message), true)
|
61
|
-
assert_equal(message.data, 'Hello World')
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_dynamic_buffer
|
65
|
-
puts '****** test_dynamic_buffer ******'
|
66
|
-
# Clear out queue of any messages
|
67
|
-
@in_queue.each { |message| }
|
68
|
-
|
69
|
-
test_sizes = [0, 1, 100, 101, 102, 500, 65534, 65535, 65536, 65537, 1*1024*1024, 4*1024*1024]
|
70
|
-
test_sizes.each do |size|
|
71
|
-
str = '0123456789ABCDEF' * (size/16) + '0123456789ABCDEF'[0,size%16]
|
72
|
-
assert_equal(str.length, size)
|
73
|
-
assert_equal(@out_queue.put(:data=>str), true)
|
74
|
-
end
|
75
|
-
|
76
|
-
# First test the browse mechanism
|
77
|
-
counter = 0
|
78
|
-
@queue_manager.open_queue(:mode=>:browse, :q_name=>@in_queue.name) do |browse_queue|
|
79
|
-
browse_queue.each do |message|
|
80
|
-
size = test_sizes[counter]
|
81
|
-
assert_equal(size, message.data.length)
|
82
|
-
str = '0123456789ABCDEF' * (size/16) + '0123456789ABCDEF'[0,size%16]
|
83
|
-
assert_equal(str, message.data)
|
84
|
-
counter = counter + 1
|
85
|
-
end
|
86
|
-
end
|
87
|
-
assert_equal(test_sizes.size, counter)
|
88
|
-
|
89
|
-
# Now retrieve the messages destructively
|
90
|
-
message = WMQ::Message.new
|
91
|
-
test_sizes.each do |size|
|
92
|
-
assert_equal(true, @in_queue.get(:message=>message, :match=>WMQ::MQMO_NONE))
|
93
|
-
assert_equal(size, message.data.length)
|
94
|
-
str = '0123456789ABCDEF' * (size/16) + '0123456789ABCDEF'[0,size%16]
|
95
|
-
assert_equal(str, message.data)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
def test_q_name_hash
|
100
|
-
puts '****** test_q_name_hash ******'
|
101
|
-
@queue_manager.open_queue(:mode=>:output,
|
102
|
-
:q_name=>{:q_name=>@in_queue.name,
|
103
|
-
:q_mgr_name=>@queue_manager.name}
|
104
|
-
) do |test_queue|
|
105
|
-
assert_equal(true, test_queue.put(:data=>'Hello World'))
|
106
|
-
message = WMQ::Message.new
|
107
|
-
assert_equal(true, @in_queue.get(:message=>message))
|
108
|
-
assert_equal('Hello World', message.data)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_execute
|
113
|
-
puts '****** test_execute ******'
|
114
|
-
array = @queue_manager.inquire_q(:q_name=>@in_queue.name, :q_type=>WMQ::MQQT_LOCAL, :current_q_depth=>nil)
|
115
|
-
assert_equal(1, array.size)
|
116
|
-
assert_equal(@in_queue.name, array[0][:q_name])
|
117
|
-
|
118
|
-
assert_equal(true, @queue_manager.inquire_process(:process_name=>'*').size>0)
|
119
|
-
assert_raise(WMQ::WMQException) { @queue_manager.inquire_q(:q_name=>'BADQUEUENAME*') }
|
120
|
-
assert_equal(1, @queue_manager.ping_q_mgr.size)
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_mqsc
|
124
|
-
puts '****** test_mqsc ******'
|
125
|
-
array = @queue_manager.mqsc("dis ql(#{@in_queue.name})")
|
126
|
-
assert_equal(1, array.size)
|
127
|
-
assert_equal(true, array[0].include?("QUEUE(#{@in_queue.name})"))
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_put1
|
131
|
-
puts '****** test_put1 ******'
|
132
|
-
data = 'Some Test Data'
|
133
|
-
assert_equal(true,@queue_manager.put(:q_name=>@in_queue.name, :data=>data))
|
134
|
-
|
135
|
-
message = WMQ::Message.new
|
136
|
-
assert_equal(true, @in_queue.get(:message=>message))
|
137
|
-
assert_equal(data, message.data)
|
138
|
-
end
|
139
|
-
|
140
|
-
def verify_header(header, format)
|
141
|
-
verify_multiple_headers([header], format)
|
142
|
-
end
|
143
|
-
|
144
|
-
def verify_multiple_headers(headers, format)
|
145
|
-
data = 'Some Test Data'
|
146
|
-
message = WMQ::Message.new
|
147
|
-
message.data = data
|
148
|
-
message.descriptor[:format] = format
|
149
|
-
message.headers = headers
|
150
|
-
#assert_equal(true,@queue_manager.put(:q_name=>@in_queue.name, :message=>message))
|
151
|
-
assert_equal(true,@out_queue.put(:message=>message))
|
152
|
-
|
153
|
-
message = WMQ::Message.new
|
154
|
-
assert_equal(true, @in_queue.get(:message=>message))
|
155
|
-
assert_equal(data, message.data)
|
156
|
-
assert_equal(headers.size, message.headers.size)
|
157
|
-
count = 0
|
158
|
-
headers.each do |header|
|
159
|
-
reply_header = message.headers[count]
|
160
|
-
header.each_pair{|key, value| assert_equal(value, reply_header[key])}
|
161
|
-
count = count + 1
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_dlh
|
166
|
-
puts '****** test_dlh ******'
|
167
|
-
dlh = {:header_type =>:dead_letter_header,
|
168
|
-
:reason => WMQ::MQRC_UNKNOWN_REMOTE_Q_MGR,
|
169
|
-
:dest_q_name =>'ORIGINAL_QUEUE_NAME',
|
170
|
-
:dest_q_mgr_name =>'BAD_Q_MGR',
|
171
|
-
:put_appl_name =>'TestApp.exe',
|
172
|
-
}
|
173
|
-
|
174
|
-
verify_header(dlh, WMQ::MQFMT_DEAD_LETTER_HEADER)
|
175
|
-
# Untested keys:
|
176
|
-
#:put_date=>"",
|
177
|
-
#:put_time=>"",
|
178
|
-
#:encoding=>0,
|
179
|
-
#:coded_char_set_id=>437,
|
180
|
-
#:put_appl_type=>0,
|
181
|
-
|
182
|
-
# Test again, but use QueueManager#put this time
|
183
|
-
data = 'Some Test Data'
|
184
|
-
message = WMQ::Message.new
|
185
|
-
message.data = data
|
186
|
-
message.descriptor[:format] = WMQ::MQFMT_STRING
|
187
|
-
message.headers << dlh
|
188
|
-
assert_equal(true,@queue_manager.put(:q_name=>@in_queue.name, :message=>message))
|
189
|
-
|
190
|
-
message = WMQ::Message.new
|
191
|
-
assert_equal(true, @in_queue.get(:message=>message))
|
192
|
-
assert_equal(data, message.data)
|
193
|
-
assert_equal(1, message.headers.size)
|
194
|
-
reply_header = message.headers[0]
|
195
|
-
|
196
|
-
dlh.each_pair{|key, value| assert_equal(value, reply_header[key])}
|
197
|
-
end
|
198
|
-
|
199
|
-
def test_cics
|
200
|
-
puts '****** test_cics ******'
|
201
|
-
cics = {:header_type =>:cics,
|
202
|
-
:reason =>WMQ::MQRC_UNKNOWN_REMOTE_Q_MGR,
|
203
|
-
:facility =>'TOKEN123',
|
204
|
-
:reply_to_format =>WMQ::MQFMT_STRING,
|
205
|
-
}
|
206
|
-
verify_header(cics, WMQ::MQFMT_NONE)
|
207
|
-
end
|
208
|
-
|
209
|
-
def test_ims
|
210
|
-
puts '****** test_ims ******'
|
211
|
-
ims = {:header_type =>:ims,
|
212
|
-
:l_term_override =>'LTERM',
|
213
|
-
:reply_to_format =>WMQ::MQFMT_STRING,
|
214
|
-
}
|
215
|
-
verify_header(ims, WMQ::MQFMT_STRING)
|
216
|
-
end
|
217
|
-
|
218
|
-
def test_transmission_header
|
219
|
-
puts '****** test_transmission_header ******'
|
220
|
-
xqh = {:header_type =>:xmit_q_header,
|
221
|
-
:remote_q_name =>'SOME_REMOTE_QUEUE',
|
222
|
-
:remote_q_mgr_name=>'SOME_REMOTE_Q_MGR',
|
223
|
-
:msg_type =>WMQ::MQMT_REQUEST,
|
224
|
-
:msg_id =>'my message Id',
|
225
|
-
}
|
226
|
-
verify_header(xqh, WMQ::MQFMT_STRING)
|
227
|
-
end
|
228
|
-
|
229
|
-
def test_rf_header
|
230
|
-
puts '****** test_rf_header ******'
|
231
|
-
rfh = {:header_type =>:rf_header,
|
232
|
-
:name_value => {' name s' => ' v a "l" u e 1 ',
|
233
|
-
'n a m e 2 ' => 'v a l u e 2',
|
234
|
-
'' => ['"', '""', '"""', '""""', ''],
|
235
|
-
'name3'=>['"value3"', '', '"',' value 43"']},
|
236
|
-
}
|
237
|
-
verify_header(rfh, WMQ::MQFMT_STRING)
|
238
|
-
end
|
239
|
-
|
240
|
-
def test_rf_header_2
|
241
|
-
puts '****** test_rf_header_2 ******'
|
242
|
-
rfh2 = {:header_type =>:rf_header_2,
|
243
|
-
:xml => ['<hello>to the world</hello>',
|
244
|
-
'<another>xml like string</another>'],
|
245
|
-
}
|
246
|
-
verify_header(rfh2, WMQ::MQFMT_STRING)
|
247
|
-
end
|
248
|
-
|
249
|
-
def test_multiple_headers
|
250
|
-
puts '****** test_multiple_headers ******'
|
251
|
-
headers = [{:header_type => :rf_header_2,
|
252
|
-
:xml => ['<hello>to the world</hello>',
|
253
|
-
'<another>xml like string</another>'],},
|
254
|
-
|
255
|
-
{:header_type => :rf_header,
|
256
|
-
:name_value => {' name s' => ' v a l u e 1 ',
|
257
|
-
'n a m e 2 ' => 'v a l u e 2',
|
258
|
-
'name3'=>['value3', '', 'value 43']} },
|
259
|
-
|
260
|
-
{:header_type => :ims,
|
261
|
-
:l_term_override => 'LTERM',
|
262
|
-
:reply_to_format => WMQ::MQFMT_STRING},
|
263
|
-
|
264
|
-
{:header_type => :rf_header,
|
265
|
-
:name_value => {' name s' => ' v a l u e 1 ',
|
266
|
-
'n a m e 2 ' => 'v a l u e 2',
|
267
|
-
'name3'=>['value3', '', 'value 43']} },
|
268
|
-
|
269
|
-
{:header_type => :cics,
|
270
|
-
:reason => WMQ::MQRC_UNKNOWN_REMOTE_Q_MGR,
|
271
|
-
:facility => 'TOKEN123',
|
272
|
-
:reply_to_format => WMQ::MQFMT_STRING},
|
273
|
-
|
274
|
-
{:header_type => :rf_header_2,
|
275
|
-
:xml => ['<hello>to the world</hello>', '<another>xml like string</another>'],},
|
276
|
-
|
277
|
-
{:header_type => :xmit_q_header,
|
278
|
-
:remote_q_name => 'SOME_REMOTE_QUEUE',
|
279
|
-
:remote_q_mgr_name=> 'SOME_REMOTE_Q_MGR',
|
280
|
-
:msg_type => WMQ::MQMT_REQUEST,
|
281
|
-
:msg_id => 'my message Id'},
|
282
|
-
]
|
283
|
-
verify_multiple_headers(headers, WMQ::MQFMT_STRING)
|
284
|
-
end
|
285
|
-
|
286
|
-
def test_xmit_multiple_headers
|
287
|
-
puts '****** test_xmit_q_header with ims header ******'
|
288
|
-
headers = [{:header_type => :xmit_q_header,
|
289
|
-
:remote_q_name => 'SOME_REMOTE_QUEUE',
|
290
|
-
:remote_q_mgr_name=> 'SOME_REMOTE_Q_MGR',
|
291
|
-
:msg_type => WMQ::MQMT_REQUEST,
|
292
|
-
:msg_id => 'my message Id'},
|
293
|
-
|
294
|
-
{:header_type => :ims,
|
295
|
-
:l_term_override => 'LTERM',
|
296
|
-
:reply_to_format => WMQ::MQFMT_STRING},
|
297
|
-
]
|
298
|
-
verify_multiple_headers(headers, WMQ::MQFMT_STRING)
|
299
|
-
end
|
300
|
-
|
1
|
+
# Shift include path to use locally built copy of rubywmq - For testing dev builds only
|
2
|
+
#$:.unshift '../lib'
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'wmq/wmq'
|
6
|
+
require 'wmq/wmq_const_admin'
|
7
|
+
require 'test/unit'
|
8
|
+
class TestTest < Test::Unit::TestCase
|
9
|
+
|
10
|
+
def setup
|
11
|
+
puts '****** setup: start ******'
|
12
|
+
@queue_manager = WMQ::QueueManager.new(:q_mgr_name => 'REID') #, :connection_name=>'localhost(1414)')
|
13
|
+
@queue_manager.connect
|
14
|
+
|
15
|
+
# Create Queue and clear any messages from the queue
|
16
|
+
@in_queue = WMQ::Queue.new(:queue_manager=>@queue_manager,
|
17
|
+
:mode=>:input,
|
18
|
+
:dynamic_q_name=>'UNIT.TEST.*',
|
19
|
+
:q_name=>'SYSTEM.DEFAULT.MODEL.QUEUE',
|
20
|
+
:fail_if_exists=>false)
|
21
|
+
@in_queue.open
|
22
|
+
@in_queue.each { |message| }
|
23
|
+
|
24
|
+
# Open same queue for Output. Queue should be created by now
|
25
|
+
@out_queue = WMQ::Queue.new(:queue_manager=>@queue_manager,
|
26
|
+
:mode=>:output,
|
27
|
+
:q_name=>@in_queue.name)
|
28
|
+
@out_queue.open
|
29
|
+
puts '****** setup: end ******'
|
30
|
+
end
|
31
|
+
|
32
|
+
def teardown
|
33
|
+
puts '****** teardown: start ******'
|
34
|
+
@out_queue.close
|
35
|
+
@in_queue.close
|
36
|
+
@queue_manager.disconnect
|
37
|
+
puts '****** teardown: end ******'
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_exceptions
|
41
|
+
puts '****** test_exceptions: start ******'
|
42
|
+
assert_raise(TypeError) { WMQ::QueueManager.new(1) }
|
43
|
+
assert_nothing_raised { WMQ::QueueManager.new(:exception_on_error=>nil) }
|
44
|
+
assert_raise(TypeError) { WMQ::QueueManager.new(:exception_on_error=>1) }
|
45
|
+
assert_raise(TypeError) { WMQ::QueueManager.new(:q_mgr_name=>2).connect }
|
46
|
+
assert_raise(WMQ::WMQException) { WMQ::QueueManager.new(:q_mgr_name=>'bad').connect }
|
47
|
+
puts '****** test_exceptions: end ******'
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_queue_manager
|
51
|
+
puts '****** test_queue_manager ******'
|
52
|
+
assert_equal(Object, WMQ::QueueManager.superclass)
|
53
|
+
assert_equal(WMQ::QueueManager, @queue_manager.class)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_1
|
57
|
+
puts '****** test_1 ******'
|
58
|
+
assert_equal(@out_queue.put(:data=>'Hello World'), true)
|
59
|
+
message = WMQ::Message.new
|
60
|
+
assert_equal(@in_queue.get(:message=>message), true)
|
61
|
+
assert_equal(message.data, 'Hello World')
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_dynamic_buffer
|
65
|
+
puts '****** test_dynamic_buffer ******'
|
66
|
+
# Clear out queue of any messages
|
67
|
+
@in_queue.each { |message| }
|
68
|
+
|
69
|
+
test_sizes = [0, 1, 100, 101, 102, 500, 65534, 65535, 65536, 65537, 1*1024*1024, 4*1024*1024]
|
70
|
+
test_sizes.each do |size|
|
71
|
+
str = '0123456789ABCDEF' * (size/16) + '0123456789ABCDEF'[0,size%16]
|
72
|
+
assert_equal(str.length, size)
|
73
|
+
assert_equal(@out_queue.put(:data=>str), true)
|
74
|
+
end
|
75
|
+
|
76
|
+
# First test the browse mechanism
|
77
|
+
counter = 0
|
78
|
+
@queue_manager.open_queue(:mode=>:browse, :q_name=>@in_queue.name) do |browse_queue|
|
79
|
+
browse_queue.each do |message|
|
80
|
+
size = test_sizes[counter]
|
81
|
+
assert_equal(size, message.data.length)
|
82
|
+
str = '0123456789ABCDEF' * (size/16) + '0123456789ABCDEF'[0,size%16]
|
83
|
+
assert_equal(str, message.data)
|
84
|
+
counter = counter + 1
|
85
|
+
end
|
86
|
+
end
|
87
|
+
assert_equal(test_sizes.size, counter)
|
88
|
+
|
89
|
+
# Now retrieve the messages destructively
|
90
|
+
message = WMQ::Message.new
|
91
|
+
test_sizes.each do |size|
|
92
|
+
assert_equal(true, @in_queue.get(:message=>message, :match=>WMQ::MQMO_NONE))
|
93
|
+
assert_equal(size, message.data.length)
|
94
|
+
str = '0123456789ABCDEF' * (size/16) + '0123456789ABCDEF'[0,size%16]
|
95
|
+
assert_equal(str, message.data)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_q_name_hash
|
100
|
+
puts '****** test_q_name_hash ******'
|
101
|
+
@queue_manager.open_queue(:mode=>:output,
|
102
|
+
:q_name=>{:q_name=>@in_queue.name,
|
103
|
+
:q_mgr_name=>@queue_manager.name}
|
104
|
+
) do |test_queue|
|
105
|
+
assert_equal(true, test_queue.put(:data=>'Hello World'))
|
106
|
+
message = WMQ::Message.new
|
107
|
+
assert_equal(true, @in_queue.get(:message=>message))
|
108
|
+
assert_equal('Hello World', message.data)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_execute
|
113
|
+
puts '****** test_execute ******'
|
114
|
+
array = @queue_manager.inquire_q(:q_name=>@in_queue.name, :q_type=>WMQ::MQQT_LOCAL, :current_q_depth=>nil)
|
115
|
+
assert_equal(1, array.size)
|
116
|
+
assert_equal(@in_queue.name, array[0][:q_name])
|
117
|
+
|
118
|
+
assert_equal(true, @queue_manager.inquire_process(:process_name=>'*').size>0)
|
119
|
+
assert_raise(WMQ::WMQException) { @queue_manager.inquire_q(:q_name=>'BADQUEUENAME*') }
|
120
|
+
assert_equal(1, @queue_manager.ping_q_mgr.size)
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_mqsc
|
124
|
+
puts '****** test_mqsc ******'
|
125
|
+
array = @queue_manager.mqsc("dis ql(#{@in_queue.name})")
|
126
|
+
assert_equal(1, array.size)
|
127
|
+
assert_equal(true, array[0].include?("QUEUE(#{@in_queue.name})"))
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_put1
|
131
|
+
puts '****** test_put1 ******'
|
132
|
+
data = 'Some Test Data'
|
133
|
+
assert_equal(true,@queue_manager.put(:q_name=>@in_queue.name, :data=>data))
|
134
|
+
|
135
|
+
message = WMQ::Message.new
|
136
|
+
assert_equal(true, @in_queue.get(:message=>message))
|
137
|
+
assert_equal(data, message.data)
|
138
|
+
end
|
139
|
+
|
140
|
+
def verify_header(header, format)
|
141
|
+
verify_multiple_headers([header], format)
|
142
|
+
end
|
143
|
+
|
144
|
+
def verify_multiple_headers(headers, format)
|
145
|
+
data = 'Some Test Data'
|
146
|
+
message = WMQ::Message.new
|
147
|
+
message.data = data
|
148
|
+
message.descriptor[:format] = format
|
149
|
+
message.headers = headers
|
150
|
+
#assert_equal(true,@queue_manager.put(:q_name=>@in_queue.name, :message=>message))
|
151
|
+
assert_equal(true,@out_queue.put(:message=>message))
|
152
|
+
|
153
|
+
message = WMQ::Message.new
|
154
|
+
assert_equal(true, @in_queue.get(:message=>message))
|
155
|
+
assert_equal(data, message.data)
|
156
|
+
assert_equal(headers.size, message.headers.size)
|
157
|
+
count = 0
|
158
|
+
headers.each do |header|
|
159
|
+
reply_header = message.headers[count]
|
160
|
+
header.each_pair{|key, value| assert_equal(value, reply_header[key])}
|
161
|
+
count = count + 1
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_dlh
|
166
|
+
puts '****** test_dlh ******'
|
167
|
+
dlh = {:header_type =>:dead_letter_header,
|
168
|
+
:reason => WMQ::MQRC_UNKNOWN_REMOTE_Q_MGR,
|
169
|
+
:dest_q_name =>'ORIGINAL_QUEUE_NAME',
|
170
|
+
:dest_q_mgr_name =>'BAD_Q_MGR',
|
171
|
+
:put_appl_name =>'TestApp.exe',
|
172
|
+
}
|
173
|
+
|
174
|
+
verify_header(dlh, WMQ::MQFMT_DEAD_LETTER_HEADER)
|
175
|
+
# Untested keys:
|
176
|
+
#:put_date=>"",
|
177
|
+
#:put_time=>"",
|
178
|
+
#:encoding=>0,
|
179
|
+
#:coded_char_set_id=>437,
|
180
|
+
#:put_appl_type=>0,
|
181
|
+
|
182
|
+
# Test again, but use QueueManager#put this time
|
183
|
+
data = 'Some Test Data'
|
184
|
+
message = WMQ::Message.new
|
185
|
+
message.data = data
|
186
|
+
message.descriptor[:format] = WMQ::MQFMT_STRING
|
187
|
+
message.headers << dlh
|
188
|
+
assert_equal(true,@queue_manager.put(:q_name=>@in_queue.name, :message=>message))
|
189
|
+
|
190
|
+
message = WMQ::Message.new
|
191
|
+
assert_equal(true, @in_queue.get(:message=>message))
|
192
|
+
assert_equal(data, message.data)
|
193
|
+
assert_equal(1, message.headers.size)
|
194
|
+
reply_header = message.headers[0]
|
195
|
+
|
196
|
+
dlh.each_pair{|key, value| assert_equal(value, reply_header[key])}
|
197
|
+
end
|
198
|
+
|
199
|
+
def test_cics
|
200
|
+
puts '****** test_cics ******'
|
201
|
+
cics = {:header_type =>:cics,
|
202
|
+
:reason =>WMQ::MQRC_UNKNOWN_REMOTE_Q_MGR,
|
203
|
+
:facility =>'TOKEN123',
|
204
|
+
:reply_to_format =>WMQ::MQFMT_STRING,
|
205
|
+
}
|
206
|
+
verify_header(cics, WMQ::MQFMT_NONE)
|
207
|
+
end
|
208
|
+
|
209
|
+
def test_ims
|
210
|
+
puts '****** test_ims ******'
|
211
|
+
ims = {:header_type =>:ims,
|
212
|
+
:l_term_override =>'LTERM',
|
213
|
+
:reply_to_format =>WMQ::MQFMT_STRING,
|
214
|
+
}
|
215
|
+
verify_header(ims, WMQ::MQFMT_STRING)
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_transmission_header
|
219
|
+
puts '****** test_transmission_header ******'
|
220
|
+
xqh = {:header_type =>:xmit_q_header,
|
221
|
+
:remote_q_name =>'SOME_REMOTE_QUEUE',
|
222
|
+
:remote_q_mgr_name=>'SOME_REMOTE_Q_MGR',
|
223
|
+
:msg_type =>WMQ::MQMT_REQUEST,
|
224
|
+
:msg_id =>'my message Id',
|
225
|
+
}
|
226
|
+
verify_header(xqh, WMQ::MQFMT_STRING)
|
227
|
+
end
|
228
|
+
|
229
|
+
def test_rf_header
|
230
|
+
puts '****** test_rf_header ******'
|
231
|
+
rfh = {:header_type =>:rf_header,
|
232
|
+
:name_value => {' name s' => ' v a "l" u e 1 ',
|
233
|
+
'n a m e 2 ' => 'v a l u e 2',
|
234
|
+
'' => ['"', '""', '"""', '""""', ''],
|
235
|
+
'name3'=>['"value3"', '', '"',' value 43"']},
|
236
|
+
}
|
237
|
+
verify_header(rfh, WMQ::MQFMT_STRING)
|
238
|
+
end
|
239
|
+
|
240
|
+
def test_rf_header_2
|
241
|
+
puts '****** test_rf_header_2 ******'
|
242
|
+
rfh2 = {:header_type =>:rf_header_2,
|
243
|
+
:xml => ['<hello>to the world</hello>',
|
244
|
+
'<another>xml like string</another>'],
|
245
|
+
}
|
246
|
+
verify_header(rfh2, WMQ::MQFMT_STRING)
|
247
|
+
end
|
248
|
+
|
249
|
+
def test_multiple_headers
|
250
|
+
puts '****** test_multiple_headers ******'
|
251
|
+
headers = [{:header_type => :rf_header_2,
|
252
|
+
:xml => ['<hello>to the world</hello>',
|
253
|
+
'<another>xml like string</another>'],},
|
254
|
+
|
255
|
+
{:header_type => :rf_header,
|
256
|
+
:name_value => {' name s' => ' v a l u e 1 ',
|
257
|
+
'n a m e 2 ' => 'v a l u e 2',
|
258
|
+
'name3'=>['value3', '', 'value 43']} },
|
259
|
+
|
260
|
+
{:header_type => :ims,
|
261
|
+
:l_term_override => 'LTERM',
|
262
|
+
:reply_to_format => WMQ::MQFMT_STRING},
|
263
|
+
|
264
|
+
{:header_type => :rf_header,
|
265
|
+
:name_value => {' name s' => ' v a l u e 1 ',
|
266
|
+
'n a m e 2 ' => 'v a l u e 2',
|
267
|
+
'name3'=>['value3', '', 'value 43']} },
|
268
|
+
|
269
|
+
{:header_type => :cics,
|
270
|
+
:reason => WMQ::MQRC_UNKNOWN_REMOTE_Q_MGR,
|
271
|
+
:facility => 'TOKEN123',
|
272
|
+
:reply_to_format => WMQ::MQFMT_STRING},
|
273
|
+
|
274
|
+
{:header_type => :rf_header_2,
|
275
|
+
:xml => ['<hello>to the world</hello>', '<another>xml like string</another>'],},
|
276
|
+
|
277
|
+
{:header_type => :xmit_q_header,
|
278
|
+
:remote_q_name => 'SOME_REMOTE_QUEUE',
|
279
|
+
:remote_q_mgr_name=> 'SOME_REMOTE_Q_MGR',
|
280
|
+
:msg_type => WMQ::MQMT_REQUEST,
|
281
|
+
:msg_id => 'my message Id'},
|
282
|
+
]
|
283
|
+
verify_multiple_headers(headers, WMQ::MQFMT_STRING)
|
284
|
+
end
|
285
|
+
|
286
|
+
def test_xmit_multiple_headers
|
287
|
+
puts '****** test_xmit_q_header with ims header ******'
|
288
|
+
headers = [{:header_type => :xmit_q_header,
|
289
|
+
:remote_q_name => 'SOME_REMOTE_QUEUE',
|
290
|
+
:remote_q_mgr_name=> 'SOME_REMOTE_Q_MGR',
|
291
|
+
:msg_type => WMQ::MQMT_REQUEST,
|
292
|
+
:msg_id => 'my message Id'},
|
293
|
+
|
294
|
+
{:header_type => :ims,
|
295
|
+
:l_term_override => 'LTERM',
|
296
|
+
:reply_to_format => WMQ::MQFMT_STRING},
|
297
|
+
]
|
298
|
+
verify_multiple_headers(headers, WMQ::MQFMT_STRING)
|
299
|
+
end
|
300
|
+
|
301
|
+
def test_message_grouping
|
302
|
+
puts '****** test_message_grouping ******'
|
303
|
+
# Clear out queue of any messages
|
304
|
+
@in_queue.each { |message| }
|
305
|
+
|
306
|
+
msg = WMQ::Message.new
|
307
|
+
msg.data = 'First'
|
308
|
+
msg.descriptor[:msg_flags] = WMQ::MQMF_MSG_IN_GROUP
|
309
|
+
assert_equal(@out_queue.put(:message=>msg, :options => WMQ::MQPMO_LOGICAL_ORDER), true)
|
310
|
+
|
311
|
+
msg.data = 'Second'
|
312
|
+
assert_equal(@out_queue.put(:message=>msg, :options => WMQ::MQPMO_LOGICAL_ORDER), true)
|
313
|
+
|
314
|
+
msg.data = 'Last'
|
315
|
+
msg.descriptor[:msg_flags] = WMQ::MQMF_LAST_MSG_IN_GROUP
|
316
|
+
assert_equal(@out_queue.put(:message=>msg, :options => WMQ::MQPMO_LOGICAL_ORDER), true)
|
317
|
+
|
318
|
+
# Now retrieve the messages destructively
|
319
|
+
message = WMQ::Message.new
|
320
|
+
test_sizes.each do |size|
|
321
|
+
assert_equal(true, @in_queue.get(:message=>message, :match=>WMQ::MQMO_NONE))
|
322
|
+
assert_equal(size, message.data.length)
|
323
|
+
str = '0123456789ABCDEF' * (size/16) + '0123456789ABCDEF'[0,size%16]
|
324
|
+
assert_equal(str, message.data)
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
end
|