blob: f6325ad7fd3f68f6a4b381541dea6829d732bcef [file] [log] [blame]
Jeremy Ronquillob27ce4c2017-07-17 12:41:28 -07001"""
2Copyright 2015 Open Networking Foundation (ONF)
3
4Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
5the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
6or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
7
8 TestON is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 2 of the License, or
11 (at your option) any later version.
12
13 TestON is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with TestON. If not, see <http://www.gnu.org/licenses/>.
20"""
21
cameron@onlab.us946d99c2015-07-08 15:34:37 -070022# ScaleOutTemplate -> flowTP
23#
24# CASE1 starts number of nodes specified in param file
25#
26# cameron@onlab.us
27
28import sys
29import os.path
30
31
32class SCPFflowTp1g:
33
34 def __init__( self ):
35 self.default = ''
36
Jon Hall4ba53f02015-07-29 13:07:41 -070037 def CASE1( self, main ):
cameron@onlab.us946d99c2015-07-08 15:34:37 -070038
39 import time
40 global init
41 try:
Devin Lim58046fa2017-07-05 16:55:00 -070042 if type( init ) is not bool:
cameron@onlab.us946d99c2015-07-08 15:34:37 -070043 init = False
44 except NameError:
45 init = False
46
Devin Lim58046fa2017-07-05 16:55:00 -070047 main.log.info( "==========DEBUG VERSION 3===========" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -070048
cameron@onlab.us946d99c2015-07-08 15:34:37 -070049 # -- INIT SECTION, ONLY RUNS ONCE -- #
50 if init == False:
Devin Lim58046fa2017-07-05 16:55:00 -070051 try:
52 init = True
53 try:
54 from tests.dependencies.ONOSSetup import ONOSSetup
55 main.testSetUp = ONOSSetup()
56 except ImportError:
57 main.log.error( "ONOSSetup not found. exiting the test" )
58 main.exit()
59 main.testSetUp.envSetupDescription()
60 #Load values from params file
61 cellName = main.params[ 'ENV' ][ 'cellName' ]
62 main.apps = main.params[ 'ENV' ][ 'cellApps' ]
63 BENCHUser = main.params[ 'BENCH' ][ 'user' ]
64 BENCHIp = main.params[ 'BENCH' ][ 'ip1' ]
65 main.scale = ( main.params[ 'SCALE' ] ).split( "," )
Devin Lim142b5342017-07-20 15:22:39 -070066 main.flowRuleCfg = main.params[ 'CFG' ][ 'flowRule' ]
67 main.nullProviderCfg = main.params[ 'CFG' ][ 'nullProvider' ]
Devin Lim58046fa2017-07-05 16:55:00 -070068 stepResult = main.testSetUp.envSetup()
69 resultsDB = open( "/tmp/flowTP1gDB", "w+" )
70 resultsDB.close()
71 except Exception as e:
72 main.testSetUp.envSetupException( e )
73 main.testSetUp.evnSetupConclusion( stepResult )
Devin Lim142b5342017-07-20 15:22:39 -070074 main.commit = ( main.commit.split( " " ) )[ 1 ]
cameron@onlab.us946d99c2015-07-08 15:34:37 -070075 # -- END OF INIT SECTION --#
76
Devin Lim142b5342017-07-20 15:22:39 -070077 main.testSetUp.ONOSSetUp( "localhost", main.Cluster, True, cellName=cellName )
Jon Hall4ba53f02015-07-29 13:07:41 -070078
Devin Lim142b5342017-07-20 15:22:39 -070079 main.log.info( "Startup sequence complete" )
80 main.ONOSbench.logReport( main.Cluster.active( 0 ).ipAddress, [ "ERROR", "WARNING", "EXCEPT" ], outputMode="d" )
Chiyu Chengef109502016-11-21 15:51:38 -080081
cameron@onlab.us946d99c2015-07-08 15:34:37 -070082 def CASE2( self, main ):
83 #
Jon Hall4ba53f02015-07-29 13:07:41 -070084 # This is the flow TP test
cameron@onlab.us946d99c2015-07-08 15:34:37 -070085 #
Jon Hall4ba53f02015-07-29 13:07:41 -070086 import os.path
87 import numpy
cameron@onlab.us946d99c2015-07-08 15:34:37 -070088 import math
Jon Hall4ba53f02015-07-29 13:07:41 -070089 import time
cameron@onlab.us946d99c2015-07-08 15:34:37 -070090 import datetime
91 import traceback
92
93 global currentNeighbors
94 try:
95 currentNeighbors
96 except:
Devin Lim142b5342017-07-20 15:22:39 -070097 currentNeighbors = ( main.params[ 'TEST' ][ 'neighbors' ] ).split( "," )[ 0 ]
cameron@onlab.us946d99c2015-07-08 15:34:37 -070098 else:
99 if currentNeighbors == "r": #reset
100 currentNeighbors = "0"
101 else:
102 currentNeighbors = "a"
103
Devin Lim142b5342017-07-20 15:22:39 -0700104 testCMD = [ 0, 0, 0, 0 ]
105 warmUp = int( main.params[ 'TEST' ][ 'warmUp' ] )
106 sampleSize = int( main.params[ 'TEST' ][ 'sampleSize' ] )
107 switches = int( main.params[ 'TEST' ][ 'switches' ] )
108 neighborList = ( main.params[ 'TEST' ][ 'neighbors' ] ).split( "," )
109 testCMD[ 0 ] = main.params[ 'TEST' ][ 'testCMD0' ]
110 testCMD[ 1 ] = main.params[ 'TEST' ][ 'testCMD1' ]
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700111 cooldown = main.params[ 'TEST' ][ 'cooldown' ]
112 cellName = main.params[ 'ENV' ][ 'cellName' ]
113 BENCHIp = main.params[ 'BENCH' ][ 'ip1' ]
114 BENCHUser = main.params[ 'BENCH' ][ 'user' ]
115 MN1Ip = main.params[ 'MN' ][ 'ip1' ]
Devin Lim142b5342017-07-20 15:22:39 -0700116 homeDir = os.path.expanduser( '~' )
117 flowRuleBackup = str( main.params[ 'TEST' ][ 'enableFlowRuleStoreBackup' ] )
118 main.log.info( "Flow Rule Backup is set to:" + flowRuleBackup )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700119
Devin Lim142b5342017-07-20 15:22:39 -0700120 servers = str( main.Cluster.numCtrls )
Jon Hall4ba53f02015-07-29 13:07:41 -0700121
Devin Lim142b5342017-07-20 15:22:39 -0700122 if main.Cluster.numCtrls == 1:
123 neighborList = [ '0' ]
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700124 currentNeighbors = "r"
125 else:
126 if currentNeighbors == "a":
Devin Lim142b5342017-07-20 15:22:39 -0700127 neighborList = [ str( main.Cluster.numCtrls - 1 ) ]
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700128 currentNeighbors = "r"
129 else:
Devin Lim142b5342017-07-20 15:22:39 -0700130 neighborList = [ '0' ]
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700131
Devin Lim142b5342017-07-20 15:22:39 -0700132 main.log.info( "neightborlist: " + str( neighborList ) )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700133
134 ts = time.time()
Devin Lim142b5342017-07-20 15:22:39 -0700135 st = datetime.datetime.fromtimestamp( ts ).strftime( '%Y-%m-%d %H:%M:%S' )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700136
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700137 for n in neighborList:
Devin Lim142b5342017-07-20 15:22:39 -0700138 main.step( "\tSTARTING TEST" )
139 main.step( "\tLOADING FROM SERVERS: \t" + str( main.Cluster.numCtrls ) )
140 main.step( "\tNEIGHBORS:\t" + n )
141 main.log.info( "=============================================================" )
142 main.log.info( "=============================================================" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700143 #write file to configure nil link
144 ipCSV = ""
Devin Lim142b5342017-07-20 15:22:39 -0700145 for i in range ( main.Cluster.maxCtrls ):
Devin Lim58046fa2017-07-05 16:55:00 -0700146 tempstr = "ip" + str( i + 1 )
Jon Hall4ba53f02015-07-29 13:07:41 -0700147 ipCSV += main.params[ 'CTRL' ][ tempstr ]
Devin Lim142b5342017-07-20 15:22:39 -0700148 if i + 1 < main.Cluster.maxCtrls:
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700149 ipCSV +=","
Jon Hall4ba53f02015-07-29 13:07:41 -0700150
Devin Lim142b5342017-07-20 15:22:39 -0700151 main.ONOSbench.onosCfgSet( main.Cluster.active( 0 ).ipAddress,
152 main.flowRuleCfg,
153 "backupCount 1" )
154 for i in range( 3 ):
155 main.ONOSbench.onosCfgSet( main.Cluster.active( 0 ).ipAddress,
156 main.nullProviderCfg,
157 "deviceCount 35" )
158 main.ONOSbench.onosCfgSet( main.Cluster.active( 0 ).ipAddress,
159 main.nullProviderCfg,
160 "topoShape linear" )
161 main.ONOSbench.onosCfgSet( main.Cluster.active( 0 ).ipAddress,
162 main.nullProviderCfg,
163 "enabled true" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700164
Devin Lim142b5342017-07-20 15:22:39 -0700165 time.sleep( 5 )
166 main.ONOSbench.handle.sendline( "onos $OC1 summary" )
167 main.ONOSbench.handle.expect( ":~" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700168 check = main.ONOSbench.handle.before
Devin Lim142b5342017-07-20 15:22:39 -0700169 main.log.info( "\nStart up check: \n" + check + "\n" )
Jon Hall4ba53f02015-07-29 13:07:41 -0700170 if "SCC(s)=1," in check:
suibin zhanga3746bf2015-09-05 09:36:39 -0700171 main.ONOSbench.handle.sendline( "onos $OC1 balance-masters" )
suibin zhang45efc1b2015-09-04 16:48:10 -0700172 main.ONOSbench.handle.expect( ":~" )
Devin Lim142b5342017-07-20 15:22:39 -0700173 time.sleep( 5 )
174 main.ONOSbench.handle.sendline( "onos $OC1 roles " )
suibin zhang45efc1b2015-09-04 16:48:10 -0700175 main.ONOSbench.handle.expect ( ":~" )
176 main.log.info( "switch masterships:" + str( main.ONOSbench.handle.before ) )
Jon Hall4ba53f02015-07-29 13:07:41 -0700177 break
Devin Lim142b5342017-07-20 15:22:39 -0700178 time.sleep( 5 )
Jon Hall4ba53f02015-07-29 13:07:41 -0700179
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700180 #devide flows
Devin Lim142b5342017-07-20 15:22:39 -0700181 flows = int( main.params[ 'TEST' ][ 'flows' ] )
182 main.log.info( "Flow Target = " + str( flows ) )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700183
Devin Lim142b5342017-07-20 15:22:39 -0700184 flows = ( flows *max( int( n )+1, int( servers ) ) )/( ( int( n ) + 1 ) * int( servers )*( switches ) )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700185
Devin Lim142b5342017-07-20 15:22:39 -0700186 main.log.info( "Flows per switch = " + str( flows ) )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700187
188 #build list of servers in "$OC1, $OC2...." format
189 serverEnvVars = ""
Devin Lim58046fa2017-07-05 16:55:00 -0700190 for i in range( int( servers ) ):
Devin Lim142b5342017-07-20 15:22:39 -0700191 serverEnvVars += ( "-s " + main.Cluster.active( i ).ipAddress + " " )
Jon Hall4ba53f02015-07-29 13:07:41 -0700192
Devin Lim142b5342017-07-20 15:22:39 -0700193 data = [ [ "" ]*int( servers ) ]*int( sampleSize )
194 maxes = [ "" ]*int( sampleSize )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700195
196 flowCMD = "python3 " + homeDir + "/onos/tools/test/bin/"
Devin Lim142b5342017-07-20 15:22:39 -0700197 flowCMD += testCMD[ 0 ] + " " + str( flows ) + " " + testCMD[ 1 ]
198 flowCMD += " " + str( n ) + " " + str( serverEnvVars ) + "-j"
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700199
Devin Lim142b5342017-07-20 15:22:39 -0700200 main.log.info( flowCMD )
201 #time.sleep( 60 )
Jon Hall4ba53f02015-07-29 13:07:41 -0700202
Devin Lim142b5342017-07-20 15:22:39 -0700203 for test in range( 0, warmUp + sampleSize ):
Jon Hall4ba53f02015-07-29 13:07:41 -0700204 if test < warmUp:
Devin Lim142b5342017-07-20 15:22:39 -0700205 main.log.info( "Warm up " + str( test + 1 ) + " of " + str( warmUp ) )
Jon Hall4ba53f02015-07-29 13:07:41 -0700206 else:
Devin Lim142b5342017-07-20 15:22:39 -0700207 main.log.info( "====== Test run: " + str( test-warmUp+1 ) + " ======" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700208
Devin Lim142b5342017-07-20 15:22:39 -0700209 main.ONOSbench.handle.sendline( flowCMD )
210 main.ONOSbench.handle.expect( ":~" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700211 rawResult = main.ONOSbench.handle.before
Devin Lim142b5342017-07-20 15:22:39 -0700212 main.log.info( "Raw results: \n" + rawResult + "\n" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700213
Jon Hall4ba53f02015-07-29 13:07:41 -0700214 if "failed" in rawResult:
Devin Lim142b5342017-07-20 15:22:39 -0700215 main.log.report( "FLOW_TESTER.PY FAILURE" )
216 main.log.report( " \n" + rawResult + " \n" )
217 for ctrl in main.Cluster.active():
218 main.log.report( "=======================================================" )
219 main.log.report( ctrl.name + "LOG REPORT" )
220 main.ONOSbench.logReport( ctrl.ipAddress, [ "ERROR", "WARNING", "EXCEPT" ], outputMode="d" )
221 main.ONOSbench.handle.sendline( "onos $OC1 flows" )
222 main.ONOSbench.handle.expect( ":~" )
223 main.log.info( main.ONOSbench.handle.before )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700224
225 break
Jon Hall4ba53f02015-07-29 13:07:41 -0700226
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700227 ########################################################################################
Devin Lim142b5342017-07-20 15:22:39 -0700228 result = [ "" ]*( main.Cluster.numCtrls )
Jon Hall4ba53f02015-07-29 13:07:41 -0700229
Devin Lim142b5342017-07-20 15:22:39 -0700230 #print( "rawResult: " + rawResult )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700231
232 rawResult = rawResult.splitlines()
233
Devin Lim142b5342017-07-20 15:22:39 -0700234 for node in range( main.Cluster.numCtrls ):
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700235 for line in rawResult:
Devin Lim142b5342017-07-20 15:22:39 -0700236 #print( "line: " + line )
237 if main.Cluster.active( node ).ipAddress in line and "server" in line:
Devin Lim58046fa2017-07-05 16:55:00 -0700238 temp = line.split( " " )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700239 for word in temp:
Devin Lim142b5342017-07-20 15:22:39 -0700240 #print ( "word: " + word )
241 if "elapsed" in repr( word ):
242 index = temp.index( word ) + 1
243 myParsed = ( temp[ index ] ).replace( ",", "" )
244 myParsed = myParsed.replace( "}", "" )
245 myParsed = int( myParsed )
Devin Lim58046fa2017-07-05 16:55:00 -0700246 result[ node ] = myParsed
Devin Lim142b5342017-07-20 15:22:39 -0700247 main.log.info( main.Cluster.active( node ).ipAddress + " : " + str( myParsed ) )
Jon Hall4ba53f02015-07-29 13:07:41 -0700248 break
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700249
250 if test >= warmUp:
Jon Hall4ba53f02015-07-29 13:07:41 -0700251 for i in result:
252 if i == "":
Devin Lim142b5342017-07-20 15:22:39 -0700253 main.log.error( "Missing data point, critical failure incoming" )
cameron@onlab.usb3aa4982015-07-13 15:20:41 -0700254
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700255 print result
Devin Lim142b5342017-07-20 15:22:39 -0700256 maxes[ test-warmUp ] = max( result )
257 main.log.info( "Data collection iteration: " + str( test-warmUp ) + " of " + str( sampleSize ) )
258 main.log.info( "Throughput time: " + str( maxes[ test-warmUp ] ) + "(ms)" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700259
Devin Lim142b5342017-07-20 15:22:39 -0700260 data[ test-warmUp ] = result
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700261
Jon Hall4ba53f02015-07-29 13:07:41 -0700262 # wait for flows = 0
Devin Lim142b5342017-07-20 15:22:39 -0700263 for checkCount in range( 0, 5 ):
264 time.sleep( 10 )
265 main.ONOSbench.handle.sendline( "onos $OC1 summary" )
266 main.ONOSbench.handle.expect( ":~" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700267 flowCheck = main.ONOSbench.handle.before
Jon Hall4ba53f02015-07-29 13:07:41 -0700268 if "flows=0," in flowCheck:
Devin Lim142b5342017-07-20 15:22:39 -0700269 main.log.info( "Flows removed" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700270 break
Jon Hall4ba53f02015-07-29 13:07:41 -0700271 else:
272 for line in flowCheck.splitlines():
273 if "flows=" in line:
Devin Lim142b5342017-07-20 15:22:39 -0700274 main.log.info( "Current Summary: " + line )
Jon Hall4ba53f02015-07-29 13:07:41 -0700275 if checkCount == 2:
Devin Lim142b5342017-07-20 15:22:39 -0700276 main.log.info( "Flows are stuck, moving on " )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700277
278
Devin Lim142b5342017-07-20 15:22:39 -0700279 time.sleep( 5 )
Jon Hall4ba53f02015-07-29 13:07:41 -0700280
Devin Lim142b5342017-07-20 15:22:39 -0700281 main.log.info( "raw data: " + str( data ) )
282 main.log.info( "maxes:" + str( maxes ) )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700283
Jon Hall4ba53f02015-07-29 13:07:41 -0700284
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700285 # report data
Devin Lim142b5342017-07-20 15:22:39 -0700286 print( "" )
287 main.log.info( "\t Results (measurments are in milliseconds)" )
288 print( "" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700289
290 nodeString = ""
Devin Lim142b5342017-07-20 15:22:39 -0700291 for i in range( 1, int( servers ) + 1 ):
292 nodeString += ( "\tNode " + str( i ) )
Jon Hall4ba53f02015-07-29 13:07:41 -0700293
Devin Lim142b5342017-07-20 15:22:39 -0700294 for test in range( 0, sampleSize ):
295 main.log.info( "\t Test iteration " + str( test + 1 ) )
296 main.log.info( "\t------------------" )
297 main.log.info( nodeString )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700298 resultString = ""
299
Devin Lim142b5342017-07-20 15:22:39 -0700300 for i in range( 0, int( servers ) ):
301 resultString += ( "\t" + str( data[ test ][ i ] ) )
302 main.log.info( resultString )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700303
Devin Lim142b5342017-07-20 15:22:39 -0700304 print( "\n" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700305
Devin Lim142b5342017-07-20 15:22:39 -0700306 avgOfMaxes = numpy.mean( maxes )
307 main.log.info( "Average of max value from each test iteration: " + str( avgOfMaxes ) )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700308
Devin Lim142b5342017-07-20 15:22:39 -0700309 stdOfMaxes = numpy.std( maxes )
310 main.log.info( "Standard Deviation of max values: " + str( stdOfMaxes ) )
311 print( "\n\n" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700312
Devin Lim142b5342017-07-20 15:22:39 -0700313 avgTP = int( main.params[ 'TEST' ][ 'flows' ] ) / avgOfMaxes #result in kflows/second
Jon Hall4ba53f02015-07-29 13:07:41 -0700314
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700315 tp = []
Jon Hall4ba53f02015-07-29 13:07:41 -0700316 for i in maxes:
Devin Lim142b5342017-07-20 15:22:39 -0700317 tp.append( ( int( main.params[ 'TEST' ][ 'flows' ] ) / i ) )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700318
Devin Lim142b5342017-07-20 15:22:39 -0700319 stdTP = numpy.std( tp )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700320
Devin Lim142b5342017-07-20 15:22:39 -0700321 main.log.info( "Average thoughput: " + str( avgTP ) + " Kflows/second" )
322 main.log.info( "Standard deviation of throughput: " + str( stdTP ) + " Kflows/second" )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700323
Devin Lim58046fa2017-07-05 16:55:00 -0700324 resultsLog = open( "/tmp/flowTP1gDB", "a" )
325 resultString = ( "'" + main.commit + "'," )
326 resultString += ( "'1gig'," )
Devin Lim142b5342017-07-20 15:22:39 -0700327 resultString += ( ( main.params[ 'TEST' ][ 'flows' ] ) + "," )
328 resultString += ( str( main.Cluster.numCtrls ) + "," )
Devin Lim58046fa2017-07-05 16:55:00 -0700329 resultString += ( str( n ) + "," )
330 resultString += ( str( avgTP ) + "," + str( stdTP ) + "\n" )
331 resultsLog.write( resultString )
cameron@onlab.us946d99c2015-07-08 15:34:37 -0700332 resultsLog.close()
Jon Hall4ba53f02015-07-29 13:07:41 -0700333
Devin Lim58046fa2017-07-05 16:55:00 -0700334 main.log.report( "Result line to file: " + resultString )
Jon Hall4ba53f02015-07-29 13:07:41 -0700335
Devin Lim142b5342017-07-20 15:22:39 -0700336 main.ONOSbench.logReport( main.Cluster.active( 0 ).ipAddress, [ "ERROR", "WARNING", "EXCEPT" ], outputMode="d" )