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/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
- end
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