xmlservice 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +19 -0
- data/README_IBM_i +62 -0
- data/lib/adapters/abstract_adapter.rb +82 -0
- data/lib/adapters/db2_adapter.rb +70 -0
- data/lib/adapters/rest_adapter.rb +32 -0
- data/lib/password/password.rb +229 -0
- data/lib/xmlservice.rb +2477 -0
- data/test/README_IBM_i +3 -0
- data/test/Rakefile +42 -0
- data/test/genpassword.rb +111 -0
- data/test/test_60000_toolkit_driver/Rakefile +11 -0
- data/test/test_60000_toolkit_driver/test_60010_DriverCallPgmZZCALL.rb +403 -0
- data/test/test_60000_toolkit_driver/test_60110_DriverCallSrvPgmZZARRAY.rb +149 -0
- data/test/test_60000_toolkit_driver/test_60310_DriverCMD.rb +77 -0
- data/test/test_60000_toolkit_driver/test_60510_DriverDataQueue.rb +126 -0
- data/test/test_60000_toolkit_driver/test_60610_DriverCallSrvPgmZZBINARY.rb +59 -0
- data/test/test_60000_toolkit_driver/test_60710_DriverSH.rb +73 -0
- data/test/test_60000_toolkit_driver/test_60910_DriverCallPgmZZMISS.rb +44 -0
- data/test/test_60000_toolkit_driver/test_65010_DriverCallDB2.rb +265 -0
- data/test/test_60000_toolkit_driver/zzassign.rb +66 -0
- data/test/test_60000_toolkit_driver/zzquick.rb +149 -0
- data/test/test_60000_toolkit_driver/zztestrest.rb +45 -0
- data/test/test_60000_toolkit_driver/zzthreadold.rb +78 -0
- data/test/test_70000_toolkit_testonly/Rakefile +11 -0
- data/test/test_70000_toolkit_testonly/test_70010_DriverCallPgmTestOnly.rb +270 -0
- data/test/test_80000_toolkit_dsl/Rakefile +11 -0
- data/test/test_80000_toolkit_dsl/test_80010_DSLCallPgmZZCALL.rb +162 -0
- data/test/test_80000_toolkit_dsl/test_80110_DSLCallSrvPgmZZARRAY.rb +150 -0
- data/test/test_authorization/README_IBM_i +15 -0
- data/test/test_authorization/auth.rb +101 -0
- data/test/test_authorization/key.yml +2 -0
- data/test/test_authorization/password.yml +3 -0
- data/test/test_authorization/xmlservice.yml +69 -0
- data/test/test_data/rowcol.rb +57 -0
- data/version.txt +1 -0
- metadata +92 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
# File: test_60310_DriverCMD.rb
|
2
|
+
require "../test_authorization/auth"
|
3
|
+
require "../test_data/rowcol"
|
4
|
+
|
5
|
+
class Test_60310_DriverCMD < 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_0020_cmd_CHGLIBL
|
15
|
+
# ***************************************
|
16
|
+
# * CMD - CHGLIBL
|
17
|
+
# ***************************************
|
18
|
+
cmd = XMLService::I_CMD.new("CHGLIBL LIBL(QTEMP #{$toolkit_test_lib})")
|
19
|
+
# call IBM i
|
20
|
+
cmd.xmlservice
|
21
|
+
# inspect
|
22
|
+
puts cmd.dump_inspect
|
23
|
+
# xmlservice error occurred?
|
24
|
+
rc = cmd.xmlservice_error
|
25
|
+
if rc
|
26
|
+
puts cmd.dump_error()
|
27
|
+
self.match_value(__method__,__LINE__,'error' ,false,rc)
|
28
|
+
end
|
29
|
+
# output
|
30
|
+
# puts cmd.out_xml
|
31
|
+
output = cmd.response.output
|
32
|
+
puts output
|
33
|
+
# verify
|
34
|
+
must = "success"
|
35
|
+
ok = output.include? must
|
36
|
+
self.match_value(__method__,__LINE__,"E N D",must,output)
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
# -------------------------------
|
42
|
+
# non-test functions (no prefix test_)
|
43
|
+
# -------------------------------
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'xmlservice'
|
2
|
+
require 'thread'
|
3
|
+
|
4
|
+
ActiveXMLService::Base.establish_connection(
|
5
|
+
:test_yaml => "../test_authorization/xmlservice.yml",
|
6
|
+
:test_env => "sqlpublic"
|
7
|
+
)
|
8
|
+
|
9
|
+
def foo1(n)
|
10
|
+
puts "run #{n}\n"
|
11
|
+
cmd = XMLService::I_SH.new("system -i 'WRKSYSVAL OUTPUT(*PRINT)'")
|
12
|
+
cmd.xmlservice
|
13
|
+
output = cmd.out_xml
|
14
|
+
if output.include? "User part of the library list"
|
15
|
+
puts "good #{n}\n"
|
16
|
+
else
|
17
|
+
puts output
|
18
|
+
puts "bad #{n}\n"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def foo2(n)
|
23
|
+
puts "run #{n}\n"
|
24
|
+
cmd = XMLService::I_CMD.new("RTVJOBA USRLIBL(?) SYSLIBL(?) CCSID(?N) OUTQ(?)")
|
25
|
+
cmd.xmlservice
|
26
|
+
output = cmd.out_xml
|
27
|
+
if output.include? "desc='OUTQ'"
|
28
|
+
puts "good #{n}\n"
|
29
|
+
else
|
30
|
+
puts output
|
31
|
+
puts "bad #{n}\n"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
def foo3(n)
|
37
|
+
puts "run #{n}\n"
|
38
|
+
mybin = 0xA1A2A3A4A5A6A7A8A9AAA1A2A3A4A5A6A7A8A9AA
|
39
|
+
zzbinary = XMLService::I_SRVPGM.new("ZZSRV","ZZBINARY",$toolkit_test_lib)
|
40
|
+
zzbinary.inputParameter("parm","io",XMLService::I_Binary.new('myIn',20,mybin))
|
41
|
+
zzbinary.setReturn("binary", XMLService::I_Binary.new('myOut',20,0x00))
|
42
|
+
# call IBM i
|
43
|
+
zzbinary.xmlservice
|
44
|
+
if mybin.to_s(16).upcase == zzbinary.xml_binary.xml_myOut.to_s
|
45
|
+
puts "good #{n}\n"
|
46
|
+
else
|
47
|
+
puts output
|
48
|
+
puts "bad #{n}\n"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
begin
|
54
|
+
threads = []
|
55
|
+
[1,2,3,4,5,6,7,8,9,10,11,12].each do |i|
|
56
|
+
threads << Thread.new do
|
57
|
+
puts "loop #{i}\n"
|
58
|
+
foo1(i)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
[101,102,103,104,105,106,107,108,109,1010,1011,1012].each do |i|
|
62
|
+
threads << Thread.new do
|
63
|
+
puts "loop #{i}\n"
|
64
|
+
foo2(i)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
[201,202,203,204,205,206,207,208,209,2010,2011,2012].each do |i|
|
68
|
+
threads << Thread.new do
|
69
|
+
puts "loop #{i}\n"
|
70
|
+
foo2(i)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
threads.each(&:join)
|
74
|
+
rescue Exception => e
|
75
|
+
puts "EXCEPTION: #{e.inspect}"
|
76
|
+
puts "MESSAGE: #{e.message}"
|
77
|
+
end
|
78
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# rake test # run tests normally
|
2
|
+
# rake test TEST=just_one_file.rb # run just one test file.
|
3
|
+
# rake test TESTOPTS="-v" # run in verbose mode
|
4
|
+
# rake test TESTOPTS="--runner=fox" # use the fox test runner
|
5
|
+
require 'rake/testtask'
|
6
|
+
|
7
|
+
Rake::TestTask.new do |t|
|
8
|
+
t.libs << "."
|
9
|
+
t.test_files = FileList['test_*.rb']
|
10
|
+
t.verbose = true
|
11
|
+
end
|
@@ -0,0 +1,270 @@
|
|
1
|
+
# File: test_70010_DriverCallPgmZZTEST.rb
|
2
|
+
ENV['TEST_ENV'] = "resttest"
|
3
|
+
require "../test_authorization/auth"
|
4
|
+
require "../test_data/rowcol"
|
5
|
+
|
6
|
+
class Test_70010_DriverCallPgmTestOnly < RowColUnitTest
|
7
|
+
# -------------------------------
|
8
|
+
# test functions (start with prefix test_)
|
9
|
+
# rake test -- Unit run alpha sort order
|
10
|
+
# run #1) test_0000_connect
|
11
|
+
# run #2) test_nnnn_xxx
|
12
|
+
# :
|
13
|
+
# run #n) test_9999_close
|
14
|
+
# -------------------------------
|
15
|
+
def test_0040_pgm_zztest_index_output
|
16
|
+
# call IBM i ZZTEST (see file ../test_data/zztest)
|
17
|
+
in_parm1 = {'inchara'=>'a','incharb'=>'b','indec1'=>11.1111,'indec2'=>222.22}
|
18
|
+
in_inds1 = {'dschara'=>'x','dscharb'=>'y','dsdec1'=>66.6666,'dsdec2'=>77777.77}
|
19
|
+
zztest = XMLService::I_PGM.new("ZZTEST", $toolkit_test_lib) <<
|
20
|
+
XMLService::I_a.new('inchara',1, in_parm1['inchara']) <<
|
21
|
+
XMLService::I_a.new('incharb',1, in_parm1['incharb']) <<
|
22
|
+
XMLService::I_p.new('indec1',7,4, in_parm1['indec1']) <<
|
23
|
+
XMLService::I_p.new('indec2',12,2,in_parm1['indec2']) <<
|
24
|
+
XMLService::I_DS.new("inds1",5,
|
25
|
+
[
|
26
|
+
XMLService::I_a.new('ds1chara',1, in_inds1['dschara']),
|
27
|
+
XMLService::I_a.new('ds1charb',1, in_inds1['dscharb']),
|
28
|
+
XMLService::I_p.new('ds1dec1',7,4, in_inds1['dsdec1']),
|
29
|
+
XMLService::I_p.new('ds1dec2',12,2,in_inds1['dsdec2']),
|
30
|
+
XMLService::I_DS.new("inds2",2,
|
31
|
+
[
|
32
|
+
XMLService::I_a.new('ds2chara',1, in_inds1['dschara']),
|
33
|
+
XMLService::I_a.new('ds2charb',1, in_inds1['dscharb']),
|
34
|
+
XMLService::I_p.new('ds2dec1',7,4, in_inds1['dsdec1']),
|
35
|
+
XMLService::I_p.new('ds2dec2',12,2,in_inds1['dsdec2']),
|
36
|
+
XMLService::I_DS.new("inds3",3,
|
37
|
+
[
|
38
|
+
XMLService::I_a.new('ds3chara',1, in_inds1['dschara']),
|
39
|
+
XMLService::I_a.new('ds3charb',1, in_inds1['dscharb']),
|
40
|
+
XMLService::I_p.new('ds3dec1',7,4, in_inds1['dsdec1']),
|
41
|
+
XMLService::I_p.new('ds3dec2',12,2,in_inds1['dsdec2'])
|
42
|
+
]),
|
43
|
+
XMLService::I_a.new('ds5chara',1, in_inds1['dschara']),
|
44
|
+
XMLService::I_a.new('ds5charb',1, in_inds1['dscharb']),
|
45
|
+
XMLService::I_p.new('ds5dec1',7,4, in_inds1['dsdec1']),
|
46
|
+
XMLService::I_p.new('ds5dec2',12,2,in_inds1['dsdec2'])
|
47
|
+
]),
|
48
|
+
XMLService::I_a.new('ds4chara',1, in_inds1['dschara']),
|
49
|
+
XMLService::I_a.new('ds4charb',1, in_inds1['dscharb']),
|
50
|
+
XMLService::I_p.new('ds4dec1',7,4, in_inds1['dsdec1']),
|
51
|
+
XMLService::I_p.new('ds4dec2',12,2,in_inds1['dsdec2'])
|
52
|
+
])
|
53
|
+
# call IBM i ZZTEST
|
54
|
+
zztest.xmlservice
|
55
|
+
# inspect
|
56
|
+
puts zztest.dump_inspect
|
57
|
+
# xmlservice error occurred?
|
58
|
+
rc = zztest.xmlservice_error
|
59
|
+
if rc
|
60
|
+
puts zztest.dump_all()
|
61
|
+
self.match_value(__method__,__LINE__,'error' ,false,rc)
|
62
|
+
end
|
63
|
+
|
64
|
+
# output
|
65
|
+
puts "#{zztest.name}:"
|
66
|
+
puts " inchara...#{zztest.response.inchara}"
|
67
|
+
puts " incharb...#{zztest.response.incharb}"
|
68
|
+
puts " indec1....#{zztest.response.indec1}"
|
69
|
+
puts " indec2....#{zztest.response.indec2}"
|
70
|
+
for i in 0..zztest.response.inds1.count-1
|
71
|
+
inds1 = zztest.response.inds1[i]
|
72
|
+
puts " inds1[#{i}]:"
|
73
|
+
puts " ds1chara...#{inds1.ds1chara}"
|
74
|
+
puts " ds1charb...#{inds1.ds1charb}"
|
75
|
+
puts " ds1dec1....#{inds1.ds1dec1}"
|
76
|
+
puts " ds1dec2....#{inds1.ds1dec2}"
|
77
|
+
for j in 0..inds1.inds2.count-1
|
78
|
+
inds2 = inds1.inds2[j]
|
79
|
+
puts " inds2[#{j}]:"
|
80
|
+
puts " ds2chara...#{inds2.ds2chara}"
|
81
|
+
puts " ds2charb...#{inds2.ds2charb}"
|
82
|
+
puts " ds2dec1....#{inds2.ds2dec1}"
|
83
|
+
puts " ds2dec2....#{inds2.ds2dec2}"
|
84
|
+
for k in 0..inds2.inds3.count-1
|
85
|
+
inds3 = inds2.inds3[j]
|
86
|
+
puts " inds3[#{k}]:"
|
87
|
+
puts " ds3chara...#{inds3.ds3chara}"
|
88
|
+
puts " ds3charb...#{inds3.ds3charb}"
|
89
|
+
puts " ds3dec1....#{inds3.ds3dec1}"
|
90
|
+
puts " ds3dec2....#{inds3.ds3dec2}"
|
91
|
+
end
|
92
|
+
puts " inds2[#{j}]:"
|
93
|
+
puts " ds5chara...#{inds2.ds5chara}"
|
94
|
+
puts " ds5charb...#{inds2.ds5charb}"
|
95
|
+
puts " ds5dec1....#{inds2.ds5dec1}"
|
96
|
+
puts " ds5dec2....#{inds2.ds5dec2}"
|
97
|
+
end
|
98
|
+
puts " inds1[#{i}]:"
|
99
|
+
puts " ds4chara...#{inds1.ds4chara}"
|
100
|
+
puts " ds4charb...#{inds1.ds4charb}"
|
101
|
+
puts " ds4dec1....#{inds1.ds4dec1}"
|
102
|
+
puts " ds4dec2....#{inds1.ds4dec2}"
|
103
|
+
end
|
104
|
+
# verify
|
105
|
+
self.match_value(__method__,__LINE__,'inchara' ,in_parm1['inchara'] ,zztest.response.inchara)
|
106
|
+
self.match_value(__method__,__LINE__,'incharb' ,in_parm1['incharb'] ,zztest.response.incharb)
|
107
|
+
self.match_value(__method__,__LINE__,'indec1' ,in_parm1['indec1'] ,zztest.response.indec1)
|
108
|
+
self.match_value(__method__,__LINE__,'indec2' ,in_parm1['indec2'] ,zztest.response.indec2)
|
109
|
+
for i in 0..zztest.response.inds1.count - 1
|
110
|
+
inds1 = zztest.response.inds1[i]
|
111
|
+
self.match_value(__method__,__LINE__,'ds1chara' ,in_inds1['dschara'] ,inds1.ds1chara)
|
112
|
+
self.match_value(__method__,__LINE__,'ds1charb' ,in_inds1['dscharb'] ,inds1.ds1charb)
|
113
|
+
self.match_value(__method__,__LINE__,'ds1dec1' ,in_inds1['dsdec1'] ,inds1.ds1dec1)
|
114
|
+
self.match_value(__method__,__LINE__,'ds1dec2' ,in_inds1['dsdec2'] ,inds1.ds1dec2)
|
115
|
+
for j in 0..inds1.inds2.count - 1
|
116
|
+
inds2 = inds1.inds2[j]
|
117
|
+
self.match_value(__method__,__LINE__,'ds2chara' ,in_inds1['dschara'] ,inds2.ds2chara)
|
118
|
+
self.match_value(__method__,__LINE__,'ds2charb' ,in_inds1['dscharb'] ,inds2.ds2charb)
|
119
|
+
self.match_value(__method__,__LINE__,'ds2dec1' ,in_inds1['dsdec1'] ,inds2.ds2dec1)
|
120
|
+
self.match_value(__method__,__LINE__,'ds2dec2' ,in_inds1['dsdec2'] ,inds2.ds2dec2)
|
121
|
+
for k in 0..inds2.inds3.count - 1
|
122
|
+
inds3 = inds2.inds3[k]
|
123
|
+
self.match_value(__method__,__LINE__,'ds2chara' ,in_inds1['dschara'] ,inds3.ds3chara)
|
124
|
+
self.match_value(__method__,__LINE__,'ds2charb' ,in_inds1['dscharb'] ,inds3.ds3charb)
|
125
|
+
self.match_value(__method__,__LINE__,'ds2dec1' ,in_inds1['dsdec1'] ,inds3.ds3dec1)
|
126
|
+
self.match_value(__method__,__LINE__,'ds2dec2' ,in_inds1['dsdec2'] ,inds3.ds3dec2)
|
127
|
+
end
|
128
|
+
self.match_value(__method__,__LINE__,'ds5chara' ,in_inds1['dschara'] ,inds2.ds5chara)
|
129
|
+
self.match_value(__method__,__LINE__,'ds5charb' ,in_inds1['dscharb'] ,inds2.ds5charb)
|
130
|
+
self.match_value(__method__,__LINE__,'ds5dec1' ,in_inds1['dsdec1'] ,inds2.ds5dec1)
|
131
|
+
self.match_value(__method__,__LINE__,'ds5dec2' ,in_inds1['dsdec2'] ,inds2.ds5dec2)
|
132
|
+
end
|
133
|
+
self.match_value(__method__,__LINE__,'ds4chara' ,in_inds1['dschara'] ,inds1.ds4chara)
|
134
|
+
self.match_value(__method__,__LINE__,'ds4charb' ,in_inds1['dscharb'] ,inds1.ds4charb)
|
135
|
+
self.match_value(__method__,__LINE__,'ds4dec1' ,in_inds1['dsdec1'] ,inds1.ds4dec1)
|
136
|
+
self.match_value(__method__,__LINE__,'ds4dec2' ,in_inds1['dsdec2'] ,inds1.ds4dec2)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_0050_pgm_zztest_each_output
|
141
|
+
# call IBM i ZZTEST (see file ../test_data/zztest)
|
142
|
+
in_parm1 = {'inchara'=>'a','incharb'=>'b','indec1'=>11.1111,'indec2'=>222.22}
|
143
|
+
in_inds1 = {'dschara'=>'x','dscharb'=>'y','dsdec1'=>66.6666,'dsdec2'=>77777.77}
|
144
|
+
zztest = XMLService::I_PGM.new("ZZTEST", $toolkit_test_lib) <<
|
145
|
+
XMLService::I_a.new('inchara',1, in_parm1['inchara']) <<
|
146
|
+
XMLService::I_a.new('incharb',1, in_parm1['incharb']) <<
|
147
|
+
XMLService::I_p.new('indec1',7,4, in_parm1['indec1']) <<
|
148
|
+
XMLService::I_p.new('indec2',12,2,in_parm1['indec2']) <<
|
149
|
+
XMLService::I_DS.new("inds1",5,
|
150
|
+
[
|
151
|
+
XMLService::I_a.new('ds1chara',1, in_inds1['dschara']),
|
152
|
+
XMLService::I_a.new('ds1charb',1, in_inds1['dscharb']),
|
153
|
+
XMLService::I_p.new('ds1dec1',7,4, in_inds1['dsdec1']),
|
154
|
+
XMLService::I_p.new('ds1dec2',12,2,in_inds1['dsdec2']),
|
155
|
+
XMLService::I_DS.new("inds2",2,
|
156
|
+
[
|
157
|
+
XMLService::I_a.new('ds2chara',1, in_inds1['dschara']),
|
158
|
+
XMLService::I_a.new('ds2charb',1, in_inds1['dscharb']),
|
159
|
+
XMLService::I_p.new('ds2dec1',7,4, in_inds1['dsdec1']),
|
160
|
+
XMLService::I_p.new('ds2dec2',12,2,in_inds1['dsdec2']),
|
161
|
+
XMLService::I_DS.new("inds3",3,
|
162
|
+
[
|
163
|
+
XMLService::I_a.new('ds3chara',1, in_inds1['dschara']),
|
164
|
+
XMLService::I_a.new('ds3charb',1, in_inds1['dscharb']),
|
165
|
+
XMLService::I_p.new('ds3dec1',7,4, in_inds1['dsdec1']),
|
166
|
+
XMLService::I_p.new('ds3dec2',12,2,in_inds1['dsdec2'])
|
167
|
+
]),
|
168
|
+
XMLService::I_a.new('ds5chara',1, in_inds1['dschara']),
|
169
|
+
XMLService::I_a.new('ds5charb',1, in_inds1['dscharb']),
|
170
|
+
XMLService::I_p.new('ds5dec1',7,4, in_inds1['dsdec1']),
|
171
|
+
XMLService::I_p.new('ds5dec2',12,2,in_inds1['dsdec2'])
|
172
|
+
]),
|
173
|
+
XMLService::I_a.new('ds4chara',1, in_inds1['dschara']),
|
174
|
+
XMLService::I_a.new('ds4charb',1, in_inds1['dscharb']),
|
175
|
+
XMLService::I_p.new('ds4dec1',7,4, in_inds1['dsdec1']),
|
176
|
+
XMLService::I_p.new('ds4dec2',12,2,in_inds1['dsdec2'])
|
177
|
+
])
|
178
|
+
# call IBM i ZZTEST
|
179
|
+
zztest.xmlservice
|
180
|
+
# inspect
|
181
|
+
puts zztest.dump_inspect
|
182
|
+
# xmlservice error occurred?
|
183
|
+
rc = zztest.xmlservice_error
|
184
|
+
if rc
|
185
|
+
puts zztest.dump_all()
|
186
|
+
self.match_value(__method__,__LINE__,'error' ,false,rc)
|
187
|
+
end
|
188
|
+
|
189
|
+
# output
|
190
|
+
puts "#{zztest.name}:"
|
191
|
+
puts " inchara...#{zztest.response.inchara}"
|
192
|
+
puts " incharb...#{zztest.response.incharb}"
|
193
|
+
puts " indec1....#{zztest.response.indec1}"
|
194
|
+
puts " indec2....#{zztest.response.indec2}"
|
195
|
+
inds1s = zztest.response.inds1
|
196
|
+
inds1s.each do |inds1|
|
197
|
+
puts " inds1[]:"
|
198
|
+
puts " ds1chara...#{inds1.ds1chara}"
|
199
|
+
puts " ds1charb...#{inds1.ds1charb}"
|
200
|
+
puts " ds1dec1....#{inds1.ds1dec1}"
|
201
|
+
puts " ds1dec2....#{inds1.ds1dec2}"
|
202
|
+
inds2s = inds1.inds2
|
203
|
+
inds2s.each do |inds2|
|
204
|
+
puts " inds2[]:"
|
205
|
+
puts " ds2chara...#{inds2.ds2chara}"
|
206
|
+
puts " ds2charb...#{inds2.ds2charb}"
|
207
|
+
puts " ds2dec1....#{inds2.ds2dec1}"
|
208
|
+
puts " ds2dec2....#{inds2.ds2dec2}"
|
209
|
+
inds3s = inds2.inds3
|
210
|
+
inds3s.each do |inds3|
|
211
|
+
puts " inds3[]:"
|
212
|
+
puts " ds3chara...#{inds3.ds3chara}"
|
213
|
+
puts " ds3charb...#{inds3.ds3charb}"
|
214
|
+
puts " ds3dec1....#{inds3.ds3dec1}"
|
215
|
+
puts " ds3dec2....#{inds3.ds3dec2}"
|
216
|
+
end
|
217
|
+
puts " inds2[]:"
|
218
|
+
puts " ds5chara...#{inds2.ds5chara}"
|
219
|
+
puts " ds5charb...#{inds2.ds5charb}"
|
220
|
+
puts " ds5dec1....#{inds2.ds5dec1}"
|
221
|
+
puts " ds5dec2....#{inds2.ds5dec2}"
|
222
|
+
end
|
223
|
+
puts " inds1[]:"
|
224
|
+
puts " ds4chara...#{inds1.ds4chara}"
|
225
|
+
puts " ds4charb...#{inds1.ds4charb}"
|
226
|
+
puts " ds4dec1....#{inds1.ds4dec1}"
|
227
|
+
puts " ds4dec2....#{inds1.ds4dec2}"
|
228
|
+
end
|
229
|
+
# verify
|
230
|
+
self.match_value(__method__,__LINE__,'inchara' ,in_parm1['inchara'] ,zztest.response.inchara)
|
231
|
+
self.match_value(__method__,__LINE__,'incharb' ,in_parm1['incharb'] ,zztest.response.incharb)
|
232
|
+
self.match_value(__method__,__LINE__,'indec1' ,in_parm1['indec1'] ,zztest.response.indec1)
|
233
|
+
self.match_value(__method__,__LINE__,'indec2' ,in_parm1['indec2'] ,zztest.response.indec2)
|
234
|
+
inds1s = zztest.response.inds1
|
235
|
+
inds1s.each do |inds1|
|
236
|
+
self.match_value(__method__,__LINE__,'ds1chara' ,in_inds1['dschara'] ,inds1.ds1chara)
|
237
|
+
self.match_value(__method__,__LINE__,'ds1charb' ,in_inds1['dscharb'] ,inds1.ds1charb)
|
238
|
+
self.match_value(__method__,__LINE__,'ds1dec1' ,in_inds1['dsdec1'] ,inds1.ds1dec1)
|
239
|
+
self.match_value(__method__,__LINE__,'ds1dec2' ,in_inds1['dsdec2'] ,inds1.ds1dec2)
|
240
|
+
inds2s = inds1.inds2
|
241
|
+
inds2s.each do |inds2|
|
242
|
+
self.match_value(__method__,__LINE__,'ds2chara' ,in_inds1['dschara'] ,inds2.ds2chara)
|
243
|
+
self.match_value(__method__,__LINE__,'ds2charb' ,in_inds1['dscharb'] ,inds2.ds2charb)
|
244
|
+
self.match_value(__method__,__LINE__,'ds2dec1' ,in_inds1['dsdec1'] ,inds2.ds2dec1)
|
245
|
+
self.match_value(__method__,__LINE__,'ds2dec2' ,in_inds1['dsdec2'] ,inds2.ds2dec2)
|
246
|
+
inds3s = inds2.inds3
|
247
|
+
inds3s.each do |inds3|
|
248
|
+
self.match_value(__method__,__LINE__,'ds2chara' ,in_inds1['dschara'] ,inds3.ds3chara)
|
249
|
+
self.match_value(__method__,__LINE__,'ds2charb' ,in_inds1['dscharb'] ,inds3.ds3charb)
|
250
|
+
self.match_value(__method__,__LINE__,'ds2dec1' ,in_inds1['dsdec1'] ,inds3.ds3dec1)
|
251
|
+
self.match_value(__method__,__LINE__,'ds2dec2' ,in_inds1['dsdec2'] ,inds3.ds3dec2)
|
252
|
+
end
|
253
|
+
self.match_value(__method__,__LINE__,'ds5chara' ,in_inds1['dschara'] ,inds2.ds5chara)
|
254
|
+
self.match_value(__method__,__LINE__,'ds5charb' ,in_inds1['dscharb'] ,inds2.ds5charb)
|
255
|
+
self.match_value(__method__,__LINE__,'ds5dec1' ,in_inds1['dsdec1'] ,inds2.ds5dec1)
|
256
|
+
self.match_value(__method__,__LINE__,'ds5dec2' ,in_inds1['dsdec2'] ,inds2.ds5dec2)
|
257
|
+
end
|
258
|
+
self.match_value(__method__,__LINE__,'ds4chara' ,in_inds1['dschara'] ,inds1.ds4chara)
|
259
|
+
self.match_value(__method__,__LINE__,'ds4charb' ,in_inds1['dscharb'] ,inds1.ds4charb)
|
260
|
+
self.match_value(__method__,__LINE__,'ds4dec1' ,in_inds1['dsdec1'] ,inds1.ds4dec1)
|
261
|
+
self.match_value(__method__,__LINE__,'ds4dec2' ,in_inds1['dsdec2'] ,inds1.ds4dec2)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
# -------------------------------
|
266
|
+
# non-test functions (no prefix test_)
|
267
|
+
# -------------------------------
|
268
|
+
|
269
|
+
end
|
270
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# rake test # run tests normally
|
2
|
+
# rake test TEST=just_one_file.rb # run just one test file.
|
3
|
+
# rake test TESTOPTS="-v" # run in verbose mode
|
4
|
+
# rake test TESTOPTS="--runner=fox" # use the fox test runner
|
5
|
+
require 'rake/testtask'
|
6
|
+
|
7
|
+
Rake::TestTask.new do |t|
|
8
|
+
t.libs << "."
|
9
|
+
t.test_files = FileList['test_*.rb']
|
10
|
+
t.verbose = true
|
11
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
# File: test_80010_DSLCallPgmZZCALL.rb
|
2
|
+
require "../test_authorization/auth"
|
3
|
+
require "../test_data/rowcol"
|
4
|
+
|
5
|
+
# D INCHARA S 1a
|
6
|
+
# D INCHARB S 1a
|
7
|
+
# D INDEC1 S 7p 4
|
8
|
+
# D INDEC2 S 12p 2
|
9
|
+
# D INDS1 DS
|
10
|
+
# D DSCHARA 1a
|
11
|
+
# D DSCHARB 1a
|
12
|
+
# D DSDEC1 7p 4
|
13
|
+
# D DSDEC2 12p 2
|
14
|
+
# *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
15
|
+
# * main(): Control flow
|
16
|
+
# *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
17
|
+
# C *Entry PLIST
|
18
|
+
# C PARM INCHARA
|
19
|
+
# C PARM INCHARB
|
20
|
+
# C PARM INDEC1
|
21
|
+
# C PARM INDEC2
|
22
|
+
# C PARM INDS1
|
23
|
+
|
24
|
+
class Test_80010_DSLCallPgmZZCALL < RowColUnitTest
|
25
|
+
# -------------------------------
|
26
|
+
# test functions (start with prefix test_)
|
27
|
+
# rake test -- Unit run alpha sort order
|
28
|
+
# run #1) test_0000_connect
|
29
|
+
# run #2) test_nnnn_xxx
|
30
|
+
# :
|
31
|
+
# run #n) test_9999_close
|
32
|
+
# -------------------------------
|
33
|
+
def test_0030_pgm_zzcall_array
|
34
|
+
# call IBM i ZZCALL (default values)
|
35
|
+
zzcall = XMLService::I_PGM.new("ZZCALL",$toolkit_test_lib,{'error'=>'fast'})
|
36
|
+
zzcall.input_parms do
|
37
|
+
char "inchara", 1
|
38
|
+
char "incharb", 1
|
39
|
+
dec "indec1", 7, 4
|
40
|
+
dec "indec2", 12, 2
|
41
|
+
struct("inds1", 1) do
|
42
|
+
char "dschara", 1
|
43
|
+
char "dscharb", 1
|
44
|
+
dec "dsdec1", 7, 4
|
45
|
+
dec "dsdec2", 12, 2
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# set it Tony way ... PARMn is implied
|
50
|
+
zzcall.input.PARM0.inchara = 'a'
|
51
|
+
zzcall.input.PARM1.incharb = 'a'
|
52
|
+
zzcall.input.PARM2.indec1 = 11.1111
|
53
|
+
zzcall.input.PARM3.indec2 = 11.11
|
54
|
+
zzcall.input.PARM4.inds1[0].dschara = 'a'
|
55
|
+
zzcall.input.PARM4.inds1[1].dscharb = 'a'
|
56
|
+
zzcall.input.PARM4.inds1[2].dsdec1 = 111.1111
|
57
|
+
zzcall.input.PARM4.inds1[3].dsdec2 = 1111.11
|
58
|
+
# puts zzcall.inspect
|
59
|
+
puts "\n+++++++++ dump_inspect ++++++++++++++++"
|
60
|
+
puts zzcall.dump_inspect
|
61
|
+
puts zzcall.to_xml
|
62
|
+
|
63
|
+
self.match_value(__method__,__LINE__,'inchara' ,'a' ,zzcall.input.PARM0.inchara)
|
64
|
+
self.match_value(__method__,__LINE__,'incharb' ,'a' ,zzcall.input.PARM1.incharb)
|
65
|
+
self.match_value(__method__,__LINE__,'indec1' ,11.1111 ,zzcall.input.PARM2.indec1)
|
66
|
+
self.match_value(__method__,__LINE__,'indec2' ,11.11 ,zzcall.input.PARM3.indec2)
|
67
|
+
self.match_value(__method__,__LINE__,'dschara' ,'a' ,zzcall.input.PARM4.inds1[0].dschara)
|
68
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'a' ,zzcall.input.PARM4.inds1[1].dscharb)
|
69
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,111.1111 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
70
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,1111.11 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
71
|
+
|
72
|
+
# set it Don way ... what is a parm?
|
73
|
+
zzcall.input.inchara = 'b'
|
74
|
+
zzcall.input.incharb = 'b'
|
75
|
+
zzcall.input.indec1 = 22.2222
|
76
|
+
zzcall.input.indec2 = 22.22
|
77
|
+
zzcall.input.inds1[0].dschara = 'b'
|
78
|
+
zzcall.input.inds1[1].dscharb = 'b'
|
79
|
+
zzcall.input.inds1[2].dsdec1 = 222.2222
|
80
|
+
zzcall.input.inds1[3].dsdec2 = 2222.22
|
81
|
+
# puts zzcall.inspect
|
82
|
+
puts "\n+++++++++ dump_inspect ++++++++++++++++"
|
83
|
+
puts zzcall.dump_inspect
|
84
|
+
puts zzcall.to_xml
|
85
|
+
|
86
|
+
self.match_value(__method__,__LINE__,'inchara' ,'b' ,zzcall.input.PARM0.inchara)
|
87
|
+
self.match_value(__method__,__LINE__,'incharb' ,'b' ,zzcall.input.PARM1.incharb)
|
88
|
+
self.match_value(__method__,__LINE__,'indec1' ,22.2222 ,zzcall.input.PARM2.indec1)
|
89
|
+
self.match_value(__method__,__LINE__,'indec2' ,22.22 ,zzcall.input.PARM3.indec2)
|
90
|
+
self.match_value(__method__,__LINE__,'dschara' ,'b' ,zzcall.input.PARM4.inds1[0].dschara)
|
91
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'b' ,zzcall.input.PARM4.inds1[1].dscharb)
|
92
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,222.2222 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
93
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,2222.22 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
94
|
+
|
95
|
+
|
96
|
+
# call IBM i ZZCALL
|
97
|
+
zzcall.execute
|
98
|
+
|
99
|
+
#puts zzcall.inspect
|
100
|
+
puts "\n+++++++++ dump_inspect ++++++++++++++++"
|
101
|
+
puts zzcall.dump_inspect
|
102
|
+
|
103
|
+
puts "\n+++++++++ output xml ++++++++++++++++"
|
104
|
+
puts zzcall.out_xml
|
105
|
+
|
106
|
+
|
107
|
+
# set it Aaron way ... just pass the data
|
108
|
+
parms = [ {'inchara'=>'1'},
|
109
|
+
{'incharb'=>'1'},
|
110
|
+
{'indec1'=>11.1111},
|
111
|
+
{'indec2'=>111.11},
|
112
|
+
{'inds1'=>[{'dschara'=>'2'},{'dscharb'=>'2'},{'dsdec1'=>22.2222},{'dsdec2'=>222.22}]} ]
|
113
|
+
zzcall.call(parms)
|
114
|
+
|
115
|
+
puts "\n+++++++++ input xml ++++++++++++++++"
|
116
|
+
puts zzcall.to_xml
|
117
|
+
|
118
|
+
self.match_value(__method__,__LINE__,'inchara' ,'1' ,zzcall.input.PARM0.inchara)
|
119
|
+
self.match_value(__method__,__LINE__,'incharb' ,'1' ,zzcall.input.PARM1.incharb)
|
120
|
+
self.match_value(__method__,__LINE__,'indec1' ,11.1111 ,zzcall.input.PARM2.indec1)
|
121
|
+
self.match_value(__method__,__LINE__,'indec2' ,111.11 ,zzcall.input.PARM3.indec2)
|
122
|
+
self.match_value(__method__,__LINE__,'dschara' ,'2' ,zzcall.input.PARM4.inds1[0].dschara)
|
123
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'2' ,zzcall.input.PARM4.inds1[1].dscharb)
|
124
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,22.2222 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
125
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,222.22 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
126
|
+
|
127
|
+
#puts zzcall.inspect
|
128
|
+
puts "\n+++++++++ dump_inspect ++++++++++++++++"
|
129
|
+
puts zzcall.dump_inspect
|
130
|
+
|
131
|
+
puts "\n+++++++++ output xml ++++++++++++++++"
|
132
|
+
puts zzcall.out_xml
|
133
|
+
|
134
|
+
# response xml with fewer dots ... clever naming
|
135
|
+
puts "\n+++++++++ output fewer ++++++++++++++++"
|
136
|
+
puts " inchara...#{zzcall.response.inchara}\n"
|
137
|
+
puts " incharb...#{zzcall.response.incharb}\n"
|
138
|
+
puts " indec1....#{zzcall.response.indec1}\n"
|
139
|
+
puts " indec2....#{zzcall.response.indec2}\n"
|
140
|
+
zzcall.response.inds1.each do |inds1|
|
141
|
+
puts " dschara...#{inds1.dschara}"
|
142
|
+
puts " dscharb...#{inds1.dscharb}"
|
143
|
+
puts " dsdec1....#{inds1.dsdec1}"
|
144
|
+
puts " dsdec2....#{inds1.dsdec2}"
|
145
|
+
end
|
146
|
+
# verify output
|
147
|
+
self.match_value(__method__,__LINE__,'inchara' ,'C' ,zzcall.response.inchara)
|
148
|
+
self.match_value(__method__,__LINE__,'incharb' ,'D' ,zzcall.response.incharb)
|
149
|
+
self.match_value(__method__,__LINE__,'indec1' ,321.1234 ,zzcall.response.indec1)
|
150
|
+
self.match_value(__method__,__LINE__,'indec2' ,1234567890.12 ,zzcall.response.indec2)
|
151
|
+
zzcall.response.inds1.each do |inds1|
|
152
|
+
self.match_value(__method__,__LINE__,'dschara' ,'E' ,inds1.dschara)
|
153
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'F' ,inds1.dscharb)
|
154
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,333.333 ,inds1.dsdec1)
|
155
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,4444444444.44 ,inds1.dsdec2)
|
156
|
+
end
|
157
|
+
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
|