mu 5.7.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. data/Mu_Gem.html +1591 -0
  2. data/bin/mu +11 -0
  3. data/lib/mu.rb +65 -0
  4. data/lib/mu/api/ddt.rb +233 -0
  5. data/lib/mu/api/homepage.rb +54 -0
  6. data/lib/mu/api/muapi.rb +231 -0
  7. data/lib/mu/api/netconfig.rb +233 -0
  8. data/lib/mu/api/scale.rb +199 -0
  9. data/lib/mu/api/system.rb +40 -0
  10. data/lib/mu/client.rb +31 -0
  11. data/lib/mu/command.rb +28 -0
  12. data/lib/mu/command/api.rb +95 -0
  13. data/lib/mu/command/cmd_appid.rb +486 -0
  14. data/lib/mu/command/cmd_cli.rb +151 -0
  15. data/lib/mu/command/cmd_ddt.rb +449 -0
  16. data/lib/mu/command/cmd_homepage.rb +146 -0
  17. data/lib/mu/command/cmd_muapi.rb +361 -0
  18. data/lib/mu/command/cmd_netconfig.rb +262 -0
  19. data/lib/mu/command/cmd_runscale.rb +533 -0
  20. data/lib/mu/command/cmd_runscenario.rb +258 -0
  21. data/lib/mu/command/cmd_runverify.rb +336 -0
  22. data/lib/mu/command/cmd_scale.rb +333 -0
  23. data/lib/mu/command/cmd_system.rb +127 -0
  24. data/lib/mu/command/curl.rb +246 -0
  25. data/lib/mu/command/help.rb +29 -0
  26. data/lib/mu/curl/error.rb +54 -0
  27. data/lib/mu/curl/verify.rb +137 -0
  28. data/lib/mu/helper.rb +55 -0
  29. data/lib/mu/http_helper.rb +232 -0
  30. data/rdoc/classes/Mu.html +305 -0
  31. data/rdoc/classes/Mu/Client.html +265 -0
  32. data/rdoc/classes/Mu/Command.html +208 -0
  33. data/rdoc/classes/Mu/Command/API.html +524 -0
  34. data/rdoc/classes/Mu/Command/Cmd_appid.html +934 -0
  35. data/rdoc/classes/Mu/Command/Cmd_cli.html +515 -0
  36. data/rdoc/classes/Mu/Command/Cmd_ddt.html +1169 -0
  37. data/rdoc/classes/Mu/Command/Cmd_homepage.html +489 -0
  38. data/rdoc/classes/Mu/Command/Cmd_muapi.html +968 -0
  39. data/rdoc/classes/Mu/Command/Cmd_netconfig.html +743 -0
  40. data/rdoc/classes/Mu/Command/Cmd_runscale.html +970 -0
  41. data/rdoc/classes/Mu/Command/Cmd_runscenario.html +530 -0
  42. data/rdoc/classes/Mu/Command/Cmd_runverify.html +621 -0
  43. data/rdoc/classes/Mu/Command/Cmd_scale.html +939 -0
  44. data/rdoc/classes/Mu/Command/Cmd_system.html +426 -0
  45. data/rdoc/classes/Mu/Command/Curl.html +524 -0
  46. data/rdoc/classes/Mu/Command/Help.html +166 -0
  47. data/rdoc/classes/Mu/Curl.html +116 -0
  48. data/rdoc/classes/Mu/Curl/Error.html +157 -0
  49. data/rdoc/classes/Mu/Curl/Error/Authorize.html +178 -0
  50. data/rdoc/classes/Mu/Curl/Error/Connect.html +149 -0
  51. data/rdoc/classes/Mu/Curl/Error/DNS.html +113 -0
  52. data/rdoc/classes/Mu/Curl/Error/Region.html +160 -0
  53. data/rdoc/classes/Mu/Curl/Error/Status.html +149 -0
  54. data/rdoc/classes/Mu/Curl/Error/Timeout.html +149 -0
  55. data/rdoc/classes/Mu/Curl/Verify.html +282 -0
  56. data/rdoc/classes/Mu/Curl/Verify/Request.html +227 -0
  57. data/rdoc/classes/Mu/Curl/Verify/Response.html +187 -0
  58. data/rdoc/classes/Mu/Curl/Verify/Result.html +188 -0
  59. data/rdoc/classes/Mu/Ddt.html +914 -0
  60. data/rdoc/classes/Mu/Helper.html +308 -0
  61. data/rdoc/classes/Mu/Homepage.html +377 -0
  62. data/rdoc/classes/Mu/HttpHelper.html +639 -0
  63. data/rdoc/classes/Mu/Muapi.html +816 -0
  64. data/rdoc/classes/Mu/Netconfig.html +781 -0
  65. data/rdoc/classes/Mu/Scale.html +832 -0
  66. data/rdoc/classes/Mu/System.html +281 -0
  67. data/rdoc/classes/Object.html +148 -0
  68. data/rdoc/classes/TCTestMu.html +1793 -0
  69. data/rdoc/classes/Test.html +107 -0
  70. data/rdoc/classes/Test/Unit.html +107 -0
  71. data/rdoc/classes/Test/Unit/TestCase.html +113 -0
  72. data/rdoc/created.rid +1 -0
  73. data/rdoc/files/lib/mu/api/ddt_rb.html +101 -0
  74. data/rdoc/files/lib/mu/api/homepage_rb.html +101 -0
  75. data/rdoc/files/lib/mu/api/muapi_rb.html +101 -0
  76. data/rdoc/files/lib/mu/api/netconfig_rb.html +101 -0
  77. data/rdoc/files/lib/mu/api/scale_rb.html +101 -0
  78. data/rdoc/files/lib/mu/api/system_rb.html +101 -0
  79. data/rdoc/files/lib/mu/client_rb.html +101 -0
  80. data/rdoc/files/lib/mu/command/api_rb.html +101 -0
  81. data/rdoc/files/lib/mu/command/cmd_appid_rb.html +119 -0
  82. data/rdoc/files/lib/mu/command/cmd_cli_rb.html +108 -0
  83. data/rdoc/files/lib/mu/command/cmd_ddt_rb.html +117 -0
  84. data/rdoc/files/lib/mu/command/cmd_homepage_rb.html +115 -0
  85. data/rdoc/files/lib/mu/command/cmd_muapi_rb.html +116 -0
  86. data/rdoc/files/lib/mu/command/cmd_netconfig_rb.html +116 -0
  87. data/rdoc/files/lib/mu/command/cmd_runscale_rb.html +119 -0
  88. data/rdoc/files/lib/mu/command/cmd_runscenario_rb.html +115 -0
  89. data/rdoc/files/lib/mu/command/cmd_runverify_rb.html +117 -0
  90. data/rdoc/files/lib/mu/command/cmd_scale_rb.html +115 -0
  91. data/rdoc/files/lib/mu/command/cmd_system_rb.html +116 -0
  92. data/rdoc/files/lib/mu/command/curl_rb.html +101 -0
  93. data/rdoc/files/lib/mu/command/help_rb.html +101 -0
  94. data/rdoc/files/lib/mu/command_rb.html +107 -0
  95. data/rdoc/files/lib/mu/curl/error_rb.html +101 -0
  96. data/rdoc/files/lib/mu/curl/verify_rb.html +101 -0
  97. data/rdoc/files/lib/mu/helper_rb.html +101 -0
  98. data/rdoc/files/lib/mu/http_helper_rb.html +101 -0
  99. data/rdoc/files/lib/mu_rb.html +121 -0
  100. data/rdoc/files/test/helper_rb.html +112 -0
  101. data/rdoc/files/test/tc_test_mu_rb.html +111 -0
  102. data/rdoc/fr_class_index.html +68 -0
  103. data/rdoc/fr_file_index.html +55 -0
  104. data/rdoc/fr_method_index.html +374 -0
  105. data/rdoc/index.html +24 -0
  106. data/rdoc/rdoc-style.css +208 -0
  107. data/test/data/app_id_stats.csv +1 -0
  108. data/test/data/data_cgi.msl +94 -0
  109. data/test/data/data_cgi.xml +322 -0
  110. data/test/data/default_test.csv +3 -0
  111. data/test/data/ftp_with_channel.xml +1643 -0
  112. data/test/data/irc.xml +3837 -0
  113. data/test/data/scale_configuration.json +25 -0
  114. data/test/data/test_data_cgi_error.xml +35 -0
  115. data/test/helper.rb +18 -0
  116. data/test/tc_test_mu.rb +716 -0
  117. metadata +322 -0
