Functionality platform test WIP - initial setup
diff --git a/TestON/tests/FuncPlatform/Dependency/Startup.py b/TestON/tests/FuncPlatform/Dependency/Startup.py
new file mode 100644
index 0000000..665be7f
--- /dev/null
+++ b/TestON/tests/FuncPlatform/Dependency/Startup.py
@@ -0,0 +1,51 @@
+
+"""
+Startup related methods for ONOS
+
+Guidelines:
+ * Group sequential functionalities together
+ * Methods should not prohibit cross platform execution
+ * Return main.TRUE on success or comprehensive error message
+ on failure (TBD)
+"""
+
+def __init__( self ):
+ self.ip = '127.0.0.1'
+
+def gitPullAndMci( branchName, commitLog=False ):
+ """
+ Pull from branch repository specified and compile changes
+ If commitLog is True, report commit information
+
+ Any errors / warnings will be handled by respective
+ driver function calls
+ """
+ co = main.ONOSbench.gitCheckout( branchName )
+ gp = main.ONOSbench.gitPull()
+ ci = main.ONOSbench.cleanInstall()
+
+ if co and gp and ci == main.TRUE:
+ if commitLog:
+ main.log.report( 'Commit information - ' )
+ main.ONOSbench.getVersion(report=True)
+
+ return main.TRUE
+
+ else:
+ # TODO: Comprehensive error message
+ return 'git pull and mci failed'
+
+def initOnosStartupSequence( cellName, appsStr, benchIp, onosIps ):
+ """
+ Startup sequence includes the following:
+ *
+ """
+ main.log.info( 'Initiating ONOS startup sequence' )
+
+def isOnosNormal( onosIps ):
+ """
+ Quick and comprehensive check for 'normality'
+
+ Definition of function TBD
+ """
+ main.log.info( 'isOnosNormal' )
diff --git a/TestON/tests/FuncPlatform/FuncPlatform.params b/TestON/tests/FuncPlatform/FuncPlatform.params
new file mode 100644
index 0000000..e0c40aa
--- /dev/null
+++ b/TestON/tests/FuncPlatform/FuncPlatform.params
@@ -0,0 +1,23 @@
+<PARAMS>
+ <testcases>1,2</testcases>
+ <startupSrc>
+ /home/admin/ONLabTest/TestON/tests/FuncPlatform/Dependency/Startup.py
+ </startupSrc>
+ <startupClassName>
+ Startup
+ </startupClassName>
+
+ <CTRL>
+ <num>3</num>
+ <port>6633</port>
+ <ip1>10.128.174.1</ip1>
+ <ip2>10.128.174.2</ip2>
+ <ip3>10.128.174.3</ip3>
+ </CTRL>
+
+ <GIT>
+ <branchName>master</branchName>
+ <pull>off</pull>
+ </GIT>
+
+</PARAMS>
diff --git a/TestON/tests/FuncPlatform/FuncPlatform.py b/TestON/tests/FuncPlatform/FuncPlatform.py
new file mode 100644
index 0000000..f846131
--- /dev/null
+++ b/TestON/tests/FuncPlatform/FuncPlatform.py
@@ -0,0 +1,68 @@
+"""
+FuncPlatform
+
+A functional test designed to test the environment and
+gather startup / shutdown related issues.
+
+Future works may also include security mode startup /
+shutdown check and cfg get and set.
+
+contributers to contact for help:
+andrew@onlab.us
+"""
+
+class FuncPlatform:
+ def __init__( self ):
+ self.default = ''
+
+ def CASE1( self, main ):
+ import time
+ import imp
+ # importing dependency class(es)
+ # Refer to source files in Dependency folder to
+ # make changes to its respective methods
+ try:
+ startup = imp.load_source( startupClassName, startupSrc )
+ except ImportError:
+ main.log.error( "Error importing class " +
+ str(startupClassName) + " from " + str(startupSrc) )
+ main.cleanup()
+ main.exit()
+
+ # List of ONOS ip's specififed in params
+ global ONOSips
+ # CLIs handle for each ONOS CLI client specified in .topo file
+ global CLIs
+
+ ONOSips = []
+ CLIs = []
+
+ for node in range( 0, int(main.params['CTRL']['num']) ):
+ ONOSips.append( main.params['CTRL']['ip'+str(node+1)] )
+ CLIs.append( getattr( main, 'ONOS' + str(i) + 'cli' ) )
+
+ startupSrc = main.params['startupSrc']
+ startupClassName = main.params['startupClassName']
+ branchName = main.params['GIT']['branchName']
+ gitPull = main.params['GIT']['pull']
+
+ main.case( 'Setup environment and install ONOS' )
+ if gitPull == 'on':
+ main.step( 'Git pull and clean install' )
+ gitPullResult = startup.gitPullAndMci( branchName )
+ utilities.assert_equals( expect=main.TRUE,
+ actual=gitPullResult,
+ onpass='Git pull and install successful',
+ onfail='Git pull and install failed: ' +
+ str(gitPullResult) )
+
+ main.step( 'Initiate ONOS startup sequence' )
+ startupResult = startup.initOnosStartupSequence()
+ utilities.assert_equals( expect=main.TRUE,
+ actual=startupResult,
+ onpass='ONOS startup sequence successful',
+ onfail='ONOS startup sequence failed: ' +
+ str(startupResult) )
+
+ def CASE2( self, main ):
+ main.log.info( "Case 2" )
diff --git a/TestON/tests/FuncPlatform/FuncPlatform.topo b/TestON/tests/FuncPlatform/FuncPlatform.topo
new file mode 100644
index 0000000..fcc087d
--- /dev/null
+++ b/TestON/tests/FuncPlatform/FuncPlatform.topo
@@ -0,0 +1,82 @@
+<TOPOLOGY>
+ <COMPONENT>
+
+ <ONOSbench>
+ <host>10.128.174.10</host>
+ <user>admin</user>
+ <password></password>
+ <type>OnosDriver</type>
+ <connect_order>1</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </ONOSbench>
+
+ <ONOS1>
+ <host>10.128.174.1</host>
+ <user>admin</user>
+ <password></password>
+ <type>OnosCliDriver</type>
+ <connect_order>3</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </ONOS1>
+
+ <ONOS2>
+ <host>10.128.174.2</host>
+ <user>admin</user>
+ <password></password>
+ <type>OnosCliDriver</type>
+ <connect_order>4</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </ONOS2>
+
+ <ONOS3>
+ <host>10.128.174.3</host>
+ <user>admin</user>
+ <password></password>
+ <type>OnosCliDriver</type>
+ <connect_order>5</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </ONOS3>
+
+ <ONOS1cli>
+ <host>10.128.174.10</host>
+ <user>admin</user>
+ <password></password>
+ <type>OnosCliDriver</type>
+ <connect_order>6</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </ONOS1cli>
+
+ <ONOS2cli>
+ <host>10.128.174.10</host>
+ <user>admin</user>
+ <password></password>
+ <type>OnosCliDriver</type>
+ <connect_order>7</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </ONOS2cli>
+
+ <ONOS3cli>
+ <host>10.128.174.10</host>
+ <user>admin</user>
+ <password></password>
+ <type>OnosCliDriver</type>
+ <connect_order>8</connect_order>
+ <COMPONENTS> </COMPONENTS>
+ </ONOS3cli>
+
+ <MininetOvs>
+ <host>10.128.10.90</host>
+ <user>admin</user>
+ <password></password>
+ <type>MininetCliDriver</type>
+ <connect_order>2</connect_order>
+ <COMPONENTS>
+ <arg1> --custom topo-perf-2sw.py </arg1>
+ <arg2> --arp --mac --topo mytopo </arg2>
+ <arg3> </arg3>
+ <controller> remote </controller>
+ </COMPONENTS>
+ </MininetOvs>
+
+ </COMPONENT>
+</TOPOLOGY>