[Goldeneye] BGPLS scripts
Change-Id: I1c263f5dc5b36c776c32f959278b88c848d46a9f
diff --git a/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.py b/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.py
new file mode 100755
index 0000000..362d378
--- /dev/null
+++ b/TestON/tests/FUNC/FUNCbgpls/FUNCbgpls.py
@@ -0,0 +1,578 @@
+"""
+**** Scripted by Antony Silvester - antony.silvester@huawei.com ******
+
+
+This Test check the bgp_ls functionality
+
+List of test cases:
+CASE1: Compile ONOS and push it to the test machines
+CASE2: Discovery the topology using BGPLS
+CASE3: Addition of new Node to existing topology
+CASE4: Deletion of Node
+Case5: Uninstalling the app
+
+
+"""
+
+
+class FUNCbgpls:
+
+ def __init__( self ):
+ self.default = ''
+
+ def CASE1( self, main ):
+ """
+ CASE1 is to compile ONOS and push it to the test machines
+
+ Startup sequence:
+ cell <name>
+ onos-verify-cell
+ NOTE: temporary - onos-remove-raft-logs
+ onos-uninstall
+ git pull
+ mvn clean install
+ onos-package
+ onos-install -f
+ onos-wait-for-start
+ start cli sessions
+ start BGPLS apps
+
+ """
+
+ import os
+ main.log.info( "ONOS Single node start " +
+ "Scapy Tool - initialization" )
+ main.case( "Setting up test environment" )
+ main.caseExplanation = "Setup the test environment including " +\
+ "installing ONOS, start ONOS."
+
+
+ PULLCODE = False
+ if main.params[ 'GIT' ][ 'pull' ] == 'True':
+ PULLCODE = True
+ gitBranch = main.params[ 'GIT' ][ 'branch' ]
+ cellName = main.params[ 'ENV' ][ 'cellName' ]
+ ipList = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
+ scapy_ip = os.getenv(main.params ['SCAPY'] ['HOSTNAMES'] )
+
+ main.log.info( "Removing raft logs" )
+ main.ONOSbench.onosRemoveRaftLogs()
+
+ main.CLIs = []
+ main.nodes = []
+ main.numCtrls= 1
+
+ for i in range( 1, main.numCtrls + 1 ):
+ try:
+ main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
+ main.nodes.append( getattr( main, 'ONOS' + str( i ) ) )
+ ipList.append( main.nodes[ -1 ].ip_address )
+ except AttributeError:
+ break
+
+ main.log.info( "Uninstalling ONOS" )
+ for node in main.nodes:
+ main.ONOSbench.onosUninstall( node.ip_address )
+
+ main.step( "Create cell file" )
+ cellAppString = main.params[ 'ENV' ][ 'cellApps' ]
+
+ main.ONOSbench.createCellFile( main.ONOSbench.ip_address, cellName,
+ scapy_ip,
+ cellAppString, ipList )
+
+ main.step( "Applying cell variable to environment" )
+ cellResult = main.ONOSbench.setCell( cellName )
+
+ verifyResult = main.ONOSbench.verifyCell()
+
+ # Make sure ONOS process is not running
+ main.log.info( "Killing any ONOS processes" )
+ killResults = main.TRUE
+ for node in main.nodes:
+ killed = main.ONOSbench.onosKill( node.ip_address )
+ killResults = killResults and killed
+
+ cleanInstallResult = main.TRUE
+ gitPullResult = main.FALSE
+ main.step( "Git checkout and pull" + gitBranch )
+ if PULLCODE:
+ main.ONOSbench.gitCheckout( gitBranch )
+ gitPullResult = main.ONOSbench.gitPull()
+ # values of 1 or 3 are good
+ utilities.assert_lesser( expect=0, actual=gitPullResult,
+ onpass="Git pull successful",
+ onfail="Git pull failed" )
+
+ #main.ONOSbench.getVersion( report=True )
+
+ main.step( "Using mvn clean install" )
+ cleanInstallResult = main.TRUE
+ if PULLCODE and gitPullResult == main.TRUE:
+ cleanInstallResult = main.ONOSbench.cleanInstall()
+ else:
+ main.log.warn( "Did not pull new code so skipping mvn" +
+ "clean install" )
+ utilities.assert_equals( expect=main.TRUE,
+ actual=cleanInstallResult,
+ onpass="MCI successful",
+ onfail="MCI failed" )
+
+ main.step( "Creating ONOS package" )
+ packageResult = main.ONOSbench.onosPackage()
+ utilities.assert_equals( expect=main.TRUE,
+ actual=packageResult,
+ onpass="Successfully created ONOS package",
+ onfail="Failed to create ONOS package" )
+
+ main.step( "Installing ONOS package" )
+ onosInstallResult = main.ONOSbench.onosInstall(
+ options="-f", node=main.nodes[0].ip_address )
+ utilities.assert_equals( expect=main.TRUE, actual=onosInstallResult,
+ onpass="ONOS install successful",
+ onfail="ONOS install failed" )
+
+ main.step( "Checking if ONOS is up yet" )
+ print main.nodes[0].ip_address
+ for i in range( 2 ):
+ onos1Isup = main.ONOSbench.isup( main.nodes[0].ip_address )
+ if onos1Isup:
+ break
+ utilities.assert_equals( expect=main.TRUE, actual=onos1Isup,
+ onpass="ONOS startup successful",
+ onfail="ONOS startup failed" )
+ main.log.step( "Starting ONOS CLI sessions" )
+ print main.nodes[0].ip_address
+ cliResults = main.ONOScli1.startOnosCli( main.nodes[0].ip_address )
+ utilities.assert_equals( expect=main.TRUE, actual=cliResults,
+ onpass="ONOS cli startup successful",
+ onfail="ONOS cli startup failed" )
+
+ main.step( "App Ids check" )
+ appCheck = main.ONOScli1.appToIDCheck()
+
+ if appCheck !=main.TRUE:
+ main.log.warn( main.CLIs[0].apps() )
+ main.log.warn( main.CLIs[0].appIDs() )
+ utilities.assert_equals( expect=main.TRUE, actual=appCheck,
+ onpass="App Ids seem to be correct",
+ onfail="Something is wrong with app Ids" )
+ if cliResults == main.FALSE:
+ main.log.error( "Failed to start ONOS,stopping test" )
+ main.cleanup()
+ main.exit()
+
+
+
+
+
+ def CASE2( self, main ):
+ """
+ Discovery the topology using BGPLS
+ """
+ import os , sys
+ import re
+ import time
+
+ main.case( "Testcase 2 : Discovery the Network Topology using BGPLS" )
+
+ try:
+ from tests.FUNC.FUNCbgpls.dependencies.Nbdata import BgpLs
+ except ImportError:
+ main.log.exception( "Something wrong with import file or code error." )
+ main.log.info( "Import Error, please check!" )
+ main.cleanup()
+ main.exit()
+
+ bgplsConfig = BgpLs()
+ Ne_id = bgplsConfig.Constants()
+ app = bgplsConfig.apps()
+ main.CLIs = []
+ main.nodes = []
+ main.numCtrls= 1
+
+
+ ipList = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
+ scapy_ip = os.getenv(main.params ['SCAPY'] ['HOSTNAMES'] )
+ httpport = main.params['HTTP']['port']
+ path = main.params['HTTP']['path']
+ bgplsConfig.ipValue(ipList,scapy_ip)
+
+ for i in range( 1, main.numCtrls + 1 ):
+ try:
+ main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
+ main.nodes.append( getattr( main, 'ONOS' + str( i ) ) )
+ ipList.append( main.nodes[ -1 ].ip_address )
+ except AttributeError:
+ break
+
+ main.step( "Apply cell to environment" )
+ bgplsConfig.Comments()
+
+ bgplsConfig.Comments()
+ main.log.info( "Sending BGPLS information " )
+ bgplsConfig.Comments()
+
+
+ main.Scapy1.handle.sendline( "sudo python OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/\
+ dependencies/Scapyfiles/Topo_discovery.py" )
+ bgplsConfig.Comments()
+ main.log.info( "Enable BGPlS plugin in ONOS" )
+ bgplsConfig.Comments()
+
+
+ cliResults = main.ONOScli1.startOnosCli( main.nodes[0].ip_address)
+
+ main.step( "Getting connected to ONOS" )
+ utilities.assert_equals( expect=main.TRUE, actual=cliResults,
+ onpass="ONOS cli startup successful",
+ onfail="ONOS cli startup failed" )
+ installResults = main.ONOScli1.activateApp( app[0])
+
+ main.step( "Install onos-app-bgp" )
+ utilities.assert_equals( expect=main.TRUE, actual=installResults,
+ onpass="Install onos-app-bgp successful",
+ onfail="Install onos-app-bgp failed" )
+
+ bgpls_post = bgplsConfig.DictoJson()
+
+ bgplsConfig.Comments()
+ main.log.info( "BGPLS RestConf input" )
+ bgplsConfig.Comments()
+
+ print (bgpls_post)
+ main.ONOSrest.user_name = "karaf"
+ main.ONOSrest.pwd = "karaf"
+ Poststatus, result = main.ONOSrest.send( ipList, httpport, '/network/configuration/', method="POST",data=bgpls_post)
+ main.step( "Configure BGP through RESTCONF" )
+
+ utilities.assert_equals(
+ expect='200',
+ actual=Poststatus,
+ onpass="Post Port Success",
+ onfail="Post Port Failed " + str( Poststatus ) + "," + str( result ) )
+
+
+ bgplsConfig.Comments()
+ main.log.info( "Check Network devices are Updated in ONOS " )
+ bgplsConfig.Comments()
+ time.sleep(15)
+
+ response = main.ONOScli1.devices()
+ main.step( "Check the nodes are discovered" )
+ if response.find( Ne_id[1][0]) and response.find(Ne_id[1][1]) and response.find(Ne_id[1][2]) != -1:
+ stepResult = main.TRUE
+ else:
+ stepResult = main.FALSE
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Node " + str( Ne_id[1][0]) + ( Ne_id[1][1]) + ( Ne_id[1][2]) + " sucess",
+ onfail="Node " + str( Ne_id[1][0]) + ( Ne_id[1][1]) + ( Ne_id[1][2]) + " failed" )
+
+
+ bgplsConfig.Comments()
+ main.log.info( "Kill Scapy process" )
+ bgplsConfig.Comments()
+
+ main.Scapy1.handle.sendline( "\x03" )
+ time.sleep(90) #This Sleep time gives time for the socket to close.
+
+
+
+
+ def CASE3( self, main ):
+ """
+ Addition of new Node to existing topology
+ """
+ import os , sys
+ import re
+ import time
+
+ main.case( "Testcase 3: Addition of New Node to existing topology" )
+ try:
+ from tests.FUNC.FUNCbgpls.dependencies.Nbdata import BgpLs
+ except ImportError:
+ main.log.exception( "Something wrong with import file or code error." )
+ main.log.info( "Import Error, please check!" )
+ main.cleanup()
+ main.exit()
+
+ bgplsConfig = BgpLs()
+ Ne_id = bgplsConfig.Constants()
+ app = bgplsConfig.apps()
+ main.CLIs = []
+ main.nodes = []
+ main.numCtrls= 1
+
+
+ ipList = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
+ scapy_ip = os.getenv( main.params ['SCAPY'] ['HOSTNAMES'] )
+ cellName = main.params[ 'ENV' ][ 'cellName' ]
+ cellAppString= main.params[ 'ENV' ][ 'cellApps' ]
+ httpport = main.params['HTTP']['port']
+ path = main.params['HTTP']['path']
+
+ bgplsConfig.ipValue(ipList,scapy_ip)
+
+ for i in range( 1, main.numCtrls + 1 ):
+ try:
+ main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
+ main.nodes.append( getattr( main, 'ONOS' + str( i ) ) )
+ ipList.append( main.nodes[ -1 ].ip_address )
+ except AttributeError:
+ break
+
+ bgplsConfig.Comments()
+ main.log.info( "Sending BGPLS Packet " )
+ bgplsConfig.Comments()
+
+ main.Scapy1.handle.sendline( "sudo python OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/\
+ dependencies/Scapyfiles/Update_Node.py" )
+ bgplsConfig.Comments()
+ main.log.info( "Enable BGPlS plugin in ONOS" )
+ bgplsConfig.Comments()
+
+ main.step( "UnInstall onos-app-bgp" )
+ installResults = main.ONOScli1.deactivateApp( app[0] )
+ utilities.assert_equals( expect=main.TRUE, actual=installResults,
+ onpass="Uninstall onos-app-bgp successful",
+ onfail="Uninstall onos-app-bgp failed" )
+
+ installResults = main.ONOScli1.activateApp( app[0])
+ main.step( "Install onos-app-bgp" )
+ utilities.assert_equals( expect=main.TRUE, actual=installResults,
+ onpass="Install onos-app-bgp successful",
+ onfail="Install onos-app-bgp failed" )
+
+
+ bgpls_post = bgplsConfig.DictoJson()
+
+ bgplsConfig.Comments()
+ main.log.info( "BGPLS RestConf input" )
+ bgplsConfig.Comments()
+
+ bgplsConfig.Comments()
+ main.log.info( "Check Network devices are Updated in ONOS " )
+ bgplsConfig.Comments()
+ time.sleep(120)
+
+ response = main.ONOScli1.devices()
+ main.step( "Check Newly added Node is getting updated" )
+
+ if response.find( Ne_id[1][3]) != -1:
+ stepResult = main.TRUE
+ else:
+ stepResult = main.FALSE
+ utilities.assert_equals( expect=main.TRUE,
+ actual=stepResult,
+ onpass="Node " + str( Ne_id[1][3] ) + " update sucess",
+ onfail="Node " + str( Ne_id[1][3]) + " update failed" )
+ bgplsConfig.Comments()
+ main.log.info( "Kill Scapy process" )
+ bgplsConfig.Comments()
+ main.Scapy1.handle.sendline( "\x03" )
+
+
+
+ def CASE4( self, main ):
+ """
+ Deletion of Node
+ """
+ import os , sys
+ import re
+ import time
+ main.case( "TestCase 4: Deletion of Node from existing Topology" )
+
+ try:
+ from tests.FUNC.FUNCbgpls.dependencies.Nbdata import BgpLs
+ except ImportError:
+ main.log.exception( "Something wrong with import file or code error." )
+ main.log.info( "Import Error, please check!" )
+ main.cleanup()
+ main.exit()
+
+ bgplsConfig = BgpLs()
+ Ne_id = bgplsConfig.Constants()
+ app = bgplsConfig.apps()
+ main.CLIs = []
+ main.nodes = []
+ main.numCtrls= 1
+
+ bgplsConfig.Comments()
+ main.log.info( "Blocked due to this defect : ONOS-3920 " )
+ bgplsConfig.Comments()
+
+ '''
+ ipList = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
+ scapy_ip = os.getenv(main.params ['SCAPY'] ['HOSTNAMES'] )
+ cellName = main.params[ 'ENV' ][ 'cellName' ]
+ cellAppString= main.params[ 'ENV' ][ 'cellApps' ]
+ httpport = main.params['HTTP']['port']
+ path = main.params['HTTP']['path']
+ bgplsConfig = BgpLs()
+ bgplsConfig.ipValue(ipList,scapy_ip)
+
+ main.ONOSbench.createCellFile( main.ONOSbench.ip_address, cellName,
+ scapy_ip,
+ cellAppString, ipList , onosUser="karaf" )
+
+ for i in range( 1, main.numCtrls + 1 ):
+ try:
+ main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
+ main.nodes.append( getattr( main, 'ONOS' + str( i ) ) )
+ ipList.append( main.nodes[ -1 ].ip_address )
+ except AttributeError:
+ break
+
+ main.step( "Apply cell to environment" )
+ bgplsConfig.Comments()
+ cellResult = main.ONOSbench.setCell( cellName )
+
+ bgplsConfig.Comments()
+ main.log.info( "Sending BGPLS information " )
+ bgplsConfig.Comments()
+
+
+ main.Scapy1.handle.sendline( "sudo python OnosSystemTest/TestON/tests/FUNC/FUNCbgpls/dependencies/Scapyfiles/Deletion_Node.py" )
+ #main.Scapy1.handle.expect( "sdn:" )
+ #main.Scapy1.handle.sendline( "rocks" )
+
+
+ bgplsConfig.Comments()
+ main.log.info( "Enable BGPlS plugin in ONOS" )
+ bgplsConfig.Comments()
+
+
+ cliResults = main.ONOScli1.startOnosCli( main.nodes[0].ip_address)
+
+ main.step( "Getting connected to ONOS" )
+ utilities.assert_equals( expect=main.TRUE, actual=cliResults,
+ onpass="ONOS cli startup successful",
+ onfail="ONOS cli startup failed" )
+ installResults = main.ONOScli1.activateApp( app[0])
+
+ main.step( "Install onos-app-bgp" )
+ utilities.assert_equals( expect=main.TRUE, actual=installResults,
+ onpass="Install onos-app-bgp successful",
+ onfail="Install onos-app-bgp failed" )
+
+ main.step( "Install onos-app-bgpflow" )
+ installResults = main.ONOScli1.activateApp( app[1] )
+ utilities.assert_equals( expect=main.TRUE, actual=installResults,
+ onpass="Install onos-app-bgpflow successful",
+ onfail="Install onos-app-bgpflow failed" )
+
+
+ bgpls_post = bgplsConfig.DictoJson()
+
+ bgplsConfig.Comments()
+ main.log.info( "BGPLS RestConf input" )
+ bgplsConfig.Comments()
+
+ print (bgpls_post)
+ main.ONOSrest.user_name = "karaf"
+ main.ONOSrest.pwd = "karaf"
+ Poststatus, result = main.ONOSrest.send( ipList,httpport,'', path + 'v1/network/configuration/',
+ 'POST', None, bgpls_post, debug=True )
+
+ main.step( "Configure BGP through RESTCONF" )
+ utilities.assert_equals(
+ expect='200',
+ actual=Poststatus,
+ onpass="Post Port Success",
+ onfail="Post Port Failed " + str( Poststatus ) + "," + str( result ) )
+
+
+ bgplsConfig.Comments()
+ main.log.info( "Check Network devices is deleted from ONOS " )
+ bgplsConfig.Comments()
+ time.sleep(15)
+
+ response = main.ONOScli1.devices()
+
+ main.step( "Check whehther Node is deleted successfully" )
+
+ if response.find(Ne_id[3]) != -1:
+ stepResult = main.TRUE
+ else:
+ stepResult = main.FALSE
+ utilities.assert_equals( expect=main.FALSE,
+ actual=stepResult,
+ onpass="Node " + str( Ne_id[3] ) + " Deletion sucess",
+ onfail="Node " + str( Ne_id[3] ) + " Deletion failed" )
+
+ bgplsConfig.Comments()
+ main.log.info( "Kill Scapy process" )
+ bgplsConfig.Comments()
+
+ main.Scapy1.handle.sendline( "\x03" )
+ '''
+
+
+ def CASE5( self, main ):
+ """
+ Uninstalling the app
+ """
+ import os,sys
+ import re
+ import time
+
+ main.case( "TestCase 5: UnInstalling of app" )
+ try:
+ from tests.FUNC.FUNCbgpls.dependencies.Nbdata import BgpLs
+ except ImportError:
+ main.log.exception( "Something wrong with import file or code error." )
+ main.log.info( "Import Error, please check!" )
+ main.cleanup()
+ main.exit()
+
+ bgplsConfig = BgpLs()
+ app = bgplsConfig.apps()
+ main.CLIs = []
+ main.nodes = []
+ main.numCtrls= 1
+
+
+ ipList = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
+ scapy_ip = os.getenv(main.params ['SCAPY'] ['HOSTNAMES'] )
+ cellName = main.params[ 'ENV' ][ 'cellName' ]
+ cellAppString= main.params[ 'ENV' ][ 'cellApps' ]
+
+ bgplsConfig = BgpLs()
+ bgplsConfig.ipValue(ipList,scapy_ip)
+ main.ONOSbench.createCellFile( main.ONOSbench.ip_address, cellName,
+ scapy_ip,
+ cellAppString, ipList , onosUser="karaf" )
+
+ for i in range( 1, main.numCtrls + 1 ):
+ try:
+ main.CLIs.append( getattr( main, 'ONOScli' + str( i ) ) )
+ main.nodes.append( getattr( main, 'ONOS' + str( i ) ) )
+ ipList.append( main.nodes[ -1 ].ip_address )
+ except AttributeError:
+ break
+
+ main.step( "Apply cell to environment" )
+ bgplsConfig.Comments()
+ cellResult = main.ONOSbench.setCell( cellName )
+
+ bgplsConfig.Comments()
+ main.log.info( "Logging into ONOS CLI " )
+ bgplsConfig.Comments()
+
+ cliResults = main.ONOScli1.startOnosCli( main.nodes[0].ip_address )
+ utilities.assert_equals( expect=main.TRUE, actual=cliResults,
+ onpass="ONOS cli startup successful",
+ onfail="ONOS cli startup failed" )
+
+ bgplsConfig.Comments()
+ main.log.info( "Uninstall onos-app-bgp" )
+ bgplsConfig.Comments()
+ main.step( "UnInstall onos-app-bgp" )
+ installResults = main.ONOScli1.deactivateApp( app[0] )
+ utilities.assert_equals( expect=main.TRUE, actual=installResults,
+ onpass="Uninstall onos-app-bgp successful",
+ onfail="Uninstall onos-app-bgp failed" )
+
+
+