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
data/test/README_IBM_i
ADDED
data/test/Rakefile
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# rake test # run tests normally
|
2
|
+
require 'rake/testtask'
|
3
|
+
task :default => [:test]
|
4
|
+
$startDir = Dir.pwd
|
5
|
+
$results = ""
|
6
|
+
|
7
|
+
task :doit do
|
8
|
+
puts "============================="
|
9
|
+
puts Dir.pwd
|
10
|
+
out = `rake test`
|
11
|
+
puts out
|
12
|
+
stats = out.split("Finished")
|
13
|
+
$results << "------------------\n"
|
14
|
+
$results << Dir.pwd << "\n"
|
15
|
+
$results << "Finished" << stats[1] << "\n"
|
16
|
+
end
|
17
|
+
|
18
|
+
task :test_60000 do
|
19
|
+
Dir.chdir($startDir)
|
20
|
+
Dir.chdir("./test_60000_toolkit_driver")
|
21
|
+
Rake::Task['doit'].execute
|
22
|
+
end
|
23
|
+
task :test_80000 do
|
24
|
+
Dir.chdir($startDir)
|
25
|
+
Dir.chdir("./test_80000_toolkit_dsl")
|
26
|
+
Rake::Task['doit'].execute
|
27
|
+
end
|
28
|
+
task :test_result do
|
29
|
+
puts "============================="
|
30
|
+
puts "============================="
|
31
|
+
puts "============================="
|
32
|
+
puts $results
|
33
|
+
end
|
34
|
+
|
35
|
+
task :test => [
|
36
|
+
:test_60000,
|
37
|
+
:test_80000,
|
38
|
+
:test_result
|
39
|
+
]
|
40
|
+
|
41
|
+
|
42
|
+
|
data/test/genpassword.rb
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'xmlservice'
|
2
|
+
require 'active_record'
|
3
|
+
require 'ibm_db'
|
4
|
+
require 'pathname'
|
5
|
+
|
6
|
+
puts "Input: "
|
7
|
+
ARGV.each do|a|
|
8
|
+
puts " Argument: #{a}"
|
9
|
+
end
|
10
|
+
|
11
|
+
puts "Output: "
|
12
|
+
if (ARGV.count < 3)
|
13
|
+
puts "Syntax:"
|
14
|
+
puts " ruby genpassword.rb db user password [key]"
|
15
|
+
puts " db - *LOCAL (see WRKRDBDIRE)"
|
16
|
+
puts " user - user profile id"
|
17
|
+
puts " password - user profile password"
|
18
|
+
puts " Optional:"
|
19
|
+
puts " key - pass key (generate if missing)"
|
20
|
+
puts " - /path/key.yml "
|
21
|
+
puts " - YIPS4321AAAAAAAAAAAAAAA132424245 (actual key)"
|
22
|
+
exit(-1)
|
23
|
+
end
|
24
|
+
|
25
|
+
$db = ARGV[0]
|
26
|
+
$user = ARGV[1]
|
27
|
+
$pass = ARGV[2]
|
28
|
+
# $db = "LP0364D"
|
29
|
+
# $user = "DB2"
|
30
|
+
# $pass = "NICE2DB2"
|
31
|
+
ActiveXMLService::Base.establish_connection(
|
32
|
+
:adapter => 'ibm_db',
|
33
|
+
:database => $db,
|
34
|
+
:username => $user,
|
35
|
+
:password => $pass,
|
36
|
+
:connection => "ActiveRecord",
|
37
|
+
:install => "XMLSERVICE",
|
38
|
+
:ctl => "*sbmjob",
|
39
|
+
:ipc => "/tmp/ruby042",
|
40
|
+
:size => 15000000,
|
41
|
+
:head => "<?xml version='1.0'?>"
|
42
|
+
)
|
43
|
+
$isnew = false
|
44
|
+
if (ARGV.count < 4)
|
45
|
+
$key = ActiveXMLService::Base.generate_key()
|
46
|
+
$isnew = true
|
47
|
+
else
|
48
|
+
$key = ARGV[3]
|
49
|
+
if $key.include? ".yml"
|
50
|
+
yaml_file = $key
|
51
|
+
rfile = Pathname.new(yaml_file)
|
52
|
+
if rfile
|
53
|
+
f = open(rfile.to_s)
|
54
|
+
doc = YAML::load_stream( f )
|
55
|
+
doc.each do |key, value|
|
56
|
+
key.each do |key0, value0|
|
57
|
+
$key = value0
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
penc = ActiveXMLService::Base.generate_password($pass,$key)
|
64
|
+
puts
|
65
|
+
puts "config/database.yml"
|
66
|
+
puts "xmlservice: &xmlservice"
|
67
|
+
puts " connection: ActiveRecord"
|
68
|
+
puts " install: XMLSERVICE"
|
69
|
+
puts " ctl: *sbmjob"
|
70
|
+
puts " ipc: /tmp/ruby042"
|
71
|
+
puts " size: 15000000"
|
72
|
+
puts " head: \"<?xml version='1.0'?>\""
|
73
|
+
puts "development:"
|
74
|
+
puts " adapter: ibm_db"
|
75
|
+
puts " database: #{$db}"
|
76
|
+
puts " username: #{$user}"
|
77
|
+
puts " pwd_yaml: /path/password.yml"
|
78
|
+
puts " -- or --"
|
79
|
+
puts " pwd_enc: #{penc}"
|
80
|
+
puts " key_yaml: /path/key.yml"
|
81
|
+
puts " <<: *xmlservice"
|
82
|
+
puts "production:"
|
83
|
+
puts " adapter: ibm_db"
|
84
|
+
puts " database: #{$db}"
|
85
|
+
puts " username: #{$user}"
|
86
|
+
puts " pwd_yaml: /path/password.yml"
|
87
|
+
puts " <<: *xmlservice"
|
88
|
+
puts "test:"
|
89
|
+
puts " adapter: ibm_db"
|
90
|
+
puts " database: #{$db}"
|
91
|
+
puts " username: #{$user}"
|
92
|
+
puts " pwd_yaml: /path/password.yml"
|
93
|
+
puts " <<: *xmlservice"
|
94
|
+
puts
|
95
|
+
puts "/path/password.yml"
|
96
|
+
puts "#{$user}:"
|
97
|
+
puts " pwd_enc: #{penc}"
|
98
|
+
puts " key_yaml: /path/key.yml"
|
99
|
+
puts
|
100
|
+
if $isnew
|
101
|
+
puts "Warning: "
|
102
|
+
puts " pwd_key is new (generated now)"
|
103
|
+
puts " re-generate any exsisting"
|
104
|
+
puts " password.yml encrypted passwords"
|
105
|
+
puts " with a new key.yml (below)"
|
106
|
+
end
|
107
|
+
puts
|
108
|
+
puts "/path/key.yml"
|
109
|
+
puts "pwd_key: #{$key}"
|
110
|
+
|
111
|
+
|
@@ -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,403 @@
|
|
1
|
+
# File: test_60010_DriverCallPgmZZCALL.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_60010_DriverCallPgmZZCALL < 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 << XMLService::I_a.new('inchara',1,'s')
|
37
|
+
zzcall << XMLService::I_a.new('incharb',1,'r')
|
38
|
+
zzcall << XMLService::I_p.new('indec1',7,4,55.1111)
|
39
|
+
zzcall << XMLService::I_p.new('indec2',12,2,333.22)
|
40
|
+
zzcall << XMLService::I_DS.new('inds1',1,
|
41
|
+
[
|
42
|
+
XMLService::I_a.new('dschara',1,'t'),
|
43
|
+
XMLService::I_a.new('dscharb',1,'f'),
|
44
|
+
XMLService::I_p.new('dsdec1',7,4,77.6666),
|
45
|
+
XMLService::I_p.new('dsdec2',12,2,88888.77)
|
46
|
+
])
|
47
|
+
|
48
|
+
|
49
|
+
# set input variables for call ... normal Ruby OO object path
|
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 "\n+++++++++ input normal ++++++++++++++++"
|
59
|
+
puts zzcall.to_xml
|
60
|
+
# verify input
|
61
|
+
self.match_value(__method__,__LINE__,'inchara' ,'a' ,zzcall.input.PARM0.inchara)
|
62
|
+
self.match_value(__method__,__LINE__,'incharb' ,'a' ,zzcall.input.PARM1.incharb)
|
63
|
+
self.match_value(__method__,__LINE__,'indec1' ,11.1111 ,zzcall.input.PARM2.indec1)
|
64
|
+
self.match_value(__method__,__LINE__,'indec2' ,11.11 ,zzcall.input.PARM3.indec2)
|
65
|
+
self.match_value(__method__,__LINE__,'dschara' ,'a' ,zzcall.input.PARM4.inds1[0].dschara)
|
66
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'a' ,zzcall.input.PARM4.inds1[1].dscharb)
|
67
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,111.1111 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
68
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,1111.11 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
69
|
+
|
70
|
+
# set input with fewer dots ... clever naming
|
71
|
+
zzcall.input.inchara = 'b'
|
72
|
+
zzcall.input.incharb = 'b'
|
73
|
+
zzcall.input.indec1 = 22.2222
|
74
|
+
zzcall.input.indec2 = 22.22
|
75
|
+
zzcall.input.inds1[0].dschara = 'b'
|
76
|
+
zzcall.input.inds1[1].dscharb = 'b'
|
77
|
+
zzcall.input.inds1[2].dsdec1 = 222.2222
|
78
|
+
zzcall.input.inds1[3].dsdec2 = 2222.22
|
79
|
+
puts "\n+++++++++ input fewer ++++++++++++++++"
|
80
|
+
puts zzcall.to_xml
|
81
|
+
# verify input
|
82
|
+
self.match_value(__method__,__LINE__,'inchara' ,'b' ,zzcall.input.PARM0.inchara)
|
83
|
+
self.match_value(__method__,__LINE__,'incharb' ,'b' ,zzcall.input.PARM1.incharb)
|
84
|
+
self.match_value(__method__,__LINE__,'indec1' ,22.2222 ,zzcall.input.PARM2.indec1)
|
85
|
+
self.match_value(__method__,__LINE__,'indec2' ,22.22 ,zzcall.input.PARM3.indec2)
|
86
|
+
self.match_value(__method__,__LINE__,'dschara' ,'b' ,zzcall.input.PARM4.inds1[0].dschara)
|
87
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'b' ,zzcall.input.PARM4.inds1[1].dscharb)
|
88
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,222.2222 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
89
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,2222.22 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
90
|
+
|
91
|
+
|
92
|
+
# call IBM i ZZCALL
|
93
|
+
zzcall.execute
|
94
|
+
|
95
|
+
# xmlservice error occurred?
|
96
|
+
rc = zzcall.xmlservice_error
|
97
|
+
if rc
|
98
|
+
puts zzcall.dump_error
|
99
|
+
self.match_value(__method__,__LINE__,'error' ,false,rc)
|
100
|
+
end
|
101
|
+
|
102
|
+
#puts zzcall.inspect
|
103
|
+
puts "\n+++++++++ dump_inspect ++++++++++++++++"
|
104
|
+
puts zzcall.dump_inspect
|
105
|
+
|
106
|
+
puts "\n+++++++++ output xml ++++++++++++++++"
|
107
|
+
puts zzcall.out_xml
|
108
|
+
|
109
|
+
# response xml ... normal Ruby OO object path
|
110
|
+
puts "\n+++++++++ output normal ++++++++++++++++"
|
111
|
+
puts " inchara...#{zzcall.response.PARM0.inchara}\n"
|
112
|
+
puts " incharb...#{zzcall.response.PARM1.incharb}\n"
|
113
|
+
puts " indec1....#{zzcall.response.PARM2.indec1}\n"
|
114
|
+
puts " indec2....#{zzcall.response.PARM3.indec2}\n"
|
115
|
+
for i in 0..zzcall.response.PARM4.inds1.count-1
|
116
|
+
puts " inds1[#{i}] = ["
|
117
|
+
puts " dschara...#{zzcall.response.PARM4.inds1[i].dschara}"
|
118
|
+
puts " dscharb...#{zzcall.response.PARM4.inds1[i].dscharb}"
|
119
|
+
puts " dsdec1....#{zzcall.response.PARM4.inds1[i].dsdec1}"
|
120
|
+
puts " dsdec2....#{zzcall.response.PARM4.inds1[i].dsdec2}"
|
121
|
+
puts " ]\n"
|
122
|
+
end
|
123
|
+
# verify response
|
124
|
+
self.match_value(__method__,__LINE__,'inchara' ,'C' ,zzcall.response.PARM0.inchara)
|
125
|
+
self.match_value(__method__,__LINE__,'incharb' ,'D' ,zzcall.response.PARM1.incharb)
|
126
|
+
self.match_value(__method__,__LINE__,'indec1' ,321.1234 ,zzcall.response.PARM2.indec1)
|
127
|
+
self.match_value(__method__,__LINE__,'indec2' ,1234567890.12 ,zzcall.response.PARM3.indec2)
|
128
|
+
for i in 0..zzcall.response.PARM4.inds1.count - 1
|
129
|
+
self.match_value(__method__,__LINE__,'dschara' ,'E' ,zzcall.response.PARM4.inds1[i].dschara)
|
130
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'F' ,zzcall.response.PARM4.inds1[i].dscharb)
|
131
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,333.333 ,zzcall.response.PARM4.inds1[i].dsdec1)
|
132
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,4444444444.44 ,zzcall.response.PARM4.inds1[i].dsdec2)
|
133
|
+
end
|
134
|
+
|
135
|
+
# response xml with fewer dots ... clever naming
|
136
|
+
puts "\n+++++++++ output fewer ++++++++++++++++"
|
137
|
+
puts " inchara...#{zzcall.response.inchara}\n"
|
138
|
+
puts " incharb...#{zzcall.response.incharb}\n"
|
139
|
+
puts " indec1....#{zzcall.response.indec1}\n"
|
140
|
+
puts " indec2....#{zzcall.response.indec2}\n"
|
141
|
+
zzcall.response.inds1.each do |inds1|
|
142
|
+
puts " dschara...#{inds1.dschara}"
|
143
|
+
puts " dscharb...#{inds1.dscharb}"
|
144
|
+
puts " dsdec1....#{inds1.dsdec1}"
|
145
|
+
puts " dsdec2....#{inds1.dsdec2}"
|
146
|
+
end
|
147
|
+
# verify response
|
148
|
+
self.match_value(__method__,__LINE__,'inchara' ,'C' ,zzcall.response.inchara)
|
149
|
+
self.match_value(__method__,__LINE__,'incharb' ,'D' ,zzcall.response.incharb)
|
150
|
+
self.match_value(__method__,__LINE__,'indec1' ,321.1234 ,zzcall.response.indec1)
|
151
|
+
self.match_value(__method__,__LINE__,'indec2' ,1234567890.12 ,zzcall.response.indec2)
|
152
|
+
zzcall.response.inds1.each do |inds1|
|
153
|
+
self.match_value(__method__,__LINE__,'dschara' ,'E' ,inds1.dschara)
|
154
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'F' ,inds1.dscharb)
|
155
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,333.333 ,inds1.dsdec1)
|
156
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,4444444444.44 ,inds1.dsdec2)
|
157
|
+
end
|
158
|
+
|
159
|
+
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_0040_pgm_zzcall_hash
|
163
|
+
# call IBM i ZZCALL (default values)
|
164
|
+
zzcall = XMLService::I_PGM.new("ZZCALL",$toolkit_test_lib,{'error'=>'fast'})
|
165
|
+
zzcall.inputParameter('willy','both',XMLService::I_a.new('inchara',1,'s'))
|
166
|
+
zzcall.inputParameter('nilly','both',XMLService::I_a.new('incharb',1,'r'))
|
167
|
+
zzcall.inputParameter('silly','both',XMLService::I_p.new('indec1',7,4,55.1111))
|
168
|
+
zzcall.inputParameter('tilly','both',XMLService::I_p.new('indec2',12,2,333.22))
|
169
|
+
zzcall.inputParameter('filly','both',XMLService::I_DS.new('inds1',1,
|
170
|
+
{
|
171
|
+
'dschara'=>XMLService::I_a.new('dschara',1,'t'),
|
172
|
+
'dscharb'=>XMLService::I_a.new('dscharb',1,'f'),
|
173
|
+
'dsdec1'=>XMLService::I_p.new('dsdec1',7,4,77.6666),
|
174
|
+
'dsdec2'=>XMLService::I_p.new('dsdec2',12,2,88888.77)
|
175
|
+
}))
|
176
|
+
|
177
|
+
# set input variables for call ... normal Ruby OO object path
|
178
|
+
zzcall.input.willy.inchara = 'a'
|
179
|
+
zzcall.input.nilly.incharb = 'a'
|
180
|
+
zzcall.input.silly.indec1 = 11.1111
|
181
|
+
zzcall.input.tilly.indec2 = 11.11
|
182
|
+
zzcall.input.filly.inds1['dschara'].dschara = 'a'
|
183
|
+
zzcall.input.filly.inds1['dscharb'].dscharb = 'a'
|
184
|
+
zzcall.input.filly.inds1['dsdec1'].dsdec1 = 111.1111
|
185
|
+
zzcall.input.filly.inds1['dsdec2'].dsdec2 = 111.11
|
186
|
+
puts "\n+++++++++ input normal ++++++++++++++++"
|
187
|
+
puts zzcall.to_xml
|
188
|
+
self.match_value(__method__,__LINE__,'inchara' ,'a' ,zzcall.input.willy.inchara)
|
189
|
+
self.match_value(__method__,__LINE__,'incharb' ,'a' ,zzcall.input.nilly.incharb)
|
190
|
+
self.match_value(__method__,__LINE__,'indec1' ,11.1111 ,zzcall.input.silly.indec1)
|
191
|
+
self.match_value(__method__,__LINE__,'indec2' ,11.11 ,zzcall.input.tilly.indec2)
|
192
|
+
self.match_value(__method__,__LINE__,'dschara' ,'a' ,zzcall.input.filly.inds1['dschara'].dschara)
|
193
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'a' ,zzcall.input.filly.inds1['dscharb'].dscharb)
|
194
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,111.1111 ,zzcall.input.filly.inds1['dsdec1'].dsdec1)
|
195
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,111.11 ,zzcall.input.filly.inds1['dsdec2'].dsdec2)
|
196
|
+
|
197
|
+
|
198
|
+
# set input with fewer dots ... clever naming
|
199
|
+
zzcall.input.inchara = 'b'
|
200
|
+
zzcall.input.incharb = 'b'
|
201
|
+
zzcall.input.indec1 = 22.2222
|
202
|
+
zzcall.input.indec2 = 22.22
|
203
|
+
zzcall.input.inds1['dschara'].dschara = 'b'
|
204
|
+
zzcall.input.inds1['dscharb'].dscharb = 'b'
|
205
|
+
zzcall.input.inds1['dsdec1'].dsdec1 = 222.2222
|
206
|
+
zzcall.input.inds1['dsdec2'].dsdec2 = 222.22
|
207
|
+
puts "\n+++++++++ input fewer ++++++++++++++++"
|
208
|
+
puts zzcall.to_xml
|
209
|
+
self.match_value(__method__,__LINE__,'inchara' ,'b' ,zzcall.input.willy.inchara)
|
210
|
+
self.match_value(__method__,__LINE__,'incharb' ,'b' ,zzcall.input.nilly.incharb)
|
211
|
+
self.match_value(__method__,__LINE__,'indec1' ,22.2222 ,zzcall.input.silly.indec1)
|
212
|
+
self.match_value(__method__,__LINE__,'indec2' ,22.22 ,zzcall.input.tilly.indec2)
|
213
|
+
self.match_value(__method__,__LINE__,'dschara' ,'b' ,zzcall.input.filly.inds1['dschara'].dschara)
|
214
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'b' ,zzcall.input.filly.inds1['dscharb'].dscharb)
|
215
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,222.2222 ,zzcall.input.filly.inds1['dsdec1'].dsdec1)
|
216
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,222.22 ,zzcall.input.filly.inds1['dsdec2'].dsdec2)
|
217
|
+
|
218
|
+
# call IBM i ZZCALL
|
219
|
+
zzcall.execute
|
220
|
+
|
221
|
+
# xmlservice error occurred?
|
222
|
+
rc = zzcall.xmlservice_error
|
223
|
+
if rc
|
224
|
+
puts zzcall.dump_error()
|
225
|
+
self.match_value(__method__,__LINE__,'error' ,false,rc)
|
226
|
+
end
|
227
|
+
|
228
|
+
#puts zzcall.inspect
|
229
|
+
puts "\n+++++++++ dump_inspect ++++++++++++++++"
|
230
|
+
puts zzcall.dump_inspect
|
231
|
+
|
232
|
+
puts "\n+++++++++ output xml ++++++++++++++++"
|
233
|
+
puts zzcall.out_xml
|
234
|
+
|
235
|
+
|
236
|
+
# response xml ... normal Ruby OO object path
|
237
|
+
puts "\n+++++++++ output normal ++++++++++++++++"
|
238
|
+
puts " inchara...#{zzcall.response.willy.inchara}\n"
|
239
|
+
puts " incharb...#{zzcall.response.nilly.incharb}\n"
|
240
|
+
puts " indec1....#{zzcall.response.silly.indec1}\n"
|
241
|
+
puts " indec2....#{zzcall.response.tilly.indec2}\n"
|
242
|
+
zzcall.response.filly.inds1.each do |inds1|
|
243
|
+
puts " dschara...#{inds1.dschara}"
|
244
|
+
puts " dscharb...#{inds1.dscharb}"
|
245
|
+
puts " dsdec1....#{inds1.dsdec1}"
|
246
|
+
puts " dsdec2....#{inds1.dsdec2}"
|
247
|
+
end
|
248
|
+
# verify output
|
249
|
+
self.match_value(__method__,__LINE__,'inchara' ,'C' ,zzcall.response.willy.inchara)
|
250
|
+
self.match_value(__method__,__LINE__,'incharb' ,'D' ,zzcall.response.nilly.incharb)
|
251
|
+
self.match_value(__method__,__LINE__,'indec1' ,321.1234 ,zzcall.response.silly.indec1)
|
252
|
+
self.match_value(__method__,__LINE__,'indec2' ,1234567890.12 ,zzcall.response.tilly.indec2)
|
253
|
+
zzcall.response.filly.inds1.each do |inds1|
|
254
|
+
self.match_value(__method__,__LINE__,'dschara' ,'E' ,inds1.dschara)
|
255
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'F' ,inds1.dscharb)
|
256
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,333.333 ,inds1.dsdec1)
|
257
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,4444444444.44 ,inds1.dsdec2)
|
258
|
+
end
|
259
|
+
|
260
|
+
# response xml with fewer dots ... clever naming
|
261
|
+
puts "\n+++++++++ output fewer ++++++++++++++++"
|
262
|
+
puts " inchara...#{zzcall.response.inchara}\n"
|
263
|
+
puts " incharb...#{zzcall.response.incharb}\n"
|
264
|
+
puts " indec1....#{zzcall.response.indec1}\n"
|
265
|
+
puts " indec2....#{zzcall.response.indec2}\n"
|
266
|
+
zzcall.response.inds1.each do |inds1|
|
267
|
+
puts " dschara...#{inds1.dschara}"
|
268
|
+
puts " dscharb...#{inds1.dscharb}"
|
269
|
+
puts " dsdec1....#{inds1.dsdec1}"
|
270
|
+
puts " dsdec2....#{inds1.dsdec2}"
|
271
|
+
end
|
272
|
+
# verify output
|
273
|
+
self.match_value(__method__,__LINE__,'inchara' ,'C' ,zzcall.response.inchara)
|
274
|
+
self.match_value(__method__,__LINE__,'incharb' ,'D' ,zzcall.response.incharb)
|
275
|
+
self.match_value(__method__,__LINE__,'indec1' ,321.1234 ,zzcall.response.indec1)
|
276
|
+
self.match_value(__method__,__LINE__,'indec2' ,1234567890.12 ,zzcall.response.indec2)
|
277
|
+
zzcall.response.inds1.each do |inds1|
|
278
|
+
self.match_value(__method__,__LINE__,'dschara' ,'E' ,inds1.dschara)
|
279
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'F' ,inds1.dscharb)
|
280
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,333.333 ,inds1.dsdec1)
|
281
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,4444444444.44 ,inds1.dsdec2)
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
|
286
|
+
def test_0130_pgm_zzcall_array
|
287
|
+
# call IBM i ZZCALL (default values)
|
288
|
+
zzcall = XMLService::I_PGM.new("ZZCALL",$toolkit_test_lib,{'error'=>'fast'})
|
289
|
+
zzcall << XMLService::I_a.new('inchara',1,'s')
|
290
|
+
zzcall << XMLService::I_a.new('incharb',1,'r')
|
291
|
+
zzcall << XMLService::I_p.new('indec1',7,4,55.1111)
|
292
|
+
zzcall << XMLService::I_p.new('indec2',12,2,333.22)
|
293
|
+
zzcall << XMLService::I_DS.new('inds1',1,
|
294
|
+
[
|
295
|
+
XMLService::I_a.new('dschara',1,'t'),
|
296
|
+
XMLService::I_a.new('dscharb',1,'f'),
|
297
|
+
XMLService::I_p.new('dsdec1',7,4,77.6666),
|
298
|
+
XMLService::I_p.new('dsdec2',12,2,88888.77)
|
299
|
+
])
|
300
|
+
|
301
|
+
puts "\n+++++++++ input call array of hash params ++++++++++++++++"
|
302
|
+
parms = [ {'inchara'=>'1'},
|
303
|
+
{'incharb'=>'1'},
|
304
|
+
{'indec1'=>11.1111},
|
305
|
+
{'indec2'=>111.11},
|
306
|
+
{'inds1'=>[{'dschara'=>'2'},{'dscharb'=>'2'},{'dsdec1'=>22.2222},{'dsdec2'=>222.22}]} ]
|
307
|
+
zzcall.call(parms)
|
308
|
+
puts zzcall.to_xml
|
309
|
+
self.match_value(__method__,__LINE__,'inchara' ,'1' ,zzcall.input.PARM0.inchara)
|
310
|
+
self.match_value(__method__,__LINE__,'incharb' ,'1' ,zzcall.input.PARM1.incharb)
|
311
|
+
self.match_value(__method__,__LINE__,'indec1' ,11.1111 ,zzcall.input.PARM2.indec1)
|
312
|
+
self.match_value(__method__,__LINE__,'indec2' ,111.11 ,zzcall.input.PARM3.indec2)
|
313
|
+
self.match_value(__method__,__LINE__,'dschara' ,'2' ,zzcall.input.PARM4.inds1[0].dschara)
|
314
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'2' ,zzcall.input.PARM4.inds1[1].dscharb)
|
315
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,22.2222 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
316
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,222.22 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
317
|
+
|
318
|
+
|
319
|
+
puts "\n+++++++++ input call individual hash params ++++++++++++++++"
|
320
|
+
zzcall.call(
|
321
|
+
{'inchara'=>'3'},
|
322
|
+
{'incharb'=>'3'},
|
323
|
+
{'indec1'=>33.3333},
|
324
|
+
{'indec2'=>333.33},
|
325
|
+
{'inds1'=>[{'dschara'=>'4'},{'dscharb'=>'4'},{'dsdec1'=>44.4444},{'dsdec2'=>444.44}]})
|
326
|
+
puts zzcall.to_xml
|
327
|
+
self.match_value(__method__,__LINE__,'inchara' ,'3' ,zzcall.input.PARM0.inchara)
|
328
|
+
self.match_value(__method__,__LINE__,'incharb' ,'3' ,zzcall.input.PARM1.incharb)
|
329
|
+
self.match_value(__method__,__LINE__,'indec1' ,33.3333 ,zzcall.input.PARM2.indec1)
|
330
|
+
self.match_value(__method__,__LINE__,'indec2' ,333.33 ,zzcall.input.PARM3.indec2)
|
331
|
+
self.match_value(__method__,__LINE__,'dschara' ,'4' ,zzcall.input.PARM4.inds1[0].dschara)
|
332
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'4' ,zzcall.input.PARM4.inds1[1].dscharb)
|
333
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,44.4444 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
334
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,444.44 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
335
|
+
|
336
|
+
|
337
|
+
puts "\n+++++++++ input call individual hash params (set one parm) ++++++++++++++++"
|
338
|
+
zzcall.call({'indec1'=>55.5555})
|
339
|
+
puts zzcall.to_xml
|
340
|
+
self.match_value(__method__,__LINE__,'inchara' ,'3' ,zzcall.input.PARM0.inchara)
|
341
|
+
self.match_value(__method__,__LINE__,'incharb' ,'3' ,zzcall.input.PARM1.incharb)
|
342
|
+
self.match_value(__method__,__LINE__,'indec1' ,55.5555 ,zzcall.input.PARM2.indec1)
|
343
|
+
self.match_value(__method__,__LINE__,'indec2' ,333.33 ,zzcall.input.PARM3.indec2)
|
344
|
+
self.match_value(__method__,__LINE__,'dschara' ,'4' ,zzcall.input.PARM4.inds1[0].dschara)
|
345
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'4' ,zzcall.input.PARM4.inds1[1].dscharb)
|
346
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,44.4444 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
347
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,444.44 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
348
|
+
|
349
|
+
|
350
|
+
puts "\n+++++++++ input call individual hash params (set parm DS) ++++++++++++++++"
|
351
|
+
zzcall.call({'inds1'=>[{'dschara'=>'5'},{'dscharb'=>'5'},{'dsdec1'=>55.5555},{'dsdec2'=>555.55}]})
|
352
|
+
puts zzcall.to_xml
|
353
|
+
self.match_value(__method__,__LINE__,'inchara' ,'3' ,zzcall.input.PARM0.inchara)
|
354
|
+
self.match_value(__method__,__LINE__,'incharb' ,'3' ,zzcall.input.PARM1.incharb)
|
355
|
+
self.match_value(__method__,__LINE__,'indec1' ,55.5555 ,zzcall.input.PARM2.indec1)
|
356
|
+
self.match_value(__method__,__LINE__,'indec2' ,333.33 ,zzcall.input.PARM3.indec2)
|
357
|
+
self.match_value(__method__,__LINE__,'dschara' ,'5' ,zzcall.input.PARM4.inds1[0].dschara)
|
358
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'5' ,zzcall.input.PARM4.inds1[1].dscharb)
|
359
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,55.5555 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
360
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,555.55 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
361
|
+
|
362
|
+
|
363
|
+
puts "\n+++++++++ input call array of hash params ++++++++++++++++"
|
364
|
+
parms = [ 'inchara'=>'6',
|
365
|
+
'incharb'=>'6',
|
366
|
+
'indec1'=>66.6666,
|
367
|
+
'indec2'=>666.66,
|
368
|
+
'inds1'=>[{'dschara'=>'7'},{'dscharb'=>'7'},{'dsdec1'=>77.7777},{'dsdec2'=>777.77}] ]
|
369
|
+
zzcall.call(parms)
|
370
|
+
puts zzcall.to_xml
|
371
|
+
self.match_value(__method__,__LINE__,'inchara' ,'6' ,zzcall.input.PARM0.inchara)
|
372
|
+
self.match_value(__method__,__LINE__,'incharb' ,'6' ,zzcall.input.PARM1.incharb)
|
373
|
+
self.match_value(__method__,__LINE__,'indec1' ,66.6666 ,zzcall.input.PARM2.indec1)
|
374
|
+
self.match_value(__method__,__LINE__,'indec2' ,666.66 ,zzcall.input.PARM3.indec2)
|
375
|
+
self.match_value(__method__,__LINE__,'dschara' ,'7' ,zzcall.input.PARM4.inds1[0].dschara)
|
376
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'7' ,zzcall.input.PARM4.inds1[1].dscharb)
|
377
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,77.7777 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
378
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,777.77 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
379
|
+
|
380
|
+
end
|
381
|
+
|
382
|
+
def not_work_test_0000_pgm_zzcall_array
|
383
|
+
puts "\n+++++++++ input call array of hash params ++++++++++++++++"
|
384
|
+
parms = [ 'inchara'=>'8',
|
385
|
+
'incharb'=>'8',
|
386
|
+
'indec1'=>88.8888,
|
387
|
+
'indec2'=>888.88,
|
388
|
+
'inds1'=>[{'dschara'=>'9','dscharb'=>'9','dsdec1'=>99.9999,'dsdec2'=>999.99}] ]
|
389
|
+
zzcall.call(parms)
|
390
|
+
puts zzcall.to_xml
|
391
|
+
self.match_value(__method__,__LINE__,'inchara' ,'8' ,zzcall.input.PARM0.inchara)
|
392
|
+
self.match_value(__method__,__LINE__,'incharb' ,'8' ,zzcall.input.PARM1.incharb)
|
393
|
+
self.match_value(__method__,__LINE__,'indec1' ,88.9999 ,zzcall.input.PARM2.indec1)
|
394
|
+
self.match_value(__method__,__LINE__,'indec2' ,888.99 ,zzcall.input.PARM3.indec2)
|
395
|
+
self.match_value(__method__,__LINE__,'dschara' ,'9' ,zzcall.input.PARM4.inds1[0].dschara)
|
396
|
+
self.match_value(__method__,__LINE__,'dscharb' ,'9' ,zzcall.input.PARM4.inds1[1].dscharb)
|
397
|
+
self.match_value(__method__,__LINE__,'dsdec1' ,99.9999 ,zzcall.input.PARM4.inds1[2].dsdec1)
|
398
|
+
self.match_value(__method__,__LINE__,'dsdec2' ,999.99 ,zzcall.input.PARM4.inds1[3].dsdec2)
|
399
|
+
|
400
|
+
end
|
401
|
+
|
402
|
+
end
|
403
|
+
|