add test case 3 for I2 deployment
Change-Id: I6c25196deccaade07f7b4f31df0ac6fda2ef614f
diff --git a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py b/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py
new file mode 100644
index 0000000..ab7e002
--- /dev/null
+++ b/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py
@@ -0,0 +1,159 @@
+# Testing the functionality of SDN-IP with single ONOS instance
+class USECASE_SdnipI2:
+
+ def __init__( self ):
+ self.default = ''
+ global branchName
+
+
+ # This case is to setup ONOS
+ def CASE100( self, main ):
+ """
+ CASE100 is to compile ONOS and install it
+ Startup sequence:
+ cell <name>
+ onos-verify-cell
+ git pull
+ mvn clean install
+ onos-package
+ onos-install -f
+ onos-wait-for-start
+ """
+ import json
+ import time
+ from operator import eq
+
+ main.case( "Setting up test environment" )
+
+ cellName = main.params[ 'ENV' ][ 'cellName' ]
+ ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
+
+ main.step( "Applying cell variable to environment" )
+ cellResult = main.ONOSbench.setCell( cellName )
+ verifyResult = main.ONOSbench.verifyCell()
+
+ branchName = main.ONOSbench.getBranchName()
+ main.log.info( "ONOS is on branch: " + branchName )
+
+ main.log.report( "Uninstalling ONOS" )
+ main.ONOSbench.onosUninstall( ONOS1Ip )
+
+ # cleanInstallResult = main.TRUE
+ # gitPullResult = main.TRUE
+
+ main.step( "Git pull" )
+ gitPullResult = main.ONOSbench.gitPull()
+
+ main.step( "Using mvn clean install" )
+ if gitPullResult == main.TRUE:
+ cleanInstallResult = main.ONOSbench.cleanInstall( mciTimeout = 1000 )
+ else:
+ main.log.warn( "Did not pull new code so skipping mvn " +
+ "clean install" )
+ cleanInstallResult = main.TRUE
+
+ main.ONOSbench.getVersion( report = True )
+
+ main.step( "Creating ONOS package" )
+ packageResult = main.ONOSbench.onosPackage( opTimeout = 500 )
+
+ main.step( "Installing ONOS package" )
+ onos1InstallResult = main.ONOSbench.onosInstall( options = "-f",
+ node = ONOS1Ip )
+
+ main.step( "Checking if ONOS is up yet" )
+ for i in range( 2 ):
+ onos1Isup = main.ONOSbench.isup( ONOS1Ip, timeout = 420 )
+ if onos1Isup:
+ break
+ if not onos1Isup:
+ main.log.report( "ONOS1 didn't start!" )
+
+ cliResult = main.ONOScli.startOnosCli( ONOS1Ip,
+ commandlineTimeout = 100, onosStartTimeout = 600 )
+
+ case1Result = ( cleanInstallResult and packageResult and
+ cellResult and verifyResult and
+ onos1InstallResult and
+ onos1Isup and cliResult )
+
+ utilities.assert_equals( expect = main.TRUE, actual = case1Result,
+ onpass = "ONOS startup successful",
+ onfail = "ONOS startup NOT successful" )
+
+ if case1Result == main.FALSE:
+ main.cleanup()
+ main.exit()
+
+ def CASE1( self, main ):
+ '''
+ ping test from 3 bgp peers to BGP speaker
+ '''
+ main.case( "This case is to check ping between BGP peers and speakers" )
+
+ def CASE2( self, main ):
+ '''
+ point-to-point intents test for each BGP peer and BGP speaker pair
+ '''
+ main.case( "This case is to check point-to-point intents" )
+
+
+ def CASE3( self, main ):
+ '''
+ routes and intents check to all BGP peers
+ '''
+ main.case( "This case is to check routes and intents to all BGP peers" )
+
+ main.step( "Get links in the network" )
+ listResult = main.ONOScli.links( jsonFormat = False )
+ main.log.info( listResult )
+ main.log.info( "Activate sdn-ip application" )
+ main.ONOScli.activateApp( "org.onosproject.sdnip" )
+ # wait sdn-ip to finish installing connectivity intents, and the BGP
+ # paths in data plane are ready.
+ time.sleep( int( main.params[ 'timers' ][ 'SdnIpSetup' ] ) )
+ # wait Quagga to finish delivery all routes to each other and to sdn-ip,
+ # plus finish installing all intents.
+ time.sleep( int( main.params[ 'timers' ][ 'RouteDelivery' ] ) )
+ time.sleep( int( main.params[ 'timers' ][ 'PathAvailable' ] ) )
+
+
+ allRoutesExpected = []
+ allRoutesExpected.append( "4.0.0.0/24" + "/" + "10.0.4.1" )
+ allRoutesExpected.append( "5.0.0.0/24" + "/" + "10.0.5.1" )
+ allRoutesExpected.append( "6.0.0.0/24" + "/" + "10.0.6.1" )
+
+ getRoutesResult = main.ONOScli.routes( jsonFormat = True )
+ allRoutesActual = \
+ main.QuaggaCliSpeaker1.extractActualRoutesMaster( getRoutesResult )
+ allRoutesStrExpected = str( sorted( allRoutesExpected ) )
+ allRoutesStrActual = str( allRoutesActual ).replace( 'u', "" )
+
+ main.step( "Check routes installed" )
+ main.log.info( "Routes expected:" )
+ main.log.info( allRoutesStrExpected )
+ main.log.info( "Routes get from ONOS CLI:" )
+ main.log.info( allRoutesStrActual )
+ utilities.assertEquals( \
+ expect = allRoutesStrExpected, actual = allRoutesStrActual,
+ onpass = "***Routes in SDN-IP are correct!***",
+ onfail = "***Routes in SDN-IP are wrong!***" )
+
+ main.step( "Check MultiPointToSinglePointIntent intents installed" )
+ getIntentsResult = main.ONOScli.intents( jsonFormat = True )
+ routeIntentsActualNum = \
+ main.QuaggaCliSpeaker1.extractActualRouteIntentNum( getIntentsResult )
+ routeIntentsExpectedNum = 3
+
+ main.log.info( "MultiPointToSinglePoint Intent Num expected is:" )
+ main.log.info( routeIntentsExpectedNum )
+ main.log.info( "MultiPointToSinglePoint Intent NUM Actual is:" )
+ main.log.info( routeIntentsActualNum )
+ utilities.assertEquals( \
+ expect = True,
+ actual = eq( routeIntentsExpectedNum, routeIntentsActualNum ),
+ onpass = "***MultiPointToSinglePoint Intent Num in SDN-IP is \
+ correct!***",
+ onfail = "***MultiPointToSinglePoint Intent Num in SDN-IP is \
+ wrong!***" )
+