mu 5.7.2.3

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 (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