blob: ccd49b75bd05a9d766b046c9e35e3d2d83b12c5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
"""
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
#
# 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
import sys
import logging
import yaml
import datetime
import re
""" logging configuration """
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()
|