xmlservice 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +19 -0
  3. data/README_IBM_i +62 -0
  4. data/lib/adapters/abstract_adapter.rb +82 -0
  5. data/lib/adapters/db2_adapter.rb +70 -0
  6. data/lib/adapters/rest_adapter.rb +32 -0
  7. data/lib/password/password.rb +229 -0
  8. data/lib/xmlservice.rb +2477 -0
  9. data/test/README_IBM_i +3 -0
  10. data/test/Rakefile +42 -0
  11. data/test/genpassword.rb +111 -0
  12. data/test/test_60000_toolkit_driver/Rakefile +11 -0
  13. data/test/test_60000_toolkit_driver/test_60010_DriverCallPgmZZCALL.rb +403 -0
  14. data/test/test_60000_toolkit_driver/test_60110_DriverCallSrvPgmZZARRAY.rb +149 -0
  15. data/test/test_60000_toolkit_driver/test_60310_DriverCMD.rb +77 -0
  16. data/test/test_60000_toolkit_driver/test_60510_DriverDataQueue.rb +126 -0
  17. data/test/test_60000_toolkit_driver/test_60610_DriverCallSrvPgmZZBINARY.rb +59 -0
  18. data/test/test_60000_toolkit_driver/test_60710_DriverSH.rb +73 -0
  19. data/test/test_60000_toolkit_driver/test_60910_DriverCallPgmZZMISS.rb +44 -0
  20. data/test/test_60000_toolkit_driver/test_65010_DriverCallDB2.rb +265 -0
  21. data/test/test_60000_toolkit_driver/zzassign.rb +66 -0
  22. data/test/test_60000_toolkit_driver/zzquick.rb +149 -0
  23. data/test/test_60000_toolkit_driver/zztestrest.rb +45 -0
  24. data/test/test_60000_toolkit_driver/zzthreadold.rb +78 -0
  25. data/test/test_70000_toolkit_testonly/Rakefile +11 -0
  26. data/test/test_70000_toolkit_testonly/test_70010_DriverCallPgmTestOnly.rb +270 -0
  27. data/test/test_80000_toolkit_dsl/Rakefile +11 -0
  28. data/test/test_80000_toolkit_dsl/test_80010_DSLCallPgmZZCALL.rb +162 -0
  29. data/test/test_80000_toolkit_dsl/test_80110_DSLCallSrvPgmZZARRAY.rb +150 -0
  30. data/test/test_authorization/README_IBM_i +15 -0
  31. data/test/test_authorization/auth.rb +101 -0
  32. data/test/test_authorization/key.yml +2 -0
  33. data/test/test_authorization/password.yml +3 -0
  34. data/test/test_authorization/xmlservice.yml +69 -0
  35. data/test/test_data/rowcol.rb +57 -0
  36. data/version.txt +1 -0
  37. metadata +92 -0
