blob: 93425964a32ed804556e5484e8ba91223a32693c [file] [log] [blame]
Cameron Franke2ea90e52015-01-21 10:04:16 -08001# ScaleOutTemplate --> IntentsLoad
2#
3# CASE1 starts number of nodes specified in param file
4#
5# cameron@onlab.us
6
andrew@onlab.usc400b112015-01-21 15:33:19 -08007import sys
8import os
Cameron Franke2ea90e52015-01-21 10:04:16 -08009
10
11class IntentsLoad:
andrew@onlab.usc400b112015-01-21 15:33:19 -080012
13 def __init__( self ):
Cameron Franke2ea90e52015-01-21 10:04:16 -080014 self.default = ''
Cameron Franke2ea90e52015-01-21 10:04:16 -080015
andrew@onlab.usc400b112015-01-21 15:33:19 -080016 def CASE1( self, main ):
Cameron Franke2ea90e52015-01-21 10:04:16 -080017
andrew@onlab.usc400b112015-01-21 15:33:19 -080018 global clusterCount
19 clusterCount = 1
20
21 checkoutBranch = main.params[ 'GIT' ][ 'checkout' ]
22 gitPull = main.params[ 'GIT' ][ 'autopull' ]
23 cellName = main.params[ 'ENV' ][ 'cellName' ]
24 BENCHIp = main.params[ 'BENCH' ][ 'ip1' ]
25 BENCHUser = main.params[ 'BENCH' ][ 'user' ]
26 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
27 ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
28 ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
29 MN1Ip = main.params[ 'MN' ][ 'ip1' ]
30
31 main.log.step( "Cleaning Enviornment..." )
32 main.ONOSbench.onosUninstall( ONOS1Ip )
33 main.ONOSbench.onosUninstall( ONOS2Ip )
34 main.ONOSbench.onosUninstall( ONOS3Ip )
35
36 main.step( "Git checkout and pull " + checkoutBranch )
37 if gitPull == 'on':
38 checkoutResult = main.ONOSbench.gitCheckout( checkoutBranch )
39 pullResult = main.ONOSbench.gitPull()
40
Cameron Franke2ea90e52015-01-21 10:04:16 -080041 else:
andrew@onlab.usc400b112015-01-21 15:33:19 -080042 checkoutResult = main.TRUE
43 pullResult = main.TRUE
44 main.log.info( "Skipped git checkout and pull" )
Cameron Franke2ea90e52015-01-21 10:04:16 -080045
andrew@onlab.usc400b112015-01-21 15:33:19 -080046 #mvnResult = main.ONOSbench.cleanInstall()
Cameron Franke2ea90e52015-01-21 10:04:16 -080047
andrew@onlab.usc400b112015-01-21 15:33:19 -080048 main.step( "Set cell for ONOS cli env" )
49 main.ONOS1cli.setCell( cellName )
50 main.ONOS2cli.setCell( cellName )
51 main.ONOS3cli.setCell( cellName )
Cameron Franke2ea90e52015-01-21 10:04:16 -080052
andrew@onlab.usc400b112015-01-21 15:33:19 -080053 main.step( "Creating ONOS package" )
54 packageResult = main.ONOSbench.onosPackage() # no file or directory
Cameron Franke2ea90e52015-01-21 10:04:16 -080055
andrew@onlab.usc400b112015-01-21 15:33:19 -080056 main.step( "Installing ONOS package" )
57 install1Result = main.ONOSbench.onosInstall( node=ONOS1Ip )
Cameron Franke2ea90e52015-01-21 10:04:16 -080058
andrew@onlab.usc400b112015-01-21 15:33:19 -080059 cellName = main.params[ 'ENV' ][ 'cellName' ]
60 main.step( "Applying cell file to environment" )
61 cellApplyResult = main.ONOSbench.setCell( cellName )
62 main.step( "verify cells" )
63 verifyCellResult = main.ONOSbench.verifyCell()
Cameron Franke2ea90e52015-01-21 10:04:16 -080064
andrew@onlab.usc400b112015-01-21 15:33:19 -080065 main.step( "Set cell for ONOS cli env" )
66 main.ONOS1cli.setCell( cellName )
Cameron Franke2ea90e52015-01-21 10:04:16 -080067
andrew@onlab.usc400b112015-01-21 15:33:19 -080068 cli1 = main.ONOS1cli.startOnosCli( ONOS1Ip )
69
70 def CASE2( self, main ):
71 """
Cameron Franke2ea90e52015-01-21 10:04:16 -080072 Increase number of nodes and initiate CLI
andrew@onlab.usc400b112015-01-21 15:33:19 -080073 """
74 import time
Cameron Franke2ea90e52015-01-21 10:04:16 -080075
andrew@onlab.usc400b112015-01-21 15:33:19 -080076 global clusterCount
Cameron Franke2ea90e52015-01-21 10:04:16 -080077
andrew@onlab.usc400b112015-01-21 15:33:19 -080078 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
79 ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ]
80 ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ]
81 #ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ]
82 #ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ]
83 #ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ]
84 #ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ]
85 cellName = main.params[ 'ENV' ][ 'cellName' ]
86 scale = int( main.params[ 'SCALE' ] )
87
88 # Cluster size increased everytime the case is defined
89 clusterCount += scale
90
91 main.log.report( "Increasing cluster size to " +
92 str( clusterCount ) )
93 installResult = main.FALSE
94
Cameron Franke2ea90e52015-01-21 10:04:16 -080095 if scale == 2:
andrew@onlab.usc400b112015-01-21 15:33:19 -080096 if clusterCount == 3:
97 main.log.info( "Installing nodes 2 and 3" )
98 install2Result = main.ONOSbench.onosInstall( node=ONOS2Ip )
99 install3Result = main.ONOSbench.onosInstall( node=ONOS3Ip )
100 cli2 = main.ONOS2cli.startOnosCli( ONOS2Ip )
101 cli3 = main.ONOS3cli.startOnosCli( ONOS3Ip )
andrew@onlab.us98eab872015-01-22 14:41:34 -0800102
andrew@onlab.usc400b112015-01-21 15:33:19 -0800103 if scale == 1:
104 if clusterCount == 2:
105 main.log.info( "Installing node 2" )
106 install2Result = main.ONOSbench.onosInstall( node=ONOS2Ip )
107 cli2 = main.ONOS2cli.startOnosCli( ONOS2Ip )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800108
andrew@onlab.usc400b112015-01-21 15:33:19 -0800109 if clusterCount == 3:
110 main.log.info( "Installing node 3" )
111 install3Result = main.ONOSbench.onosInstall( node=ONOS3Ip )
112 cli3 = main.ONOS3cli.startOnosCli( ONOS3Ip )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800113
andrew@onlab.usc400b112015-01-21 15:33:19 -0800114 def CASE3( self, main ):
Cameron Franke2ea90e52015-01-21 10:04:16 -0800115 import time
116 import json
117 import string
118
andrew@onlab.usc400b112015-01-21 15:33:19 -0800119 intentsRate = main.params[ 'JSON' ][ 'intents_rate' ]
Cameron Franke2ea90e52015-01-21 10:04:16 -0800120
andrew@onlab.usc400b112015-01-21 15:33:19 -0800121 defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
Cameron Franke2ea90e52015-01-21 10:04:16 -0800122
andrew@onlab.usc400b112015-01-21 15:33:19 -0800123 main.Mininet1.assignSwController(
124 sw="1",
125 ip1=ONOS1Ip,
126 port1=defaultSwPort )
127 main.Mininet1.assignSwController(
128 sw="2",
129 ip1=ONOS1Ip,
130 port1=defaultSwPort )
131 main.Mininet1.assignSwController(
132 sw="3",
133 ip1=ONOS1Ip,
134 port1=defaultSwPort )
135 main.Mininet1.assignSwController(
136 sw="4",
137 ip1=ONOS1Ip,
138 port1=defaultSwPort )
139 main.Mininet1.assignSwController(
140 sw="5",
141 ip1=ONOS1Ip,
142 port1=defaultSwPort )
143 main.Mininet1.assignSwController(
144 sw="6",
145 ip1=ONOS1Ip,
146 port1=defaultSwPort )
147 main.Mininet1.assignSwController(
148 sw="7",
149 ip1=ONOS1Ip,
150 port1=defaultSwPort )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800151
andrew@onlab.usc400b112015-01-21 15:33:19 -0800152 mnArp = main.params[ 'TEST' ][ 'arping' ]
153 main.Mininet1.handle.sendline( mnArp )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800154
andrew@onlab.usc400b112015-01-21 15:33:19 -0800155 generateLoad = main.params[ 'TEST' ][ 'loadstart' ]
Cameron Franke2ea90e52015-01-21 10:04:16 -0800156
andrew@onlab.usc400b112015-01-21 15:33:19 -0800157 main.ONOS1.handle.sendline( generateLoad )
158 main.ONOS1.handle.expect( "sdn" )
159 print( "before: ", main.ONOS1.handle.before )
160 print( "after: ", main.ONOS1.handle.after )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800161
andrew@onlab.usc400b112015-01-21 15:33:19 -0800162 loadConfirm = main.ONOS1.handle.after
163 if loadConfirm == "{}":
164 main.log.info( "Load started" )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800165
andrew@onlab.usc400b112015-01-21 15:33:19 -0800166 else:
167 main.log.error( "Load start failure" )
168 main.log.error( "expected '{}', got: " + str( loadConfirm ) )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800169
andrew@onlab.usc400b112015-01-21 15:33:19 -0800170 devicesJsonStr = main.ONOS1cli.devices()
171 devicesJsonObj = json.loads( devicesJsonStr )
172
173 getMetric = main.params[ 'TEST' ][ 'metric1' ]
174 testDuration = main.params[ 'TEST' ][ 'duration' ]
175 stop = time.time() + float( testDuration )
176
177 main.log.info( "Starting test loop..." )
178 logInterval = main.params[ 'TEST' ][ 'log_interval' ]
Cameron Franke2ea90e52015-01-21 10:04:16 -0800179
180 while time.time() < stop:
andrew@onlab.usc400b112015-01-21 15:33:19 -0800181 time.sleep( float( logInterval ) )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800182
andrew@onlab.usc400b112015-01-21 15:33:19 -0800183 intentsJsonStr1 = main.ONOS1cli.intentsEventsMetrics()
184 intentsJsonObj1 = json.loads( intentsJsonStr1 )
185 main.log.info( "Node 1 rate: " +
186 str( intentsJsonObj1[ intentsRate ][ 'm1_rate' ] ) )
187 lastRate1 = intentsJsonObj1[ intentsRate ][ 'm1_rate' ]
Cameron Franke2ea90e52015-01-21 10:04:16 -0800188
andrew@onlab.usc400b112015-01-21 15:33:19 -0800189 stopLoad = main.params[ 'TEST' ][ 'loadstop' ]
190 main.ONOS1.handle.sendline( stopLoad )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800191
andrew@onlab.usc400b112015-01-21 15:33:19 -0800192 msg = ( "Final rate on node 1: " + str( lastRate1 ) )
193 main.log.report( msg )
Cameron Franke2ea90e52015-01-21 10:04:16 -0800194
andrew@onlab.us2ae3a112015-02-02 11:24:32 -0800195 ############## Insert jenkins csv file setup #############
196
andrew@onlab.usc400b112015-01-21 15:33:19 -0800197 def CASE4( self, main ): # 2 node scale
198 import time
199 import json
200 import string
Cameron Franke2ea90e52015-01-21 10:04:16 -0800201
andrew@onlab.usc400b112015-01-21 15:33:19 -0800202 intentsRate = main.params[ 'JSON' ][ 'intents_rate' ]
Cameron Franke2ea90e52015-01-21 10:04:16 -0800203
andrew@onlab.usc400b112015-01-21 15:33:19 -0800204 defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
Cameron Franke2ea90e52015-01-21 10:04:16 -0800205
andrew@onlab.usc400b112015-01-21 15:33:19 -0800206 main.Mininet1.assignSwController(
207 sw="1",
208 ip1=ONOS1Ip,
209 port1=defaultSwPort )
210 main.Mininet1.assignSwController(
211 sw="2",
212 ip1=ONOS2Ip,
213 port1=defaultSwPort )
214 main.Mininet1.assignSwController(
215 sw="3",
216 ip1=ONOS1Ip,
217 port1=defaultSwPort )
218 main.Mininet1.assignSwController(
219 sw="4",
220 ip1=ONOS2Ip,
221 port1=defaultSwPort )
222 main.Mininet1.assignSwController(
223 sw="5",
224 ip1=ONOS1Ip,
225 port1=defaultSwPort )
226 main.Mininet1.assignSwController(
227 sw="6",
228 ip1=ONOS2Ip,
229 port1=defaultSwPort )
230 main.Mininet1.assignSwController(
231 sw="7",
232 ip1=ONOS1Ip,
233 port1=defaultSwPort )
234
235 mnArp = main.params[ 'TEST' ][ 'arping' ]
236 main.Mininet1.handle.sendline( mnArp )
237
238 generateLoad = main.params[ 'TEST' ][ 'loadstart' ]
239
240 main.ONOS1.handle.sendline( generateLoad )
241 main.ONOS2.handle.sendline( generateLoad )
242
243 devicesJsonStr1 = main.ONOS1cli.devices()
244 devicesJsonObj1 = json.loads( devicesJsonStr1 )
245 devicesJsonStr2 = main.ONOS2cli.devices()
246 devicesJsonObj2 = json.loads( devicesJsonStr2 )
247
248 getMetric = main.params[ 'TEST' ][ 'metric1' ]
249 testDuration = main.params[ 'TEST' ][ 'duration' ]
250 stop = time.time() + float( testDuration )
251
252 main.log.info( "Starting test loop..." )
253 logInterval = main.params[ 'TEST' ][ 'log_interval' ]
254
255 while time.time() < stop:
256 time.sleep( float( logInterval ) )
257
258 intentsJsonStr1 = main.ONOS1cli.intentsEventsMetrics()
259 intentsJsonObj1 = json.loads( intentsJsonStr1 )
260 main.log.info( "Node 1 rate: " +
261 str( intentsJsonObj1[ intentsRate ][ 'm1_rate' ] ) )
262 lastRate1 = intentsJsonObj1[ intentsRate ][ 'm1_rate' ]
263
264 intentsJsonStr2 = main.ONOS2cli.intentsEventsMetrics()
265 intentsJsonObj2 = json.loads( intentsJsonStr2 )
266 main.log.info( "Node 2 rate: " +
267 str( intentsJsonObj2[ intentsRate ][ 'm1_rate' ] ) )
268 lastRate2 = intentsJsonObj2[ intentsRate ][ 'm1_rate' ]
269
270 stopLoad = main.params[ 'TEST' ][ 'loadstop' ]
271 main.ONOS1.handle.sendline( stopLoad )
272 main.ONOS2.handle.sendline( stopLoad )
273
274 msg = ( "Final rate on node 1: " + str( lastRate1 ) )
275 main.log.report( msg )
276
277 msg = ( "Final rate on node 2: " + str( lastRate2 ) )
278 main.log.report( msg )
andrew@onlab.us98eab872015-01-22 14:41:34 -0800279
280
281
282 def CASE5( self, main ): # 2 node scale
283 import time
284 import json
285 import string
286
287 intentsRate = main.params[ 'JSON' ][ 'intents_rate' ]
288
289 defaultSwPort = main.params[ 'CTRL' ][ 'port1' ]
290
291 main.Mininet1.assignSwController(
292 sw="1",
293 ip1=ONOS1Ip,
294 port1=defaultSwPort )
295 main.Mininet1.assignSwController(
296 sw="2",
297 ip1=ONOS2Ip,
298 port1=defaultSwPort )
299 main.Mininet1.assignSwController(
300 sw="3",
301 ip1=ONOS3Ip,
302 port1=defaultSwPort )
303 main.Mininet1.assignSwController(
304 sw="4",
305 ip1=ONOS1Ip,
306 port1=defaultSwPort )
307 main.Mininet1.assignSwController(
308 sw="5",
309 ip1=ONOS2Ip,
310 port1=defaultSwPort )
311 main.Mininet1.assignSwController(
312 sw="6",
313 ip1=ONOS3Ip,
314 port1=defaultSwPort )
315 main.Mininet1.assignSwController(
316 sw="7",
317 ip1=ONOS1Ip,
318 port1=defaultSwPort )
319
320 mnArp = main.params[ 'TEST' ][ 'arping' ]
321 main.Mininet1.handle.sendline( mnArp )
322
323 generateLoad = main.params[ 'TEST' ][ 'loadstart' ]
324
325 main.ONOS1.handle.sendline( generateLoad )
326 main.ONOS2.handle.sendline( generateLoad )
327 main.ONOS3.handle.sendline( generateLoad )
328
329 devicesJsonStr1 = main.ONOS1cli.devices()
330 devicesJsonObj1 = json.loads( devicesJsonStr1 )
331 devicesJsonStr2 = main.ONOS2cli.devices()
332 devicesJsonObj2 = json.loads( devicesJsonStr2 )
333 devicesJsonStr3 = main.ONOS3cli.devices()
334 devicesJsonObj3 = json.loads( devicesJsonStr3 )
335
336 getMetric = main.params[ 'TEST' ][ 'metric1' ]
337 testDuration = main.params[ 'TEST' ][ 'duration' ]
338 stop = time.time() + float( testDuration )
339
340 main.log.info( "Starting test loop..." )
341 logInterval = main.params[ 'TEST' ][ 'log_interval' ]
342
343 while time.time() < stop:
344 time.sleep( float( logInterval ) )
345
346 intentsJsonStr1 = main.ONOS1cli.intentsEventsMetrics()
347 intentsJsonObj1 = json.loads( intentsJsonStr1 )
348 main.log.info( "Node 1 rate: " +
349 str( intentsJsonObj1[ intentsRate ][ 'm1_rate' ] ) )
350 lastRate1 = intentsJsonObj1[ intentsRate ][ 'm1_rate' ]
351
352 intentsJsonStr2 = main.ONOS2cli.intentsEventsMetrics()
353 intentsJsonObj2 = json.loads( intentsJsonStr2 )
354 main.log.info( "Node 2 rate: " +
355 str( intentsJsonObj2[ intentsRate ][ 'm1_rate' ] ) )
356 lastRate2 = intentsJsonObj2[ intentsRate ][ 'm1_rate' ]
357
358 intentsJsonStr3 = main.ONOS3cli.intentsEventsMetrics()
359 intentsJsonObj3 = json.loads( intentsJsonStr3 )
360 main.log.info( "Node 3 rate: " +
361 str( intentsJsonObj3[ intentsRate ][ 'm1_rate' ] ) )
362 lastRate3 = intentsJsonObj3[ intentsRate ][ 'm1_rate' ]
363
364 stopLoad = main.params[ 'TEST' ][ 'loadstop' ]
365 main.ONOS1.handle.sendline( stopLoad )
366 main.ONOS2.handle.sendline( stopLoad )
367 main.ONOS3.handle.sendline( stopLoad )
368
369 msg = ( "Final rate on node 1: " + str( lastRate1 ) )
370 main.log.report( msg )
371
372 msg = ( "Final rate on node 2: " + str( lastRate2 ) )
373 main.log.report( msg )
374
375 msg = ( "Final rate on node 3: " + str( lastRate3 ) )
376 main.log.report( msg )
377
378
379