mu 5.7.2.5 → 5.7.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/lib/mu/command/cmd_appid.rb +10 -0
  2. data/lib/mu/command/cmd_runscale.rb +48 -2
  3. data/rdoc/classes/Mu.html +13 -68
  4. data/rdoc/classes/Mu/Command.html +13 -1
  5. data/rdoc/classes/Mu/Command/Cmd_appid.html +23 -23
  6. data/rdoc/classes/Mu/Command/Cmd_appid.src/M000053.html +18 -0
  7. data/rdoc/classes/Mu/Command/Cmd_appid.src/M000054.html +30 -0
  8. data/rdoc/classes/Mu/Command/Cmd_appid.src/M000055.html +39 -0
  9. data/rdoc/classes/Mu/Command/Cmd_appid.src/M000056.html +50 -0
  10. data/rdoc/classes/Mu/Command/Cmd_netconfig.html +60 -60
  11. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000060.html +18 -0
  12. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000061.html +22 -0
  13. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000062.html +23 -0
  14. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000063.html +23 -0
  15. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000064.html +22 -0
  16. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000065.html +23 -0
  17. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000066.html +21 -0
  18. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000067.html +22 -0
  19. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000068.html +22 -0
  20. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000069.html +21 -0
  21. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000070.html +21 -0
  22. data/rdoc/classes/Mu/Command/Cmd_netconfig.src/M000071.html +23 -0
  23. data/rdoc/classes/Mu/Command/Cmd_runscale.html +18 -19
  24. data/rdoc/classes/Mu/Command/Cmd_runscale.src/M000057.html +18 -0
  25. data/rdoc/classes/Mu/Command/Cmd_runscale.src/M000058.html +51 -0
  26. data/rdoc/classes/Mu/Command/Cmd_runscale.src/M000059.html +50 -0
  27. data/rdoc/classes/Mu/Netconfig.html +78 -78
  28. data/rdoc/classes/Mu/Netconfig.src/M000072.html +25 -0
  29. data/rdoc/classes/Mu/Netconfig.src/M000073.html +20 -0
  30. data/rdoc/classes/Mu/Netconfig.src/M000074.html +21 -0
  31. data/rdoc/classes/Mu/Netconfig.src/M000075.html +24 -0
  32. data/rdoc/classes/Mu/Netconfig.src/M000076.html +20 -0
  33. data/rdoc/classes/Mu/Netconfig.src/M000077.html +36 -0
  34. data/rdoc/classes/Mu/Netconfig.src/M000078.html +22 -0
  35. data/rdoc/classes/Mu/Netconfig.src/M000079.html +22 -0
  36. data/rdoc/classes/Mu/Netconfig.src/M000080.html +39 -0
  37. data/rdoc/classes/Mu/Netconfig.src/M000081.html +21 -0
  38. data/rdoc/classes/Mu/Netconfig.src/M000082.html +23 -0
  39. data/rdoc/classes/Mu/Netconfig.src/M000083.html +26 -0
  40. data/rdoc/classes/Mu/Netconfig.src/M000084.html +23 -0
  41. data/rdoc/classes/Mu/Netconfig.src/M000085.html +22 -0
  42. data/rdoc/classes/Mu/Netconfig.src/M000086.html +19 -0
  43. data/rdoc/classes/TCTestMu.src/M000043.html +1 -1
  44. data/rdoc/created.rid +1 -1
  45. data/rdoc/files/lib/mu/api/netconfig_rb.html +1 -1
  46. data/rdoc/files/lib/mu/command/cmd_appid_rb.html +1 -1
  47. data/rdoc/files/lib/mu/command/cmd_netconfig_rb.html +1 -1
  48. data/rdoc/files/lib/mu/command/cmd_runscale_rb.html +1 -1
  49. data/rdoc/files/test/tc_test_mu_rb.html +2 -2
  50. data/rdoc/fr_class_index.html +5 -1
  51. data/rdoc/fr_file_index.html +4 -2
  52. data/rdoc/fr_method_index.html +86 -25
  53. data/rdoc/index.html +1 -1
  54. data/test/data/app_id_stats.csv +1 -1
  55. data/test/data/app_id_status.json +43 -43
  56. data/test/tc_test_mu.rb +5 -1
  57. metadata +38 -4