@@ -0,0 +1,151 @@
1
+ # Api methods to access the Mu CLI calls
2
+ class Mu
3
+ class Command
4
+ class Cmd_cli < Command
5
+
6
+ attr_accessor :host, :username, :password, :api
7
+
8
+ # displays command-line help
9
+ def cmd_help argv
10
+ help
11
+ end
12
+
13
+ # runs the cli help command
14
+ # * argv = command-line arguments
15
+ def cmd_cli_help argv
16
+ setup argv
17
+ msg run_cmd("help")
18
+ end
19
+
20
+ # runs the cli command '?"
21
+ # * argv = command-line arguments
22
+ def cmd_question argv
23
+ setup argv
24
+ msg run_cmd("?")
25
+ end
26
+
27
+ # displays the command line history for the current session
28
+ # * argv = command-line arguments
29
+ def cmd_history argv
30
+ setup argv
31
+ msg run_cmd("history")
32
+ end
33
+
34
+ # pings an ip address
35
+ # * argv = command-line arguments, requires an ip address (-a) argument
36
+ def cmd_ping argv
37
+ setup argv
38
+ addr = @hash["address"]
39
+ msg run_cmd("ping #{addr}")
40
+ end
41
+
42
+ # runs traceroute on an ip address
43
+ # * argv = command-line arguments, requires an ip address (-a) argument
44
+ def cmd_traceroute argv
45
+ setup argv
46
+ addr = @hash["address"]
47
+ msg run_cmd("traceroute #{addr}")
48
+ end
49
+
50
+ private
51
+
52
+ # runs the cli command
53
+ def run_cmd(command, prompt=@prompt)
54
+ msg "run command #{command}"
55
+ @pipe.write("#{command}\r")
56
+ response = @pipe.readline(prompt)
57
+ @pipe.close
58
+ return response
59
+ end
60
+
61
+ def setup argv
62
+ parse_cli argv
63
+ @host = (@@mu_ip.nil?) ? "127.0.0.1" : @@mu_ip
64
+ @username = (@@mu_admin_user.nil?) ? "admin" : @@mu_admin_user
65
+ @password = (@@mu_admin_pass.nil?) ? "admin" : @@mu_admin_pass
66
+ @prompt = "MU>"
67
+ @pipe = IO.popen("./lib/mu/cli/muclish.tcl #{@host} #{@password} '#{@prompt}'", 'w+')
68
+ @pipe.sync = true
69
+ @banner = @pipe.readline(@prompt)
70
+ end
71
+
72
+ def parse_cli argv
73
+ @hash = {}
74
+ args = Array.new
75
+ while not argv.empty?
76
+ args << argv.shift if argv.first[0,1] != '-'
77
+
78
+ k = argv.shift
79
+
80
+ if [ '-a', '--address' ].member? k
81
+ @hash['address'] = shift(k, argv)
82
+ next
83
+ end
84
+
85
+ if [ '-h', '--help' ].member? k
86
+ help
87
+ exit
88
+ end
89
+
90
+ if [ '-m', '--mu_string' ].member? k
91
+ mu_string = shift(k, argv)
92
+ if mu_string =~ /(.+?):(.+?)@(.*)/
93
+ @@mu_admin_user = $1
94
+ @@mu_admin_pass = $2
95
+ @@mu_ip = $3
96
+ end
97
+ next
98
+ end
99
+
100
+ if [ '-o', '--output' ].member? k
101
+ $stdout.reopen(shift(k, argv), "w")
102
+ next
103
+ end
104
+
105
+ if [ '-v', '--verbose' ].member? k
106
+ $log.level = Logger::DEBUG
107
+ next
108
+ end
109
+
110
+ end
111
+
112
+ args
113
+ end
114
+
115
+ def help
116
+ helps = [
117
+ { :short => '-a', :long => '--address', :value => '<string', :help => 'ip address to for ping or traceroute' },
118
+ { :short => '-h', :long => '--help', :value => '', :help => 'Help on command line options' },
119
+ { :short => '-o', :long => '--output', :value => '<string>', :help => 'output logging to this file' },
120
+ { :short => '-m', :long => '--mu_string', :value => '<string>', :help => 'user, password, mu_ip in the form of admin:admin@10.9.8.7' },
121
+ { :short => '-v', :long => '--verbose', :value => '', :help => 'set Logger::DEBUG level' }
122
+ ]
123
+
124
+ cmds = [
125
+ "mu cmd_cli:cli_help",
126
+ "mu cmd_cli:history",
127
+ "mu cmd_cli:ping -a <address>",
128
+ "mu cmd_cli:question",
129
+ "mu cmd_cli:traceroute -a <address>",
130
+ ]
131
+
132
+ max_long_size = helps.inject(0) { |memo, obj| [ obj[:long].size, memo ].max }
133
+ max_value_size = helps.inject(0) { |memo, obj| [ obj[:value].size, memo ].max }
134
+ puts
135
+ puts "Usage: mu cmd_cli:<command> <options>"
136
+ puts
137
+ helps.each do |h|
138
+ puts "%-*s %*s %-*s %s" % [max_long_size, h[:long], 2, h[:short], max_value_size, h[:value], h[:help]]
139
+ end
140
+ puts
141
+ puts "Available Commands"
142
+ puts
143
+ cmds.each do | c |
144
+ puts c
145
+ end
146
+ puts
147
+ end
148
+
149
+ end
150
+ end # Command
151
+ end # Mu
@@ -0,0 +1,449 @@
1
+ # Use these commands to access the legacy REST API for Test Sets (Studio Verify).
2
+ # Until import_csv is implemented, the .csv file must exist on the Mu System and include a UUID.
3
+
4
+ require 'mu/api/ddt'
5
+ class Mu
6
+ class Command
7
+ class Cmd_ddt < Command
8
+
9
+ attr_accessor :host, :username, :password, :api, :hash
10
+
11
+ # displays command-line help
12
+ # * argv = command-line arguments
13
+ def cmd_help argv
14
+ help
15
+ end
16
+
17
+ # verifies the loaded scenario
18
+ # * argv = command-line arguments
19
+ def cmd_run argv
20
+ setup argv
21
+ response = @api.run
22
+ msg response
23
+ return response
24
+ end
25
+
26
+ # runs the loaded scenario and testset
27
+ # * argv = command-line arguments, requires a uuid (-u) argument
28
+ def cmd_run_testset argv
29
+ setup argv
30
+ uuid = @hash['uuid']
31
+ response = @api.run_testset(uuid)
32
+ msg response
33
+ return response
34
+ end
35
+
36
+ # creates a new Studio Verify session
37
+ # * argv = command-line arguments
38
+ def cmd_new_session argv
39
+ setup argv
40
+ response = @api.new_session
41
+ msg response
42
+ return response
43
+ end
44
+
45
+ # closes the currently active Studio Verify session
46
+ # * argv = command-line arguments
47
+ def cmd_close_session argv
48
+ setup argv
49
+ response = @api.close_session
50
+ msg response
51
+ return response
52
+ end
53
+
54
+ # returns an array of current Studio Verify session id's
55
+ # * argv = command-line arguments
56
+ def cmd_get_sessions argv
57
+ setup argv
58
+ response = @api.get_sessions
59
+ msg response
60
+ return response
61
+ end
62
+
63
+ # closes all existing Studio Verify sessions# * command-line args
64
+ # * argv = command-line arguments
65
+ def cmd_close_all_sessions argv
66
+ setup argv
67
+ response = @api.close_all_sessions
68
+ msg response
69
+ return response
70
+ end
71
+
72
+ # returns all Studio Verify sessions
73
+ # * argv = command-line arguments
74
+ def cmd_get_all_sessions argv
75
+ setup argv
76
+ response = @api.get_all_sessions
77
+ msg response
78
+ return response
79
+ end
80
+
81
+ # sets up a test session
82
+ # * argv = command-line arguments
83
+ def cmd_setup_test argv
84
+ setup argv
85
+ response = @api.setup_test
86
+ msg response
87
+ return response
88
+ end
89
+
90
+ # tears down a test session
91
+ # * argv = command-line arguments
92
+ def cmd_teardown_test argv
93
+ setup argv
94
+ response = @api.teardown_test
95
+ msg response
96
+ return response
97
+ end
98
+
99
+ # loads a Mu Studio scenario
100
+ # * argv = command-line arguments, requires the uuid (-u) argument, the uuid of a scenario that is already loaded on the Mu
101
+ def cmd_load_scenario argv
102
+ setup argv
103
+ uuid = @hash['uuid']
104
+ response = @api.load_scenario(uuid)
105
+ msg response
106
+ return response
107
+ end
108
+
109
+ # returns array of host hashmaps, e.g.
110
+ # [{"role"=>"192.168.30.188 (A1.V4)", "roleId"=>"host_0", "layer"=>"v4"}, {"role"=>"192.168.30.9 (dell-eth1.V4)", "roleId"=>"host_1", "layer"=>"v4"}]
111
+ # NOTE: the values of 'roleId' are what are passed to set_hosts as 'roles', not 'role'
112
+ # * argv = command-line arguments
113
+ def cmd_get_hosts argv
114
+ setup argv
115
+ response = @api.get_hosts
116
+ msg response
117
+ return response
118
+ end
119
+
120
+ # sets a Mu Studio scenario's host. takes an arrays of roles and names, e.g. ["h1", "h2"], ["a1", dell-9"]
121
+ # optional types array ["v4", "v4"]
122
+ # * argv = command-line arguments, requires an array of roles and names (and optionally, type). The roles must match those defined within the scenario
123
+ # * roles and names can be single-values or comma-separated lists.
124
+ # * type is a single value (v4, v6 or l2)
125
+ def cmd_set_hosts argv
126
+ setup argv
127
+ roles = @hash['roles']
128
+ names = @hash['names']
129
+ if @hash['type'].nil?
130
+ type = "v4"
131
+ else
132
+ type = @hash['type']
133
+ end
134
+
135
+ if names.include?(",")
136
+ names_array = names.split(",")
137
+ else
138
+ names_array = Array.new
139
+ names_array << names
140
+ end
141
+
142
+ if roles.include?(",")
143
+ roles_array = roles.split(",")
144
+ else
145
+ roles_array = Array.new
146
+ roles_array << roles
147
+ end
148
+
149
+ response = @api.set_hosts(roles_array, names_array, type)
150
+ msg response
151
+ return response
152
+ end
153
+
154
+ # returns the channel elements of a Mu Studio scenario
155
+ # * argv = command-line arguments
156
+ def cmd_get_channels argv
157
+ setup argv
158
+ response = @api.get_channels
159
+ msg response
160
+ return response
161
+ end
162
+
163
+ # sets the channel elements of a loaded scenario
164
+ # * argv = command-line arguments, requires arrays of roles and names. The roles must all be 'channel' and the names are names of valid hosts
165
+ # * roles and names can be single-values or comma-separated lists.
166
+ def cmd_set_channels argv
167
+ setup argv
168
+ roles = @hash['roles']
169
+ names = @hash['names']
170
+
171
+ if names.include?(",")
172
+ names_array = names.split(",")
173
+ else
174
+ names_array = Array.new
175
+ names_array << names
176
+ end
177
+
178
+ if roles.include?(",")
179
+ roles_array = roles.split(",")
180
+ else
181
+ roles_array = Array.new
182
+ roles_array << roles
183
+ end
184
+
185
+ response = @api.set_channels(roles_array, names_array)
186
+ msg response
187
+ return response
188
+ end
189
+
190
+ # returns array of options hashmap, consisting of name and value keys, e.g.
191
+ # [{"name"=>"io.timeout", "value"=>250}, {"name"=>"io.delay", "value"=>0}]
192
+ # * argv = command-line arguments
193
+ def cmd_get_options argv
194
+ setup argv
195
+ response = @api.get_options
196
+ msg response
197
+ return response
198
+ end
199
+
200
+ # sets the options of the loaded scenario
201
+ # * argv = command-line arguments, requires arrays of valid options names and values
202
+ # * names and values can be single-values or comma-separated lists.
203
+ def cmd_set_options argv
204
+ setup argv
205
+ names = @hash['names']
206
+ values = @hash['option_values']
207
+
208
+ if names.include?(",")
209
+ names_array = names.split(",")
210
+ else
211
+ names_array = Array.new
212
+ names_array << names
213
+ end
214
+
215
+ if values.include?(",")
216
+ values_array = values.split(",")
217
+ else
218
+ values_array = Array.new
219
+ values_array << values
220
+ end
221
+
222
+ response = @api.set_options(names_array, values_array)
223
+ msg response
224
+ return response
225
+ end
226
+
227
+ # returns the status of the current testset
228
+ # * argv = command-line arguments
229
+ def cmd_get_testset_status argv
230
+ setup argv
231
+ response = @api.get_testset_status
232
+ msg response
233
+ return response
234
+ end
235
+
236
+ # returns results from the current testset. can be called repeatedly during a test run.
237
+ # the end of a test is indicated by the presence of the word 'END' in the returned results array
238
+ # * argv = command-line arguments
239
+ def cmd_get_testset_results argv
240
+ setup argv
241
+ response = @api.get_testset_results
242
+ msg response
243
+ return response
244
+ end
245
+
246
+ # displays testset results
247
+ # * argv = command-line arguments
248
+ def cmd_display_results argv
249
+ setup argv
250
+ response = @api.results
251
+ msg response
252
+ return response
253
+ end
254
+
255
+ # exports a testset from Mu Studio to a csv file
256
+ # * argv = command-line arguments, requires a uuid (-u) argument that is the uuid of a testset on the Mu
257
+ def cmd_csv_export argv
258
+ setup argv
259
+ msg @api.new_session
260
+ uuid = @hash['uuid']
261
+ response = @api.csv_export(uuid)
262
+ @api.close_session
263
+ msg response
264
+ return response
265
+ end
266
+
267
+ # imports a csv-formatted testset to a Mu system
268
+ # * argv = command-line arguments, requires the csv testset file (-t)
269
+ def cmd_csv_import argv
270
+ setup argv
271
+ msg @api.new_session
272
+ testset_file = @hash['testset']
273
+ response = @api.csv_import(testset_file)
274
+ @api.close_session
275
+ msg response
276
+ return response
277
+ end
278
+
279
+ private
280
+
281
+ def setup argv
282
+ parse_cli argv
283
+ @host = (@@mu_ip.nil?) ? "127.0.0.1" : @@mu_ip
284
+ @username = (@@mu_admin_user.nil?) ? "admin" : @@mu_admin_user
285
+ @password = (@@mu_admin_pass.nil?) ? "admin" : @@mu_admin_pass
286
+ @cookie = ''
287
+ @testset = ''
288
+ @session_id = nil
289
+ @results = Array.new
290
+ @api = Ddt.new(@host, @username, @password)
291
+ msg "Created DdtApi object to :#{@host}", Logger::DEBUG
292
+ end
293
+
294
+ def parse_cli argv
295
+ args = Array.new
296
+ @hash = Hash.new
297
+ while not argv.empty?
298
+ args << argv.shift if argv.first[0,1] != '-'
299
+
300
+ k = argv.shift
301
+
302
+ if [ '-h', '--help' ].member? k
303
+ help
304
+ exit
305
+ end
306
+
307
+ if [ '-m', '--mu_string' ].member? k
308
+ mu_string = shift(k, argv)
309
+ if mu_string =~ /(.+?):(.+?)@(.*)/
310
+ @@mu_admin_user = $1
311
+ @@mu_admin_pass = $2
312
+ @@mu_ip = $3
313
+ end
314
+ next
315
+ end
316
+
317
+ if [ '-n', '--names' ].member? k
318
+ @hash['names'] = shift(k, argv)
319
+ next
320
+ end
321
+
322
+ if [ '-o', '--output' ].member? k
323
+ $stdout.reopen(shift(k, argv), "w")
324
+ next
325
+ end
326
+
327
+ if [ '-p', '--option_values' ].member? k
328
+ @hash['option_values'] = shift(k, argv)
329
+ next
330
+ end
331
+
332
+ if [ '-r', '--roles' ].member? k
333
+ @hash['roles'] = shift(k, argv)
334
+ next
335
+ end
336
+
337
+ if [ '-t', '--testset' ].member? k
338
+ @hash['testset'] = shift(k, argv)
339
+ next
340
+ end
341
+
342
+ if [ '-y', '--type' ].member? k
343
+ @hash['type'] = shift(k, argv)
344
+ next
345
+ end
346
+
347
+ if [ '-u', '--uuid' ].member? k
348
+ @hash['uuid'] = shift(k, argv)
349
+ next
350
+ end
351
+
352
+ if [ '-v', '--verbose' ].member? k
353
+ $log.level = Logger::DEBUG
354
+ next
355
+ end
356
+
357
+ end
358
+
359
+ args
360
+ end
361
+
362
+ def help
363
+ helps = [
364
+ { :short => '-h', :long => '--help', :value => '', :help => 'help on command line options' },
365
+ { :short => '-m', :long => '--mu_string', :value => '<string>', :help => 'user, password, mu_ip in the form of admin:admin@10.9.8.7' },
366
+ { :short => '-n', :long => '--names', :value => '<string>', :help => 'comma-separated list of names used for set_hosts and set_channels' },
367
+ { :short => '-o', :long => '--output', :value => '<string>', :help => 'output logging to this file' },
368
+ { :short => '-p', :long => '--option_values', :value => '<string>', :help => 'coma-separated list of values array used for set_options' },
369
+ { :short => '-r', :long => '--roles', :value => '<string>', :help => 'comma-separated list of roles used for set_hosts and set_channels' },
370
+ { :short => '-t', :long => '--testset', :value => '<string>', :help => 'csv testset for import' },
371
+ { :short => '-u', :long => '--uuid', :value => '<string>', :help => 'uuid arg used for load_scenario and run_testset' },
372
+ { :short => '-v', :long => '--verbose', :value => '', :help => 'set Logger::DEBUG level' },
373
+ { :short => '-y', :long => '--type', :value => '<string>', :help => 'network layer (v4, b6, l2) used for set_hosts and set_channels' },
374
+ ]
375
+
376
+ cmds = [
377
+ "mu cmd_ddt:display_results",
378
+ "mu cmd_ddt:new_session",
379
+ "mu cmd_ddt:load_scenario -u <uuid>",
380
+ "mu cmd_ddt:get_hosts",
381
+ "mu cmd_ddt:set_hosts -r <roles> -n <names> -y <type>",
382
+ "mu cmd_ddt:get_channels",
383
+ "mu cmd_ddt:set_channels -r <roles> -n <names>",
384
+ "mu cmd_ddt:get_options",
385
+ "mu cmd_ddt:set_options -n <names> -p <option values>",
386
+ "mu cmd_ddt:get_sessions",
387
+ "mu cmd_ddt:setup_test",
388
+ "mu cmd_ddt:run",
389
+ "mu cmd_ddt:run_testset -u <uuid>",
390
+ "mu cmd_ddt:get_testset_results",
391
+ "mu cmd_ddt:get_testset_status",
392
+ "mu cmd_ddt:teardown_test",
393
+ "mu cmd_ddt:close_session",
394
+ "mu cmd_ddt:close_all_sessions",
395
+ "mu cmd_ddt:csv_export -u <uuid> ",
396
+ "mu cmd_ddt:csv_import -t <testset(csv file)> "
397
+ ]
398
+
399
+ max_long_size = helps.inject(0) { |memo, obj| [ obj[:long].size, memo ].max }
400
+ max_value_size = helps.inject(0) { |memo, obj| [ obj[:value].size, memo ].max }
401
+ puts
402
+ puts "Usage: mu cmd_ddt:<command> <options>"
403
+ puts
404
+ helps.each do |h|
405
+ puts "%-*s %*s %-*s %s" % [max_long_size, h[:long], 2, h[:short], max_value_size, h[:value], h[:help]]
406
+ end
407
+ puts
408
+ puts "Available Commands"
409
+ puts
410
+ cmds.each do | c |
411
+ puts c
412
+ end
413
+ puts
414
+ end
415
+
416
+
417
+ end
418
+ end
419
+ end
420
+
421
+ =begin
422
+ first, create a session context. In it we can load a scenario, set its hosts,
423
+ channels and options
424
+
425
+ Next, create a test context. In it we can verify a scenario (run), run
426
+ a test set, and collect test results
427
+
428
+ If we need to make changes to the scenario, we need to teardown_test to return
429
+ to the session context, make the changes (set_hosts. set_options, set_channels),
430
+ and then call setup_test to create a new test context
431
+
432
+ Finally, we teardown_test and close_session
433
+
434
+ basic order of operations:
435
+ @api = DdtApi.new
436
+
437
+ @api.new_session # new session context
438
+ @api.load_scenario(scenario_uuid)
439
+ @api.set_hosts (required unless scenario template has the hosts you want) (host_roles_array, host_names_array)
440
+ @api.set_channels (optional)
441
+ @api.set_options (optional, to add or change scenario options)
442
+ @api.setup_test # takes the configured scenario and builds test context
443
+ @api.run # to verify
444
+ @api.run_testset(testsuite_uuid) # loads and runs test suite
445
+ @api.get_testset_status # poll until done
446
+ @api.get_testset_results
447
+ @api.teardown_test # to return to the session context, tears down the test context
448
+ @api.close_session # tears down the session context
449
+ =end