@@ -0,0 +1,44 @@
1
+ # File: test_60910_DriverCallPgmzzmiss.rb
2
+ require "../test_authorization/auth"
3
+ require "../test_data/rowcol"
4
+
5
+ class Test_60910_DriverCallPgmZZMISS < RowColUnitTest
6
+ # -------------------------------
7
+ # test functions (start with prefix test_)
8
+ # rake test -- Unit run alpha sort order
9
+ # run #1) test_0000_connect
10
+ # run #2) test_nnnn_xxx
11
+ # :
12
+ # run #n) test_9999_close
13
+ # -------------------------------
14
+ def test_0030_pgm_zzmiss_error
15
+ # call missing PGM
16
+ # 'error' => 'on' -- slow large joblog (development)
17
+ # 'error' => 'off' -- slow subset joblog (development)
18
+ # 'error' => 'fast' -- high speed errors (production)
19
+ options = {'error'=>'off'}
20
+ zzmiss = XMLService::I_PGM.new("ZZMISS",$toolkit_test_lib,options)
21
+ # call IBM i zzmiss
22
+ zzmiss.xmlservice
23
+
24
+ # xmlservice error occurred?
25
+ puts "\n+++++++++ dump_error ++++++++++++++++"
26
+ rc = zzmiss.xmlservice_error
27
+ if rc
28
+ puts zzmiss.dump_error
29
+ end
30
+
31
+
32
+ # puts zzmiss.inspect
33
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
34
+ puts zzmiss.dump_inspect
35
+
36
+ self.match_value(__method__,__LINE__,'error' ,true,rc)
37
+ end
38
+
39
+ # -------------------------------
40
+ # non-test functions (no prefix test_)
41
+ # -------------------------------
42
+
43
+ end
44
+
@@ -0,0 +1,265 @@
1
+ # File: test_65010_DriverCallDB2.rb
2
+ require "../test_authorization/auth"
3
+ require "../test_data/rowcol"
4
+
5
+ class Test_65010_DriverCallDB2 < RowColUnitTest
6
+ # -------------------------------
7
+ # test functions (start with prefix test_)
8
+ # rake test -- Unit run alpha sort order
9
+ # run #1) test_0000_connect
10
+ # run #2) test_nnnn_xxx
11
+ # :
12
+ # run #n) test_9999_close
13
+ # -------------------------------
14
+
15
+ def test_0020_DB2_query
16
+ # ***************************************
17
+ # * DB2 - query
18
+ # ***************************************
19
+ query = XMLService::I_DB2.new("select * from #{$toolkit_test_db2_lib}/animals")
20
+ # call IBM i
21
+ puts "\n+++++++++ input xml ++++++++++++++++"
22
+ puts query.to_xml
23
+ query.xmlservice
24
+ # xmlservice error occurred?
25
+ rc = query.xmlservice_error
26
+ if rc
27
+ puts query.dump_all()
28
+ self.match_value(__method__,__LINE__,'error' ,false,rc)
29
+ end
30
+
31
+ # inspect
32
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
33
+ puts query.dump_inspect
34
+
35
+ # output
36
+ # puts query.out_xml
37
+ # rows
38
+ puts "\n+++++++++ response output ++++++++++++++++"
39
+ query.response.output.each do |row|
40
+ all = ""
41
+ row.each do |n,v|
42
+ all << "#{n}=#{v} "
43
+ end
44
+ puts all
45
+ end
46
+
47
+ # verify
48
+ test = "ID=0 BREED=cat NAME=Pook WEIGHT=3.20"
49
+ all = ""
50
+ query.response.output.each do |row|
51
+ row.each do |n,v|
52
+ all << "#{n}=#{v} "
53
+ end
54
+ break
55
+ end
56
+ self.match_value(__method__,__LINE__,'one row',test,all)
57
+ end
58
+
59
+ def test_0030_DB2_query_parm
60
+ # ***************************************
61
+ # * DB2 - query
62
+ # ***************************************
63
+ id = 1
64
+ query = XMLService::I_DB2.new("select * from #{$toolkit_test_db2_lib}/animals where ID < ?",{'id'=>id})
65
+ # call IBM i
66
+ puts "\n+++++++++ input xml ++++++++++++++++"
67
+ puts query.to_xml
68
+ query.xmlservice
69
+ # xmlservice error occurred?
70
+ rc = query.xmlservice_error
71
+ if rc
72
+ puts query.dump_all()
73
+ self.match_value(__method__,__LINE__,'error' ,false,rc)
74
+ end
75
+
76
+ # inspect
77
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
78
+ puts query.dump_inspect
79
+
80
+ # output
81
+ puts "\n+++++++++ response output ++++++++++++++++"
82
+ # puts query.out_xml
83
+ # rows
84
+ puts "id < #{query.returndata.id.strip}"
85
+ query.response.output.each do |row|
86
+ all = ""
87
+ row.each do |n,v|
88
+ all << "#{n}=#{v} "
89
+ end
90
+ puts all
91
+ end
92
+
93
+ # verify
94
+ test = "ID=0 BREED=cat NAME=Pook WEIGHT=3.20"
95
+ all = ""
96
+ query.response.output.each do |row|
97
+ row.each do |n,v|
98
+ all << "#{n}=#{v} "
99
+ end
100
+ break
101
+ end
102
+ self.match_value(__method__,__LINE__,'one row',test,all)
103
+ self.match_value(__method__,__LINE__,'parm id',id,query.returndata.id)
104
+ end
105
+
106
+ def test_0040_DB2_query_parm2
107
+ # ***************************************
108
+ # * DB2 - query
109
+ # ***************************************
110
+ id = 5
111
+ weight = 0.20
112
+ query = XMLService::I_DB2.new("select * from #{$toolkit_test_db2_lib}/animals where ID < ? and WEIGHT > ?",{'id'=>id,"weight"=>weight})
113
+ # call IBM i
114
+ puts "\n+++++++++ input xml ++++++++++++++++"
115
+ puts query.to_xml
116
+ query.xmlservice
117
+ # xmlservice error occurred?
118
+ rc = query.xmlservice_error
119
+ if rc
120
+ puts query.dump_all()
121
+ self.match_value(__method__,__LINE__,'error' ,false,rc)
122
+ end
123
+
124
+ # inspect
125
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
126
+ puts query.dump_inspect
127
+
128
+ # output
129
+ puts "\n+++++++++ response output ++++++++++++++++"
130
+ # puts query.out_xml
131
+ # rows
132
+ puts "id < #{query.returndata.id.strip}"
133
+ puts "weight > #{query.returndata.weight.strip}"
134
+ query.response.output.each do |row|
135
+ all = ""
136
+ row.each do |n,v|
137
+ all << "#{n}=#{v} "
138
+ end
139
+ puts all
140
+ end
141
+
142
+ # verify
143
+ test = "ID=0 BREED=cat NAME=Pook WEIGHT=3.20"
144
+ all = ""
145
+ query.response.output.each do |row|
146
+ row.each do |n,v|
147
+ all << "#{n}=#{v} "
148
+ end
149
+ break
150
+ end
151
+ self.match_value(__method__,__LINE__,'one row',test,all)
152
+ self.match_value(__method__,__LINE__,'parm id',id,query.returndata.id)
153
+ self.match_value(__method__,__LINE__,'parm weight',weight,query.returndata.weight)
154
+ end
155
+
156
+
157
+ def test_0050_DB2_procedure
158
+ # ***************************************
159
+ # * DB2 - query
160
+ # ***************************************
161
+ in_name1 = 'Peaches'
162
+ in_name2 = 'Rickety Ride'
163
+ in_weight = 22.22
164
+ query = XMLService::I_DB2.new("call #{$toolkit_test_db2_lib}/MATCH_ANIMAL(?, ?, ?)",
165
+ {'name1'=>in_name1,"name2"=>in_name2,"weight"=>in_weight})
166
+ # call IBM i
167
+ puts "\n+++++++++ input xml ++++++++++++++++"
168
+ puts query.to_xml
169
+ query.xmlservice
170
+ # xmlservice error occurred?
171
+ rc = query.xmlservice_error
172
+ if rc
173
+ puts query.dump_all()
174
+ self.match_value(__method__,__LINE__,'error' ,false,rc)
175
+ end
176
+
177
+ # inspect
178
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
179
+ puts query.dump_inspect
180
+
181
+ # output
182
+ puts "\n+++++++++ response output ++++++++++++++++"
183
+ # puts query.out_xml
184
+ # rows
185
+ puts "name1 = #{query.returndata.name1.strip}"
186
+ puts "name2 = #{query.returndata.name2.strip}"
187
+ puts "weight = #{query.returndata.weight.strip}"
188
+ query.response.output.each do |row|
189
+ all = ""
190
+ row.each do |n,v|
191
+ all << "#{n}=#{v} "
192
+ end
193
+ puts all
194
+ end
195
+
196
+ # verify
197
+ out_name1 = 'Peaches'
198
+ out_name2 = 'TRUE'
199
+ out_weight = 12.3
200
+ test = "NAME=Peaches BREED=dog WEIGHT=12.30"
201
+ all = ""
202
+ query.response.output.each do |row|
203
+ row.each do |n,v|
204
+ all << "#{n}=#{v} "
205
+ end
206
+ break
207
+ end
208
+ self.match_value(__method__,__LINE__,'one row',test,all)
209
+ self.match_value(__method__,__LINE__,'name1',out_name1,query.returndata.name1)
210
+ self.match_value(__method__,__LINE__,'name2',out_name2,query.returndata.name2)
211
+ self.match_value(__method__,__LINE__,'name2',out_weight,query.returndata.weight)
212
+ end
213
+
214
+
215
+ def test_0100_DB2_query_graphic
216
+ # ***************************************
217
+ # * DB2 - query
218
+ # ***************************************
219
+ query = XMLService::I_DB2.new("select * from #{$toolkit_test_db2_lib}/VAR_GRAPHIC_TEST")
220
+ # call IBM i
221
+ puts "\n+++++++++ input xml ++++++++++++++++"
222
+ puts query.to_xml
223
+ query.xmlservice
224
+ # xmlservice error occurred?
225
+ rc = query.xmlservice_error
226
+ if rc
227
+ puts query.dump_all()
228
+ self.match_value(__method__,__LINE__,'error' ,false,rc)
229
+ end
230
+
231
+ # inspect
232
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
233
+ puts query.dump_inspect
234
+
235
+ # output
236
+ puts "\n+++++++++ response output ++++++++++++++++"
237
+ # puts query.out_xml
238
+ # rows
239
+ query.response.output.each do |row|
240
+ all = ""
241
+ row.each do |n,v|
242
+ all << "#{n}=#{v} "
243
+ end
244
+ puts all
245
+ end
246
+
247
+ # verify
248
+ test = "COL1=something COL2=something"
249
+ all = ""
250
+ query.response.output.each do |row|
251
+ row.each do |n,v|
252
+ all << "#{n}=#{v} "
253
+ end
254
+ break
255
+ end
256
+ self.match_value(__method__,__LINE__,'one row',test,all)
257
+ end
258
+
259
+
260
+
261
+ # -------------------------------
262
+ # non-test functions (no prefix test_)
263
+ # -------------------------------
264
+
265
+ end
@@ -0,0 +1,66 @@
1
+ class I_a
2
+ # value get/set not exist until created
3
+ # accessor inchara created dynamically
4
+ attr_accessor :inchara
5
+ def initialize(v)
6
+ @inchara = v
7
+ end
8
+ end
9
+
10
+ # param anchor for call input, repond
11
+ class I_Parameter
12
+ attr_accessor :elem
13
+ def initialize(elem)
14
+ @elem = elem
15
+ end
16
+ # methods get/set do not exist until created
17
+ # forwarding inchara methods created dynamically
18
+ def inchara
19
+ @elem.inchara
20
+ end
21
+ def inchara=(value)
22
+ @elem.inchara=value
23
+ end
24
+ end
25
+
26
+ # class will allow area to dynamically create
27
+ # entire object stack without prefixes
28
+ # (assuming 'clever naming' user of course)
29
+ class I_Data
30
+ # nothing in this class until dynamically created
31
+ attr_accessor :PARM0
32
+ def initialize(elem)
33
+ @PARM0 = elem
34
+ end
35
+ # forwarding inchara methods created dynamically
36
+ def inchara
37
+ @PARM0.inchara
38
+ end
39
+ def inchara=(value)
40
+ @PARM0.inchara=value
41
+ end
42
+ end
43
+
44
+ # main/top class
45
+ # assuming 'clever naming' user of course
46
+ # :input = I_Data.new
47
+ # :respond = I_Data.new
48
+ # (:returndata = I_Data.new)
49
+ class I_Pgm
50
+ attr_accessor :input, :respond
51
+ def initialize
52
+ @input = I_Data.new ( I_Parameter.new(I_a.new('a')) )
53
+ end
54
+ end
55
+
56
+ # customer script usage
57
+ zzcall = I_Pgm.new
58
+ puts zzcall.input.PARM0.inchara
59
+
60
+ zzcall.input.PARM0.inchara = 'b'
61
+ puts zzcall.input.PARM0.inchara
62
+
63
+ zzcall.input.inchara = 'c'
64
+ puts zzcall.input.inchara
65
+
66
+
@@ -0,0 +1,149 @@
1
+ # File: test_Quick.rb
2
+ require "../test_authorization/auth"
3
+ require "../test_data/rowcol"
4
+
5
+ class Test_Quick < RowColUnitTest
6
+
7
+
8
+ def test_0500_DB2_query_parm2
9
+ # ***************************************
10
+ # * DB2 - query
11
+ # ***************************************
12
+ id = 5
13
+ weight = 0.20
14
+ likethis = 'Peaches%' # ibm_db driver
15
+ query = XMLService::I_DB2.new("select * from #{$toolkit_test_db2_lib}/animals where NAME LIKE ?",{'name'=>likethis},{'error'=>'on'})
16
+ # call IBM i
17
+ puts "\n+++++++++ input xml ++++++++++++++++"
18
+ puts query.to_xml
19
+ query.xmlservice
20
+ # xmlservice error occurred?
21
+ rc = query.xmlservice_error
22
+ if rc
23
+ puts query.dump_all()
24
+ self.match_value(__method__,__LINE__,'error' ,false,rc)
25
+ end
26
+
27
+ # inspect
28
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
29
+ puts query.dump_inspect
30
+
31
+ # output
32
+ puts "\n+++++++++ response output ++++++++++++++++"
33
+ puts query.out_xml
34
+
35
+ end
36
+
37
+
38
+ def no_test_0500_pgm_zzcall_array
39
+ # call IBM i ZZCALL (default values)
40
+ zzcall = XMLService::I_PGM.new("ZZCALL",$toolkit_test_lib,{'error'=>'fast'})
41
+ zzcall << XMLService::I_a.new('inchara',1,'s')
42
+ zzcall << XMLService::I_a.new('incharb',1,'r')
43
+ zzcall << XMLService::I_p.new('indec1',7,4,55.1111)
44
+ zzcall << XMLService::I_p.new('indec2',12,2,333.22)
45
+ zzcall << XMLService::I_DS.new('inds1',1,
46
+ [{
47
+ 'fred'=>XMLService::I_a.new('dschara',1,'t'),
48
+ 'wilma'=>XMLService::I_a.new('dscharb',1,'f'),
49
+ 'betty'=>XMLService::I_p.new('dsdec1',7,4,77.6666),
50
+ 'bambam'=>XMLService::I_p.new('dsdec2',12,2,88888.77)
51
+ }])
52
+
53
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
54
+ puts zzcall.dump_inspect
55
+
56
+ zzcall.input.inchara = '1'
57
+ zzcall.input.incharb = '1'
58
+ zzcall.input.indec1 = 11.1111
59
+ zzcall.input.indec2 = 11.11
60
+ zzcall.input.inds1[0]['fred'].dschara = '1'
61
+ zzcall.input.inds1[0]['wilma'].dscharb = '1'
62
+ zzcall.input.inds1[0]['betty'].dsdec1 = 111.1111
63
+ zzcall.input.inds1[0]['bambam'].dsdec2 = 1111.11
64
+
65
+ parms = [ 'inchara'=>'2', 'incharb'=>'2', 'indec1'=>22.2222, 'indec2'=>22.22,
66
+ 'inds1'=>[{
67
+ 'wilma'=>{'dscharb'=>'2'},
68
+ 'betty'=>{'dsdec1'=>222.2222}}]
69
+ ]
70
+ zzcall.call(parms)
71
+
72
+ puts "\n+++++++++ dump_inspect ++++++++++++++++"
73
+ puts zzcall.dump_inspect
74
+
75
+ puts "\n+++++++++ dump input xml ++++++++++++++++"
76
+ puts zzcall.to_xml
77
+
78
+ puts "\n+++++++++ output ++++++++++++++++"
79
+ puts " inchara...#{zzcall.response.inchara}\n"
80
+ puts " incharb...#{zzcall.response.incharb}\n"
81
+ puts " indec1....#{zzcall.response.indec1}\n"
82
+ puts " indec2....#{zzcall.response.indec2}\n"
83
+ zzcall.response.inds1.each do |inds1|
84
+ puts " dschara...#{inds1.dschara}"
85
+ puts " dscharb...#{inds1.dscharb}"
86
+ puts " dsdec1....#{inds1.dsdec1}"
87
+ puts " dsdec2....#{inds1.dsdec2}"
88
+ end
89
+ end
90
+
91
+ def no_test_0501_pgm_zzcall_array
92
+ zzcall << XMLService::I_DS.new('inds1',1,
93
+ [
94
+ XMLService::I_a.new('dschara',1,'t'),
95
+ XMLService::I_a.new('dscharb',1,'f'),
96
+ XMLService::I_p.new('dsdec1',7,4,77.6666),
97
+ XMLService::I_p.new('dsdec2',12,2,88888.77)
98
+ ])
99
+ zzcall.input.inds1[0].dschara = 'a'
100
+ zzcall.input.inds1[1].dscharb = 'a'
101
+ zzcall.input.inds1[2].dsdec1 = 111.1111
102
+ zzcall.input.inds1[3].dsdec2 = 1111.11
103
+ end
104
+ def no_test_0502_pgm_zzcall_array
105
+ zzcall << XMLService::I_DS.new('inds1',1,
106
+ {
107
+ 'dschara'=>XMLService::I_a.new('dschara',1,'t'),
108
+ 'dscharb'=>XMLService::I_a.new('dscharb',1,'f'),
109
+ 'dsdec1'=>XMLService::I_p.new('dsdec1',7,4,77.6666),
110
+ 'dsdec2'=>XMLService::I_p.new('dsdec2',12,2,88888.77)
111
+ })
112
+ zzcall.input.inds1['dschara'].dschara = 'a'
113
+ zzcall.input.inds1['dscharb'].dscharb = 'a'
114
+ zzcall.input.inds1['dsdec1'].dsdec1 = 111.1111
115
+ zzcall.input.inds1['dsdec2'].dsdec2 = 1111.11
116
+ end
117
+
118
+
119
+ def no_test_0503_pgm_zzcall_array
120
+ zzcall << XMLService::I_DS.new('inds1',1,
121
+ [{
122
+ 'dschara'=>XMLService::I_a.new('dschara',1,'t'),
123
+ 'dscharb'=>XMLService::I_a.new('dscharb',1,'f'),
124
+ 'dsdec1'=>XMLService::I_p.new('dsdec1',7,4,77.6666),
125
+ 'dsdec2'=>XMLService::I_p.new('dsdec2',12,2,88888.77)
126
+ }])
127
+
128
+ zzcall.input.inds1[0]['dschara'].dschara = 'a'
129
+ zzcall.input.inds1[0]['dscharb'].dscharb = 'a'
130
+ zzcall.input.inds1[0]['dsdec1'].dsdec1 = 111.1111
131
+ zzcall.input.inds1[0]['dsdec2'].dsdec2 = 1111.11
132
+ end
133
+
134
+
135
+ def no_test_0504_pgm_zzcall_array
136
+ zzcall << XMLService::I_DS.new('inds1',1,
137
+ [[
138
+ XMLService::I_a.new('dschara',1,'t'),
139
+ XMLService::I_a.new('dscharb',1,'f'),
140
+ XMLService::I_p.new('dsdec1',7,4,77.6666),
141
+ XMLService::I_p.new('dsdec2',12,2,88888.77)
142
+ ]])
143
+ zzcall.input.inds1[0][0].dschara = 'a'
144
+ zzcall.input.inds1[0][1].dscharb = 'a'
145
+ zzcall.input.inds1[0][2].dsdec1 = 111.1111
146
+ zzcall.input.inds1[0][3].dsdec2 = 1111.11
147
+ end
148
+
149
+ end