@@ -103,6 +103,7 @@ private
103
103
  def setup argv
104
104
  parse_cli argv
105
105
  @params = {}
106
+ @peak_throughput = 0.0
106
107
 
107
108
  if @hash['test']
108
109
  @verify_only = true
@@ -339,10 +340,19 @@ private
339
340
  @reported_volume = @reported_volume + scenario["volume"]
340
341
  end
341
342
 
343
+ bits1 = (@client_tx_bytes.to_i + @client_rx_bytes.to_i) * 8
344
+ dur1 = @duration.to_f
345
+ thruput = format_float(2, bits1.to_f / dur1)
346
+
347
+ if thruput.to_f > @peak_throughput
348
+ @peak_throughput = thruput.to_f
349
+ end
350
+
342
351
  msg ""
343
352
  msg "duration: #{format_float(2, @duration)}"
344
353
  msg "concurrency: #{@reported_volume}"
345
354
  msg "tests/sec: #{format_float(2, @executed.to_f / @duration)}" if @duration.to_i > 0
355
+ msg "bits/sec: #{thruput}" if @duration.to_i > 0
346
356
  msg "passed: #{@executed}"
347
357
  msg "errors: #{@errors}"
348
358
  msg "timeouts: #{@timeouts}"
@@ -7,7 +7,7 @@ class Mu
7
7
  class Command
8
8
  class Cmd_runscale < Command
9
9
 
10
- attr_accessor :api, :params, :hosts, :addr_indexes, :offset_indexes
10
+ attr_accessor :api, :params, :hosts, :addr_indexes, :offset_indexes, :peak_concurrency, :peak_throughput
11
11
 
12
12
  # displays command-line help
13
13
  # * argv = command-line arguments
@@ -98,6 +98,8 @@ private
98
98
  def setup argv
99
99
  parse_cli argv
100
100
  @params = {}
101
+ @peak_concurrency = 0
102
+ @peak_throughput = 0.0
101
103
 
102
104
  if @hash['test']
103
105
  @verify_only = true
@@ -135,6 +137,22 @@ private
135
137
  @no_verify = true
136
138
  end
137
139
 
140
+ if not @hash['vector_address_pairing']
141
+ @vector_address_pairing = false
142
+ @limit_concurrency = false
143
+ else
144
+ @vector_address_pairing = true
145
+ @limit_concurrency = true
146
+ end
147
+
148
+ =begin
149
+ if not @hash['hold_concurrency']
150
+ @hold_concurrency = false
151
+ else
152
+ @hold_concurrency = true
153
+ end
154
+ =end
155
+
138
156
  end
139
157
 
140
158
  def run(scenario)
@@ -162,6 +180,9 @@ private
162
180
 
163
181
  configure_hosts
164
182
  @api.configure("delay", @delay)
183
+ @api.configure("vectorAddressPairing", @vector_address_pairing)
184
+ @api.configure("limitConcurrency", @limit_concurrency)
185
+ # @api.configure("holdConcurrency", @hold_concurrency)
165
186
 
166
187
  if @no_verify == false # don't do verify if no_verify==true
167
188
  msg "verifying #{scenario} ..."
@@ -389,10 +410,23 @@ private
389
410
  @reported_volume = @reported_volume + scenario["volume"]
390
411
  end
391
412
 
413
+ if @reported_volume.to_i > @peak_concurrency
414
+ @peak_concurrency = @reported_volume.to_i
415
+ end
416
+
417
+ bits1 = (@client_tx_bytes.to_i + @client_rx_bytes.to_i) * 8
418
+ dur1 = @duration.to_f
419
+ thruput = format_float(2, bits1.to_f / dur1)
420
+
421
+ if thruput.to_f > @peak_throughput
422
+ @peak_throughput = thruput.to_f
423
+ end
424
+
392
425
  msg ""
