Sample app activation functionality platform test
diff --git a/TestON/tests/FuncPlatform/Dependency/App.py b/TestON/tests/FuncPlatform/Dependency/App.py
new file mode 100644
index 0000000..f6fecd6
--- /dev/null
+++ b/TestON/tests/FuncPlatform/Dependency/App.py
@@ -0,0 +1,42 @@
+
+def __init__( self ):
+    self.ip = '127.0.0.1'
+
+def activate( apps, nodeToActivateFrom=0 ):
+    """
+    Activate specified applications from node specified
+
+    Ex) apps = ['metrics', 'fwd']
+        nodeToActivateFrom = range( 0, nodes )
+    """
+    if isinstance( apps, ( int, basestring ) ):
+        main.log.error( "Please pass in a list of strings for args" )
+        return main.FALSE
+
+    if not isinstance( nodeToActivateFrom, ( int ) ) or \
+            nodeToActivateFrom < 0:
+        main.log.error( "Incorrect node specified" )
+        return main.FALSE
+
+    for app in apps:
+        # Check if app str in appList is in the main scope
+        # definition main.appList
+        if app not in main.appList:
+            main.log.error( "Invalid app name given" )
+            return main.FALSE
+      
+        # NOTE: assumes node 1 is always activating application
+        appOutput = main.CLIs[nodeToActivateFrom].activateApp( 
+                main.appList[app] ) 
+
+    return main.TRUE
+
+def isAppInstallSuccess():
+    """
+    Check the app list across clusters to determine
+    that apps have been installed successfully
+
+    """
+
+    main.log.report( "isAppInstallSuccess" )
+
diff --git a/TestON/tests/FuncPlatform/Dependency/Startup.py b/TestON/tests/FuncPlatform/Dependency/Startup.py
index 665be7f..3096eee 100644
--- a/TestON/tests/FuncPlatform/Dependency/Startup.py
+++ b/TestON/tests/FuncPlatform/Dependency/Startup.py
@@ -8,6 +8,7 @@
     * Return main.TRUE on success or comprehensive error message 
       on failure (TBD)
 """
+import time
 
 def __init__( self ):
     self.ip = '127.0.0.1' 
@@ -35,17 +36,41 @@
         # TODO: Comprehensive error message
         return 'git pull and mci failed'
 
-def initOnosStartupSequence( cellName, appsStr, benchIp, onosIps ):
+def initOnosStartupSequence( cellName, appStr, benchIp, mnIp, onosIps ):
     """
     Startup sequence includes the following:
-        * 
+        * Create cell file
+        * Set cell variables on ONOS bench
+        * Verify cell
+        * Create ONOS package
+        * Force install ONOS package
+        * Start ONOS service
+        * Start ONOS cli
     """
-    main.log.info( 'Initiating ONOS startup sequence' )
 
-def isOnosNormal( onosIps ):
-    """
-    Quick and comprehensive check for 'normality'
+    # NOTE: leave out create cell file until bug addressed
+    #cf = main.ONOSbench.createCellFile( benchIp, cellName, mnIp, 
+    #        str(appStr), *onosIps )
+    numNodes = len(onosIps) 
 
-    Definition of function TBD
-    """
-    main.log.info( 'isOnosNormal' )
+    sc = main.ONOSbench.setCell( cellName )
+    vc = main.ONOSbench.verifyCell()
+    op = main.ONOSbench.onosPackage()
+    for addr in onosIps:
+        oi = main.ONOSbench.onosInstall( node = addr )
+    
+    time.sleep( 5 )
+   
+    iu = main.TRUE
+    for node in onosIps:
+        iu = iu and main.ONOSbench.isup( node )
+   
+    cli = main.TRUE
+    for node in range( 0, numNodes ):
+        cli = cli and main.CLIs[node].startOnosCli( onosIps[node] )
+
+    if sc and vc and op and oi and iu and cli == main.TRUE:
+        return main.TRUE
+    else:
+        return main.FALSE
+