Create a new framework of running onos test 81/2681/1
authorlanqinglong <lanqinglong@huawei.com>
Wed, 21 Oct 2015 03:58:24 +0000 (11:58 +0800)
committerlanqinglong <lanqinglong@huawei.com>
Wed, 21 Oct 2015 04:00:20 +0000 (12:00 +0800)
JIRA:ONOSFW-138

Onosfw need some test, so it need a new framework

Change-Id: Iaccdc1184767bdb1b794d36d92e09bf03a38d82f
Signed-off-by: lanqinglong <lanqinglong@huawei.com>
framework/scripts/README
framework/scripts/function_test/Teston/Readme.txt [new file with mode: 0644]
framework/scripts/function_test/Teston/__init__.py [new file with mode: 0644]
framework/scripts/function_test/Teston/adapters/__init__.py [new file with mode: 0644]
framework/scripts/function_test/Teston/adapters/foundation.py [new file with mode: 0644]
framework/scripts/function_test/Teston/config.yaml [new file with mode: 0644]
framework/scripts/function_test/Teston/dependencies/onos [new file with mode: 0644]
framework/scripts/function_test/Teston/log/temp.log [new file with mode: 0644]
framework/scripts/function_test/Teston/onosfunctest.py [new file with mode: 0644]

index e69de29..df76de7 100644 (file)
@@ -0,0 +1,12 @@
+1.Functon_test is a framework of running onosfw function testcases;
+2.Folder tree:
+ ©¤function_test
+        ©¸©¤Teston
+            ©À©¤adapters
+            ©À©¤dependencies
+            ©¸©¤log
+(1)adapters include some drivers of running onosfw test.
+(2)dependencies include some dependency files.
+(3)log inlude the running log.
+3.How to run the test?
+Easy to run, run "sudo python onosfunctest.py" in path "onosfw/framework/scripts/function_test/Teston"
\ No newline at end of file
diff --git a/framework/scripts/function_test/Teston/Readme.txt b/framework/scripts/function_test/Teston/Readme.txt
new file mode 100644 (file)
index 0000000..7393f59
--- /dev/null
@@ -0,0 +1,5 @@
+1.This is a basic test run about onos,we will make them better and better
+2.This test include two suites:
+(1)Test northbound(network/subnet/ports create/update/delete)
+(2)Ovsdb test,default configuration,openflow connection,vm go onlines.
+3.Later we will make a framework to do this test
\ No newline at end of file
diff --git a/framework/scripts/function_test/Teston/__init__.py b/framework/scripts/function_test/Teston/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/framework/scripts/function_test/Teston/adapters/__init__.py b/framework/scripts/function_test/Teston/adapters/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/framework/scripts/function_test/Teston/adapters/foundation.py b/framework/scripts/function_test/Teston/adapters/foundation.py
new file mode 100644 (file)
index 0000000..c909d36
--- /dev/null
@@ -0,0 +1,64 @@
+"""
+Description:
+    This file include basis functions
+    lanqinglong@huawei.com
+"""
+
+import logging
+import os
+import time
+import yaml
+
+class foundation:
+
+    def __init__(self):
+
+        currentpath = os.getcwd()
+        self.logdir = os.path.join( currentpath, 'log' )
+        self.workhome = currentpath[0:currentpath.rfind('testcases')-1]
+        self.Result_DB = ''
+
+    def log (self, loginfo):
+        """
+        Record log in log directory for deploying test environment
+        parameters:
+        loginfo(input): record info
+        """
+        filename = time.strftime( '%Y-%m-%d-%H-%M-%S' ) + '.log'
+        filepath = os.path.join( self.logdir, filename )
+        logging.basicConfig( level=logging.INFO,
+                format = '%(asctime)s %(filename)s:%(message)s',
+                datefmt = '%d %b %Y %H:%M:%S',
+                filename = filepath,
+                filemode = 'w')
+        filelog = logging.FileHandler( filepath )
+        logging.getLogger( 'Functest' ).addHandler( filelog )
+        print loginfo
+        logging.info(loginfo)
+
+    def getdefaultpara( self ):
+        """
+        Get Default Parameters value
+        """
+        with open(self.workhome + "testcases/config_functest.yaml") as f:
+            functest_yaml = yaml.safe_load(f)
+        f.close()
+
+        self.Result_DB = str(functest_yaml.get("results").get("test_db_url"))
+        self.masterusername = str(functest_yaml.get("ONOS").get("general").\
+                                 get('onosbench_username'))
+        self.masterpassword = str(functest_yaml.get("ONOS").get("general").\
+                                 get("onosbench_password"))
+        self.agentusername = str(functest_yaml.get("ONOS").get("general").\
+                                 get("onoscli_username"))
+        self.agentpassword = str(functest_yaml.get("ONOS").get("general").\
+                                 get("onoscli_password"))
+        self.runtimeout = functest_yaml.get("ONOS").get("general").get("runtimeout")
+        self.OCT = str(functest_yaml.get("ONOS").get("environment").get("OCT"))
+        self.OC1 = str(functest_yaml.get("ONOS").get("environment").get("OC1"))
+        self.OC2 = str(functest_yaml.get("ONOS").get("environment").get("OC2"))
+        self.OC3 = str(functest_yaml.get("ONOS").get("environment").get("OC3"))
+        self.OCN = str(functest_yaml.get("ONOS").get("environment").get("OCN"))
+        self.OCN2 = str(functest_yaml.get("ONOS").get("environment").get("OCN2"))
+        self.localhost = self.OCT
+        return True
\ No newline at end of file
diff --git a/framework/scripts/function_test/Teston/config.yaml b/framework/scripts/function_test/Teston/config.yaml
new file mode 100644 (file)
index 0000000..78afb01
--- /dev/null
@@ -0,0 +1,16 @@
+ONOS:
+    general:
+        onosbench_username: 'root'
+        onosbench_password: 'root'
+        onoscli_username: 'root'
+        onoscli_password: 'root'
+        runtimeout: 300
+    environment:
+        OCT: '189.42.8.99'
+        OC1: '189.42.8.101'
+        OC2: '189.42.8.102'
+        OC3: '189.42.8.103'
+        OCN: '189.42.8.104'
+        OCN2: '189.42.8.105'
+results:
+    test_db_url: http://213.77.62.197
\ No newline at end of file
diff --git a/framework/scripts/function_test/Teston/dependencies/onos b/framework/scripts/function_test/Teston/dependencies/onos
new file mode 100644 (file)
index 0000000..d4d59e0
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# ONOS remote command-line client.
+# -----------------------------------------------------------------------------
+
+[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
+. /root/.bashrc
+. $ONOS_ROOT/tools/build/envDefaults
+. $ONOS_ROOT/tools/test/bin/find-node.sh
+
+[ "$1" = "-w" ] && shift && onos-wait-for-start $1
+
+[ -n "$1" ] && OCI=$(find_node $1) && shift
+
+if which client 1>/dev/null 2>&1 && [ -z "$ONOS_USE_SSH" ]; then
+    # Use Karaf client only if we can and are allowed to
+    unset KARAF_HOME
+    client -h $OCI -u karaf "$@" 2>/dev/null
+else
+    # Otherwise use raw ssh; strict checking is off for dev environments only
+    #ssh -p 8101 -o StrictHostKeyChecking=no $OCI "$@"
+    sshpass -p karaf ssh -l karaf -p 8101 $OCI "$@"
+fi
diff --git a/framework/scripts/function_test/Teston/log/temp.log b/framework/scripts/function_test/Teston/log/temp.log
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/framework/scripts/function_test/Teston/onosfunctest.py b/framework/scripts/function_test/Teston/onosfunctest.py
new file mode 100644 (file)
index 0000000..e852443
--- /dev/null
@@ -0,0 +1,21 @@
+"""
+Description: This test is to run onos Teston VTN scripts
+
+List of test cases:
+CASE1 - Northbound NBI test network/subnet/ports
+CASE2 - Ovsdb test&Default configuration&Vm go online
+
+lanqinglong@huawei.com
+"""
+from adapters.client import client
+
+if __name__=="__main__":
+
+    main = client()
+    main.getdefaultpara()
+
+    #scripts to run
+    runhandle = main.onosstart()
+    main.RunScript(runhandle, "FUNCvirNetNB")
+    main.RunScript(runhandle, "FUNCovsdbtest")
+    main.onosclean( runhandle )