rubywmq 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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