393
426
  msg "duration: #{format_float(2, @duration)}"
394
427
  msg "concurrency: #{@reported_volume}"
395
428
  msg "tests/sec: #{format_float(2, @executed.to_f / @duration)}" if @duration.to_i > 0
429
+ msg "bits/sec: #{thruput}" if @duration.to_i > 0
396
430
  msg "passed: #{@executed}"
397
431
  msg "errors: #{@errors}"
398
432
  msg "timeouts: #{@timeouts}"
@@ -414,6 +448,11 @@ private
414
448
 
415
449
  k = argv.shift
416
450
 
451
+ if [ '-a', '--vector_address_pairing' ].member? k
452
+ @hash['vector_address_pairing'] = true
453
+ next
454
+ end
455
+
417
456
  if [ '-c', '--csv' ].member? k
418
457
  @hash['testset'] = shift(k, argv)
419
458
  next
@@ -438,7 +477,12 @@ private
438
477
  help
439
478
  exit
440
479
  end
441
-
480
+ =begin
481
+ if [ '-hold', '--hold_concurrency' ].member? k
482
+ @hash['hold_concurrency'] = true
483
+ next
484
+ end
485
+ =end
442
486
  if [ '-l', '--delay' ].member? k
443
487
  @hash['delay'] = shift(k, argv)
444
488
  next
@@ -515,10 +559,12 @@ private
515
559
 
516
560
  def help
