| # ScaleOutTemplate --> IntentsLoad |
| # |
| # CASE1 starts number of nodes specified in param file |
| # |
| # cameron@onlab.us |
| |
| import sys |
| import os |
| |
| |
| class IntentsLoad: |
| |
| def __init__( self ): |
| self.default = '' |
| |
| def CASE1( self, main ): |
| |
| global clusterCount |
| clusterCount = 1 |
| |
| checkoutBranch = main.params[ 'GIT' ][ 'checkout' ] |
| gitPull = main.params[ 'GIT' ][ 'autopull' ] |
| cellName = main.params[ 'ENV' ][ 'cellName' ] |
| BENCHIp = main.params[ 'BENCH' ][ 'ip1' ] |
| BENCHUser = main.params[ 'BENCH' ][ 'user' ] |
| ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ] |
| ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ] |
| ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ] |
| MN1Ip = main.params[ 'MN' ][ 'ip1' ] |
| |
| main.log.step( "Cleaning Enviornment..." ) |
| main.ONOSbench.onosUninstall( ONOS1Ip ) |
| main.ONOSbench.onosUninstall( ONOS2Ip ) |
| main.ONOSbench.onosUninstall( ONOS3Ip ) |
| |
| main.step( "Git checkout and pull " + checkoutBranch ) |
| if gitPull == 'on': |
| checkoutResult = main.ONOSbench.gitCheckout( checkoutBranch ) |
| pullResult = main.ONOSbench.gitPull() |
| |
| else: |
| checkoutResult = main.TRUE |
| pullResult = main.TRUE |
| main.log.info( "Skipped git checkout and pull" ) |
| |
| #mvnResult = main.ONOSbench.cleanInstall() |
| |
| main.step( "Set cell for ONOS cli env" ) |
| main.ONOS1cli.setCell( cellName ) |
| main.ONOS2cli.setCell( cellName ) |
| main.ONOS3cli.setCell( cellName ) |
| |
| main.step( "Creating ONOS package" ) |
| packageResult = main.ONOSbench.onosPackage() # no file or directory |
| |
| main.step( "Installing ONOS package" ) |
| install1Result = main.ONOSbench.onosInstall( node=ONOS1Ip ) |
| |
| cellName = main.params[ 'ENV' ][ 'cellName' ] |
| main.step( "Applying cell file to environment" ) |
| cellApplyResult = main.ONOSbench.setCell( cellName ) |
| main.step( "verify cells" ) |
| verifyCellResult = main.ONOSbench.verifyCell() |
| |
| main.step( "Set cell for ONOS cli env" ) |
| main.ONOS1cli.setCell( cellName ) |
| |
| cli1 = main.ONOS1cli.startOnosCli( ONOS1Ip ) |
| |
| def CASE2( self, main ): |
| """ |
| Increase number of nodes and initiate CLI |
| """ |
| import time |
| |
| global clusterCount |
| |
| ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ] |
| ONOS2Ip = main.params[ 'CTRL' ][ 'ip2' ] |
| ONOS3Ip = main.params[ 'CTRL' ][ 'ip3' ] |
| #ONOS4Ip = main.params[ 'CTRL' ][ 'ip4' ] |
| #ONOS5Ip = main.params[ 'CTRL' ][ 'ip5' ] |
| #ONOS6Ip = main.params[ 'CTRL' ][ 'ip6' ] |
| #ONOS7Ip = main.params[ 'CTRL' ][ 'ip7' ] |
| cellName = main.params[ 'ENV' ][ 'cellName' ] |
| scale = int( main.params[ 'SCALE' ] ) |
| |
| # Cluster size increased everytime the case is defined |
| clusterCount += scale |
| |
| main.log.report( "Increasing cluster size to " + |
| str( clusterCount ) ) |
| installResult = main.FALSE |
| |
| if scale == 2: |
| if clusterCount == 3: |
| main.log.info( "Installing nodes 2 and 3" ) |
| install2Result = main.ONOSbench.onosInstall( node=ONOS2Ip ) |
| install3Result = main.ONOSbench.onosInstall( node=ONOS3Ip ) |
| cli2 = main.ONOS2cli.startOnosCli( ONOS2Ip ) |
| cli3 = main.ONOS3cli.startOnosCli( ONOS3Ip ) |
| """ |
| elif clusterCount == 5: |
| main.log.info( "Installing nodes 4 and 5" ) |
| node4Result = main.ONOSbench.onosInstall( node=ONOS4Ip ) |
| node5Result = main.ONOSbench.onosInstall( node=ONOS5Ip ) |
| installResult = node4Result and node5Result |
| time.sleep( 5 ) |
| main.ONOS4cli.startOnosCli( ONOS4Ip ) |
| main.ONOS5cli.startOnosCli( ONOS5Ip ) |
| elif clusterCount == 7: |
| main.log.info( "Installing nodes 4 and 5" ) |
| node6Result = main.ONOSbench.onosInstall( node=ONOS6Ip ) |
| node7Result = main.ONOSbench.onosInstall( node=ONOS7Ip ) |
| installResult = node6Result and node7Result |
| time.sleep( 5 ) |
| main.ONOS6cli.startOnosCli( ONOS6Ip ) |
| main.ONOS7cli.startOnosCli( ONOS7Ip ) |
| """ |
| if scale == 1: |
| if clusterCount == 2: |
| main.log.info( "Installing node 2" ) |
| install2Result = main.ONOSbench.onosInstall( node=ONOS2Ip ) |
| cli2 = main.ONOS2cli.startOnosCli( ONOS2Ip ) |
| |
| if clusterCount == 3: |
| main.log.info( "Installing node 3" ) |
| install3Result = main.ONOSbench.onosInstall( node=ONOS3Ip ) |
| cli3 = main.ONOS3cli.startOnosCli( ONOS3Ip ) |
| |
| def CASE3( self, main ): |
| import time |
| import json |
| import string |
| |
| intentsRate = main.params[ 'JSON' ][ 'intents_rate' ] |
| |
| defaultSwPort = main.params[ 'CTRL' ][ 'port1' ] |
| |
| main.Mininet1.assignSwController( |
| sw="1", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="2", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="3", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="4", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="5", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="6", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="7", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| |
| mnArp = main.params[ 'TEST' ][ 'arping' ] |
| main.Mininet1.handle.sendline( mnArp ) |
| |
| generateLoad = main.params[ 'TEST' ][ 'loadstart' ] |
| |
| main.ONOS1.handle.sendline( generateLoad ) |
| main.ONOS1.handle.expect( "sdn" ) |
| print( "before: ", main.ONOS1.handle.before ) |
| print( "after: ", main.ONOS1.handle.after ) |
| |
| loadConfirm = main.ONOS1.handle.after |
| if loadConfirm == "{}": |
| main.log.info( "Load started" ) |
| |
| else: |
| main.log.error( "Load start failure" ) |
| main.log.error( "expected '{}', got: " + str( loadConfirm ) ) |
| |
| devicesJsonStr = main.ONOS1cli.devices() |
| devicesJsonObj = json.loads( devicesJsonStr ) |
| |
| getMetric = main.params[ 'TEST' ][ 'metric1' ] |
| testDuration = main.params[ 'TEST' ][ 'duration' ] |
| stop = time.time() + float( testDuration ) |
| |
| main.log.info( "Starting test loop..." ) |
| logInterval = main.params[ 'TEST' ][ 'log_interval' ] |
| |
| while time.time() < stop: |
| time.sleep( float( logInterval ) ) |
| |
| intentsJsonStr1 = main.ONOS1cli.intentsEventsMetrics() |
| intentsJsonObj1 = json.loads( intentsJsonStr1 ) |
| main.log.info( "Node 1 rate: " + |
| str( intentsJsonObj1[ intentsRate ][ 'm1_rate' ] ) ) |
| lastRate1 = intentsJsonObj1[ intentsRate ][ 'm1_rate' ] |
| |
| stopLoad = main.params[ 'TEST' ][ 'loadstop' ] |
| main.ONOS1.handle.sendline( stopLoad ) |
| |
| msg = ( "Final rate on node 1: " + str( lastRate1 ) ) |
| main.log.report( msg ) |
| |
| def CASE4( self, main ): # 2 node scale |
| import time |
| import json |
| import string |
| |
| intentsRate = main.params[ 'JSON' ][ 'intents_rate' ] |
| |
| defaultSwPort = main.params[ 'CTRL' ][ 'port1' ] |
| |
| main.Mininet1.assignSwController( |
| sw="1", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="2", |
| ip1=ONOS2Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="3", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="4", |
| ip1=ONOS2Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="5", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="6", |
| ip1=ONOS2Ip, |
| port1=defaultSwPort ) |
| main.Mininet1.assignSwController( |
| sw="7", |
| ip1=ONOS1Ip, |
| port1=defaultSwPort ) |
| |
| mnArp = main.params[ 'TEST' ][ 'arping' ] |
| main.Mininet1.handle.sendline( mnArp ) |
| |
| generateLoad = main.params[ 'TEST' ][ 'loadstart' ] |
| |
| main.ONOS1.handle.sendline( generateLoad ) |
| main.ONOS2.handle.sendline( generateLoad ) |
| |
| devicesJsonStr1 = main.ONOS1cli.devices() |
| devicesJsonObj1 = json.loads( devicesJsonStr1 ) |
| devicesJsonStr2 = main.ONOS2cli.devices() |
| devicesJsonObj2 = json.loads( devicesJsonStr2 ) |
| |
| getMetric = main.params[ 'TEST' ][ 'metric1' ] |
| testDuration = main.params[ 'TEST' ][ 'duration' ] |
| stop = time.time() + float( testDuration ) |
| |
| main.log.info( "Starting test loop..." ) |
| logInterval = main.params[ 'TEST' ][ 'log_interval' ] |
| |
| while time.time() < stop: |
| time.sleep( float( logInterval ) ) |
| |
| intentsJsonStr1 = main.ONOS1cli.intentsEventsMetrics() |
| intentsJsonObj1 = json.loads( intentsJsonStr1 ) |
| main.log.info( "Node 1 rate: " + |
| str( intentsJsonObj1[ intentsRate ][ 'm1_rate' ] ) ) |
| lastRate1 = intentsJsonObj1[ intentsRate ][ 'm1_rate' ] |
| |
| intentsJsonStr2 = main.ONOS2cli.intentsEventsMetrics() |
| intentsJsonObj2 = json.loads( intentsJsonStr2 ) |
| main.log.info( "Node 2 rate: " + |
| str( intentsJsonObj2[ intentsRate ][ 'm1_rate' ] ) ) |
| lastRate2 = intentsJsonObj2[ intentsRate ][ 'm1_rate' ] |
| |
| stopLoad = main.params[ 'TEST' ][ 'loadstop' ] |
| main.ONOS1.handle.sendline( stopLoad ) |
| main.ONOS2.handle.sendline( stopLoad ) |
| |
| msg = ( "Final rate on node 1: " + str( lastRate1 ) ) |
| main.log.report( msg ) |
| |
| msg = ( "Final rate on node 2: " + str( lastRate2 ) ) |
| main.log.report( msg ) |