diff options
Diffstat (limited to 'testcases/Controllers/ONOS/Teston/CI')
6 files changed, 160 insertions, 12 deletions
diff --git a/testcases/Controllers/ONOS/Teston/CI/adapters/client.py b/testcases/Controllers/ONOS/Teston/CI/adapters/client.py index 535b71f85..a61670ef8 100644 --- a/testcases/Controllers/ONOS/Teston/CI/adapters/client.py +++ b/testcases/Controllers/ONOS/Teston/CI/adapters/client.py @@ -2,6 +2,13 @@ Description: This file is used to run testcase lanqinglong@huawei.com + +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# """ from environment import environment import os diff --git a/testcases/Controllers/ONOS/Teston/CI/adapters/connection.py b/testcases/Controllers/ONOS/Teston/CI/adapters/connection.py index c0eb464af..e2788b412 100644 --- a/testcases/Controllers/ONOS/Teston/CI/adapters/connection.py +++ b/testcases/Controllers/ONOS/Teston/CI/adapters/connection.py @@ -5,6 +5,13 @@ Description: it can run without password lanqinglong@huawei.com + +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# """ import os import time diff --git a/testcases/Controllers/ONOS/Teston/CI/adapters/environment.py b/testcases/Controllers/ONOS/Teston/CI/adapters/environment.py index f0bafd760..8b7ee13fc 100644 --- a/testcases/Controllers/ONOS/Teston/CI/adapters/environment.py +++ b/testcases/Controllers/ONOS/Teston/CI/adapters/environment.py @@ -6,6 +6,13 @@ Description: Set user name/password Onos-push-keys and so on lanqinglong@huawei.com + +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# """ import os diff --git a/testcases/Controllers/ONOS/Teston/CI/adapters/foundation.py b/testcases/Controllers/ONOS/Teston/CI/adapters/foundation.py index 83cbcb242..486ecfa71 100644 --- a/testcases/Controllers/ONOS/Teston/CI/adapters/foundation.py +++ b/testcases/Controllers/ONOS/Teston/CI/adapters/foundation.py @@ -2,6 +2,13 @@ Description: This file include basis functions lanqinglong@huawei.com + +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# """ import logging diff --git a/testcases/Controllers/ONOS/Teston/CI/dependencies/onos b/testcases/Controllers/ONOS/Teston/CI/dependencies/onos index d4d59e0f7..bb02fa899 100644 --- a/testcases/Controllers/ONOS/Teston/CI/dependencies/onos +++ b/testcases/Controllers/ONOS/Teston/CI/dependencies/onos @@ -2,6 +2,12 @@ # ----------------------------------------------------------------------------- # ONOS remote command-line client. # ----------------------------------------------------------------------------- +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# [ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 . /root/.bashrc diff --git a/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py b/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py index 675b3fc68..ccd49b75b 100644 --- a/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py +++ b/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py @@ -6,19 +6,133 @@ CASE1 - Northbound NBI test network/subnet/ports CASE2 - Ovsdb test&Default configuration&Vm go online lanqinglong@huawei.com +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +# """ -from adapters.client import client -if __name__=="__main__": +import os +import time +import sys +import logging +import yaml +import datetime +import re - main = client() - main.getdefaultpara() +""" logging configuration """ - #scripts to run - runhandle = main.onosstart() - main.RunScript(runhandle, "FUNCvirNetNB") -# main.RunScript(runhandle, "FUNCovsdbtest") - main.RunScript(runhandle, "FUNCvirNetNBL3") -# main.RunScript(runhandle, "FUNCovsdbtestL3") - main.onosclean( runhandle ) - main.push_results_to_db(main.GetResult()) +logger = logging.getLogger('onos') +logger.setLevel(logging.DEBUG) + +ch = logging.StreamHandler() + + +formatter = logging.Formatter('%(asctime)s - %(name)s' + '- %(levelname)s - %(message)s') + +ch.setFormatter(formatter) +logger.addHandler(ch) + +with open("/home/opnfv/functest/conf/config_functest.yaml") as f: + functest_yaml = yaml.safe_load(f) +f.close() + +# onos parameters +TEST_DB = functest_yaml.get("results").get("test_db_url") +ONOS_REPO_PATH = functest_yaml.get("general").get("directories").get("dir_repos") +ONOS_CONF_DIR = functest_yaml.get("general").get("directories").get("dir_functest_conf") +REPO_PATH = ONOS_REPO_PATH + '/functest/' +if not os.path.exists(REPO_PATH): + logger.error("Functest repository directory not found '%s'" % REPO_PATH) + exit(-1) +sys.path.append(REPO_PATH + "testcases/") +import functest_utils + +ONOSCI_PATH= REPO_PATH+'testcases/Controllers/ONOS/Teston/CI/' +starttime = datetime.datetime.now() + +HOME = os.environ['HOME'] + "/" + +def RunScript(testname): + """ + Run ONOS Test Script + Parameters: + testname: ONOS Testcase Name + """ + runtest = ONOSCI_PATH + "OnosSystemTest/TestON/bin/cli.py run " + testname + logger.debug( "Run script " + testname ) + os.system(runtest) + +def DownloadCodes(url="https://github.com/sunyulin/OnosSystemTest.git"): + """ + Download Onos Teston codes + Parameters: + url: github url + """ + downloadcode = "git clone " + url + " " + ONOSCI_PATH + "OnosSystemTest" + logger.debug( "Download Onos Teston codes " + url) + os.system(downloadcode) + +def GetResult(): + LOGPATH = ONOSCI_PATH + "OnosSystemTest/TestON/logs" + cmd = "grep -rnh " + "Fail" + " " + LOGPATH + Resultbuffer = os.popen(cmd).read() + duration = datetime.datetime.now() - starttime + time.sleep(2) + + if re.search("\s+[1-9]+\s+", Resultbuffer): + logger.debug("Testcase Fails\n" + Resultbuffer) + Result = "Failed" + else: + logger.debug("Testcases Success") + Result = "Success" + payload={'timestart': str(starttime), + 'duration': str(duration), + 'status': Result} + return payload + +def SetOnosIp(): + onoscreds = ONOS_CONF_DIR + "/openstack.creds" + cmd = "cat " + onoscreds + " | grep OS_AUTH_URL" + cmd_output = os.popen(cmd).read() + print cmd_output + OC1=re.search(r"\d+\.\d+\.\d+\.\d+",cmd_output).group() + os.environ['OC1'] = OC1 + time.sleep(2) + logger.debug( "ONOS IP is " + OC1) + +def CleanOnosTest(): + TESTONPATH = ONOSCI_PATH + "OnosSystemTest/" + cmd = "rm -rf " + TESTONPATH + os.system(cmd) + time.sleep(2) + logger.debug( "Clean ONOS Teston" ) + +def main(): + + DownloadCodes() + SetOnosIp() + RunScript("FUNCvirNetNB") + RunScript("FUNCvirNetNBL3") + + try: + logger.debug("Push result into DB") + # TODO check path result for the file + git_version = functest_utils.get_git_branch(REPO_PATH) + pod_name = functest_utils.get_pod_name(logger) + result = GetResult() + functest_utils.push_results_to_db(TEST_DB, + "ONOS", + logger, pod_name, git_version, + payload=result) + except: + logger.error("Error pushing results into Database") + + CleanOnosTest() + + +if __name__ == '__main__': + main()
\ No newline at end of file |