517
561
  helps = [
562
+ { :short => '-a', :long => '--vector_address_pairing', :value => '', :help => 'sets vectorAddressPairing to true (limits and maps concurrency to the rows in the testset)' },
518
563
  { :short => '-c', :long => '--csv', :value => '<string>', :help => 'name of the csv testset to run' },
519
564
  { :short => '-d', :long => '--dir', :value => '<string>', :help => 'directory containing the scenario file' },
520
565
  { :short => '-f', :long => '--default_host', :value => '<string>', :help => 'default_host setting' },
521
566
  { :short => '-h', :long => '--help', :value => '', :help => 'help on command line options' },
567
+ # { :short => '-hold', :long => '--hold_concurrency', :value => '', :help => 'sets holdConcurrency to tru' },
522
568
  { :short => '-i', :long => '--interfaces', :value => '<string>', :help => 'comma-separated list of interfaces, e.g. b1,b2 or b1-1000,b2 for ip range' },
523
569
  { :short => '-l', :long => '--delay', :value => '<string>', :help => 'intra-scenario delay value' },
524
570
  { :short => '-m', :long => '--mu_string', :value => '<string>', :help => 'user, password, mu_ip in the form of admin:admin@10.9.8.7' },
@@ -55,16 +55,20 @@
55
55
  <tr class="top-aligned-row">
56
56
  <td><strong>In:</strong></td>
57
57
  <td>
58
- <a href="../files/lib/mu/api/scale_rb.html">
59
- lib/mu/api/scale.rb
58
+ <a href="../files/lib/mu/api/netconfig_rb.html">
59
+ lib/mu/api/netconfig.rb
60
60
  </a>
61
61
  <br />
62
- <a href="../files/lib/mu/command/cmd_runscale_rb.html">
63
- lib/mu/command/cmd_runscale.rb
62
+ <a href="../files/lib/mu/command/cmd_appid_rb.html">
63
+ lib/mu/command/cmd_appid.rb
64
64
  </a>
65
65
  <br />
66
- <a href="../files/lib/mu_rb.html">
67
- lib/mu.rb
66
+ <a href="../files/lib/mu/command/cmd_netconfig_rb.html">
67
+ lib/mu/command/cmd_netconfig.rb
68
+ </a>
69
+ <br />
70
+ <a href="../files/lib/mu/command/cmd_runscale_rb.html">
71
+ lib/mu/command/cmd_runscale.rb
68
72
  </a>
69
73
  <br />
70
74
  </td>
@@ -73,7 +77,9 @@
73
77
  <tr class="top-aligned-row">
74
78
  <td><strong>Parent:</strong></td>
75
79
  <td>
80
+ <a href="Object.html">
76
81
  Object
82
+ </a>
77
83
  </td>
78
84
  </tr>
79
85
  </table>
@@ -86,25 +92,10 @@
86
92
 
87
93
  <div id="contextContent">
88
94
 
89
- <div id="description">
90
- <p>
91
- <a href="Mu/Command.html">Command</a>-line tools and applications for using
92
- the <a href="Mu.html">Mu</a> Dynamics REST Api&#8216;s
93
- </p>
94
-
95
- </div>
96
95
 
97
96
 
98
97
  </div>
99
98
 
100
- <div id="method-list">
101
- <h3 class="section-bar">Methods</h3>
102
-
103
- <div class="name-list">
104
- <a href="#M000002">check_version</a>&nbsp;&nbsp;
105
- <a href="#M000001">run</a>&nbsp;&nbsp;
106
- </div>
107
- </div>
108
99
 
109
100
  </div>
110
101
 
@@ -117,23 +108,10 @@ the <a href="Mu.html">Mu</a> Dynamics REST Api&#8216;s
117
108
  <h3 class="section-bar">Classes and Modules</h3>
118
109
 
119
110
  Class <a href="Mu/Command.html" class="link">Mu::Command</a><br />
120
- Class <a href="Mu/Scale.html" class="link">Mu::Scale</a><br />
111
+ Class <a href="Mu/Netconfig.html" class="link">Mu::Netconfig</a><br />
121
112
 
122
113
  </div>
123
114
 
124
- <div id="constants-list">
125
- <h3 class="section-bar">Constants</h3>
126
-
127
- <div class="name-list">
128
- <table summary="Constants">
129
- <tr class="top-aligned-row context-row">
130
- <td class="context-item-name">Version</td>
131
- <td>=</td>
132
- <td class="context-item-value">@version.freeze</td>
133
- </tr>
134
- </table>
135
- </div>
136
- </div>
137
115
 
138
116
 
139
117
 
@@ -141,39 +119,6 @@ Class <a href="Mu/Scale.html" class="link">Mu::Scale</a><br />
141
119
 
142
120
 
143
121
  <!-- if method_list -->
144
- <div id="methods">
145
- <h3 class="section-bar">Public Class methods</h3>
146
-
147
- <div id="method-M000002" class="method-detail">
148
- <a name="M000002"></a>
149
-
150
- <div class="method-heading">
151
- <a href="Mu.src/M000002.html" target="Code" class="method-signature"
152
- onclick="popupCode('Mu.src/M000002.html');return false;">
153
- <span class="method-name">check_version</span><span class="method-args">()</span>
154
- </a>
155
- </div>
156
-
157
- <div class="method-description">
158
- </div>
159
- </div>
160
-
161
- <div id="method-M000001" class="method-detail">
162
- <a name="M000001"></a>
163
-
164
- <div class="method-heading">
165
- <a href="Mu.src/M000001.html" target="Code" class="method-signature"
166
- onclick="popupCode('Mu.src/M000001.html');return false;">
167
- <span class="method-name">run</span><span class="method-args">(cmd, argv)</span>
168
- </a>
169
- </div>
170
-
171
- <div class="method-description">
172
- </div>
173
- </div>
174
-
175
-
176
- </div>
177
122
 
178
123
 
179
124
  </div>
@@ -55,6 +55,14 @@
55
55
  <tr class="top-aligned-row">
56
56
  <td><strong>In:</strong></td>
57
57
  <td>
58
+ <a href="../../files/lib/mu/command/cmd_appid_rb.html">
59
+ lib/mu/command/cmd_appid.rb
60
+ </a>
61
+ <br />
62
+ <a href="../../files/lib/mu/command/cmd_netconfig_rb.html">
63
+ lib/mu/command/cmd_netconfig.rb
64
+ </a>
65
+ <br />
58
66
  <a href="../../files/lib/mu/command/cmd_runscale_rb.html">
59
67
  lib/mu/command/cmd_runscale.rb
60
68
  </a>
@@ -65,7 +73,9 @@
65
73
  <tr class="top-aligned-row">
66
74
  <td><strong>Parent:</strong></td>
67
75
  <td>
76
+ <a href="../Object.html">
68
77
  Object
78
+ </a>
69
79
  </td>
70
80
  </tr>
71
81
  </table>
@@ -93,7 +103,9 @@
93
103
  <div id="class-list">
94
104
  <h3 class="section-bar">Classes and Modules</h3>
95
105
 
96
- Class <a href="Command/Cmd_runscale.html" class="link">Mu::Command::Cmd_runscale</a><br />
106
+ Class <a href="Command/Cmd_appid.html" class="link">Mu::Command::Cmd_appid</a><br />
107
+ Class <a href="Command/Cmd_netconfig.html" class="link">Mu::Command::Cmd_netconfig</a><br />
108
+ Class <a href="Command/Cmd_runscale.html" class="link">Mu::Command::Cmd_runscale</a><br />
97
109
 
98
110
  </div>
99
111
 
@@ -86,10 +86,10 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000145">cmd_help</a>&nbsp;&nbsp;
90
- <a href="#M000148">cmd_run_dir</a>&nbsp;&nbsp;
91
- <a href="#M000147">cmd_run_file</a>&nbsp;&nbsp;
92
- <a href="#M000146">cmd_running?</a>&nbsp;&nbsp;
89
+ <a href="#M000053">cmd_help</a>&nbsp;&nbsp;
90
+ <a href="#M000056">cmd_run_dir</a>&nbsp;&nbsp;
91
+ <a href="#M000055">cmd_run_file</a>&nbsp;&nbsp;
92
+ <a href="#M000054">cmd_running?</a>&nbsp;&nbsp;
93
93
  </div>
94
94
  </div>
95
95
 
@@ -144,12 +144,12 @@
144
144
  <div id="methods">
145
145
  <h3 class="section-bar">Public Instance methods</h3>
146
146
 
147
- <div id="method-M000145" class="method-detail">
148
- <a name="M000145"></a>
147
+ <div id="method-M000053" class="method-detail">
148
+ <a name="M000053"></a>
149
149
 
150
150
  <div class="method-heading">
151
- <a href="Cmd_appid.src/M000145.html" target="Code" class="method-signature"
152
- onclick="popupCode('Cmd_appid.src/M000145.html');return false;">
151
+ <a href="Cmd_appid.src/M000053.html" target="Code" class="method-signature"
152
+ onclick="popupCode('Cmd_appid.src/M000053.html');return false;">
153
153
  <span class="method-name">cmd_help</span><span class="method-args">(argv)</span>
154
154
  </a>
155
155
  </div>
@@ -161,20 +161,20 @@ displays command-line help
161
161
  </div>
162
162
  </div>
163
163
 
164
- <div id="method-M000148" class="method-detail">
165
- <a name="M000148"></a>
164
+ <div id="method-M000056" class="method-detail">
165
+ <a name="M000056"></a>
166
166
 
167
167
  <div class="method-heading">
168
- <a href="Cmd_appid.src/M000148.html" target="Code" class="method-signature"
169
- onclick="popupCode('Cmd_appid.src/M000148.html');return false;">
168
+ <a href="Cmd_appid.src/M000056.html" target="Code" class="method-signature"
169
+ onclick="popupCode('Cmd_appid.src/M000056.html');return false;">
170
170
  <span class="method-name">cmd_run_dir</span><span class="method-args">(argv)</span>
171
171
  </a>
172
172
  </div>
173
173
 
174
174
  <div class="method-description">
175
175
  <p>
176
- runs through a directory of msl files and executes a Studio <a
177
- href="../Scale.html">Scale</a> test for each one
176
+ runs through a directory of msl files and executes a Studio Scale test for
177
+ each one
178
178
  </p>
179
179
  <pre>
180
180
  * argv = command-line arguments, require a directory (-d) argument
@@ -183,19 +183,19 @@ href="../Scale.html">Scale</a> test for each one
183
183
  </div>
184
184
  </div>
185
185
 
186
- <div id="method-M000147" class="method-detail">
187
- <a name="M000147"></a>
186
+ <div id="method-M000055" class="method-detail">
187
+ <a name="M000055"></a>
188
188
 
189
189
  <div class="method-heading">
190
- <a href="Cmd_appid.src/M000147.html" target="Code" class="method-signature"
191
- onclick="popupCode('Cmd_appid.src/M000147.html');return false;">
190
+ <a href="Cmd_appid.src/M000055.html" target="Code" class="method-signature"
191
+ onclick="popupCode('Cmd_appid.src/M000055.html');return false;">
192
192
  <span class="method-name">cmd_run_file</span><span class="method-args">(argv)</span>
193
193
  </a>
194
194
  </div>
195
195
 
196
196
  <div class="method-description">
197
197
  <p>
198
- runs a single Studio <a href="../Scale.html">Scale</a> test
198
+ runs a single Studio Scale test
199
199
  </p>
200
200
  <pre>
201
201
  * argv = command-line arguments, requires a scenario (-s) argument
@@ -203,12 +203,12 @@ runs a single Studio <a href="../Scale.html">Scale</a> test
203
203
  </div>
204
204
  </div>
205
205
 
206
- <div id="method-M000146" class="method-detail">
207
- <a name="M000146"></a>
206
+ <div id="method-M000054" class="method-detail">
207
+ <a name="M000054"></a>
208
208
 
209
209
  <div class="method-heading">
210
- <a href="Cmd_appid.src/M000146.html" target="Code" class="method-signature"
211
- onclick="popupCode('Cmd_appid.src/M000146.html');return false;">
210
+ <a href="Cmd_appid.src/M000054.html" target="Code" class="method-signature"
211
+ onclick="popupCode('Cmd_appid.src/M000054.html');return false;">
212
212
  <span class="method-name">cmd_running?</span><span class="method-args">(argv)</span>
213
213
  </a>
214
214
  </div>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>cmd_help (Mu::Command::Cmd_appid)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/mu/command/cmd_appid.rb, line 13</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cmd_help</span> <span class="ruby-identifier">argv</span>
15
+ <span class="ruby-identifier">help</span>
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>cmd_running? (Mu::Command::Cmd_appid)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/mu/command/cmd_appid.rb, line 19</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cmd_running?</span> <span class="ruby-identifier">argv</span>
15
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@api</span>.<span class="ruby-identifier">nil?</span>
16
+ <span class="ruby-identifier">msg</span> <span class="ruby-value str">&quot;false&quot;</span>
17
+ <span class="ruby-keyword kw">return</span>
18
+ <span class="ruby-keyword kw">end</span>
19
+
20
+ <span class="ruby-identifier">status</span> = <span class="ruby-ivar">@api</span>.<span class="ruby-identifier">status</span>
21
+ <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">status</span>.<span class="ruby-identifier">nil?</span>
22
+ <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">status</span>[<span class="ruby-value str">&quot;status&quot;</span>].<span class="ruby-identifier">nil?</span>
23
+ <span class="ruby-identifier">msg</span> <span class="ruby-identifier">status</span>[<span class="ruby-value str">&quot;status&quot;</span>][<span class="ruby-value str">&quot;running&quot;</span>]
24
+ <span class="ruby-keyword kw">end</span>
25
+ <span class="ruby-keyword kw">else</span>
26
+ <span class="ruby-identifier">msg</span> <span class="ruby-value str">&quot;false&quot;</span>
27
+ <span class="ruby-keyword kw">end</span>
28
+ <span class="ruby-keyword kw">end</span></pre>
29
+ </body>
30
+ </html>