\r
var opnfv_dashboard_testcases = {\r
'VIM': {\r
- 'Tempest': ['Tempest duration',\r
+ 'vping_ssh': ['vPing duration'],\r
+ 'vping_userdata': ['vPing_userdata duration'],\r
+ 'tempest': ['Tempest duration',\r
'Tempest nb tests/nb failures'],\r
- 'vPing': ['vPing duration'],\r
- 'vPing_userdata': ['vPing_userdata duration'],\r
- 'Rally': ['rally duration']\r
+ 'rally_sanity': ['rally duration']\r
},\r
'Controller': {\r
- 'ODL': ['ODL nb tests/nb failures'],\r
- 'ONOS': ['ONOS FUNCvirNet duration ',\r
+ 'odl': ['ODL nb tests/nb failures'],\r
+ 'onos': ['ONOS FUNCvirNet duration ',\r
'ONOS FUNCvirNet nb tests/nb failures',\r
'ONOS FUNCvirNetL3 duration',\r
'ONOS FUNCvirNetL3 nb tests/nb failures']\r
},\r
'Features': {\r
- 'vIMS': ['vIMS nb tests passed/failed/skipped',\r
+ 'vims': ['vIMS nb tests passed/failed/skipped',\r
'vIMS orchestrator/VNF/test duration'],\r
'promise': ['Promise duration ',\r
'Promise nb tests/nb failures'],\r
versions = ["master"]
PERIOD = 10
MAX_SCENARIO_CRITERIA = 18
+URL_BASE = 'http://testresults.opnfv.org/test/api/v1/results'
# urllib2.install_opener(opener)
# url = "http://127.0.0.1:8000/results?case=" + case + \
# "&period=30&installer=" + installer
- url = ("http://testresults.opnfv.org/test/api/v1/results?case=" + case +
+ url = (reportingConf.URL_BASE + "?case=" + case +
"&period=" + str(reportingConf.PERIOD) + "&installer=" + installer +
"&scenario=" + scenario + "&version=" + version)
request = Request(url)
case = case.getName()
print case
- url = ("http://testresults.opnfv.org/test/api/v1/results?case=" + case +
+ url = (reportingConf.URL_BASE + "?case=" + case +
"&period=" + str(reportingConf.PERIOD) + "&installer=" + installer +
"&version=" + version)
request = Request(url)
# '<name in the config>':'<name in the DB>'
# I know it is uggly...
test_match_matrix = {'healthcheck': 'healthcheck',
- 'vping_ssh': 'vPing',
- 'vping_userdata': 'vPing_userdata',
- 'odl': 'ODL',
- 'onos': 'ONOS',
- 'ovno': 'ovno',
- 'tempest_smoke_serial': 'Tempest',
+ 'vping_ssh': 'vping_ssh',
+ 'vping_userdata': 'vping_userdata',
+ 'odl': 'odl',
+ 'onos': 'onos',
+ 'ocl': 'ocl',
+ 'tempest_smoke_serial': 'tempest_smoke_serial',
'tempest_full_parallel': 'tempest_full_parallel',
- 'rally_sanity': 'Rally',
+ 'rally_sanity': 'rally_sanity',
'bgpvpn': 'bgpvpn',
'rally_full': 'rally_full',
- 'vims': 'vIMS',
+ 'vims': 'vims',
'doctor': 'doctor-notification',
'promise': 'promise'
}
return test_match_matrix[self.name]
except:
return "unknown"
+
+ def getTestDisplayName(self):
+ # Correspondance name of the test case / name in the DB
+ test_match_matrix = {'healthcheck': 'healthcheck',
+ 'vping_ssh': 'vPing (ssh)',
+ 'vping_userdata': 'vPing (userdata)',
+ 'odl': 'ODL',
+ 'onos': 'ONOS',
+ 'ocl': 'OCL',
+ 'tempest_smoke_serial': 'Tempest (smoke)',
+ 'tempest_full_parallel': 'Tempest (full)',
+ 'rally_sanity': 'Rally (smoke)',
+ 'bgpvpn': 'bgpvpn',
+ 'rally_full': 'Rally (full)',
+ 'vims': 'vIMS',
+ 'doctor': 'Doctor',
+ 'promise': 'Promise'
+ }
+ try:
+ return test_match_matrix[self.name]
+ except:
+ return "unknown"
# 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
+# 09/06/2016: change for migration after refactoring
+# 16/06/2016: Alignment of test name (JIRA: FUNCTEST-304)
##############################################################################
collections_old2New = {
- 'pod': 'pods',
- 'test_projects': 'projects',
- 'test_testcases': 'testcases',
- 'test_results': 'results'
+ # 'pod': 'pods',
+ # 'test_projects': 'projects',
+ # 'test_testcases': 'testcases',
+ # 'test_results': 'results'
}
fields_old2New = {
- 'test_results': [({}, {'creation_date': 'start_date'})]
+ # 'test_results': [({}, {'creation_date': 'start_date'})]
}
docs_old2New = {
- 'test_results': [
- ({'criteria': 'failed'}, {'criteria': 'FAILED'}),
- ({'criteria': 'passed'}, {'criteria': 'PASS'})
+ # 'test_results': [
+ # ({'criteria': 'failed'}, {'criteria': 'FAILED'}),
+ # ({'criteria': 'passed'}, {'criteria': 'PASS'})
+ # ]
+ 'testcases': [
+ ({'name': 'vPing'}, {'name': 'vping_ssh'}),
+ ({'name': 'Tempest'}, {'name': 'tempest_smoke_serial'}),
+ ({'name': 'Rally'}, {'name': 'rally_sanity'}),
+ ({'name': 'ODL'}, {'name': 'odl'}),
+ ({'name': 'vIMS'}, {'name': 'vims'}),
+ ({'name': 'ONOS'}, {'name': 'onos'}),
+ ({'name': 'vPing_userdata'}, {'name': 'vping_userdata'}),
+ ({'name': 'ovno'}, {'name': 'ocl'})
+ ],
+ 'results': [
+ ({'case_name': 'vPing'}, {'case_name': 'vping_ssh'}),
+ ({'case_name': 'Tempest'}, {'case_name': 'tempest_smoke_serial'}),
+ ({'case_name': 'Rally'}, {'case_name': 'rally_sanity'}),
+ ({'case_name': 'ODL'}, {'case_name': 'odl'}),
+ ({'case_name': 'vIMS'}, {'case_name': 'vims'}),
+ ({'case_name': 'ONOS'}, {'case_name': 'onos'}),
+ ({'case_name': 'vPing_userdata'}, {'case_name': 'vping_userdata'}),
+ ({'case_name': 'ovno'}, {'case_name': 'ocl'})
]
}
parser.add_argument('-d', '--db',
type=str,
required=False,
- default=None,
+ default='test_results_collection',
help='database name after the restore.')
logger.addHandler(file_handler)
-def _get_dicts_from_list(dict_list, keys):
+def _get_dicts_from_list(testcase, dict_list, keys):
dicts = []
for dictionary in dict_list:
# iterate over dictionaries in input list
+ if not isinstance(dictionary, dict):
+ logger.info("Skipping non-dict details testcase [{}]".format(testcase))
+ continue
if keys == set(dictionary.keys()):
# check the dictionary structure
dicts.append(dictionary)
return test_results
+def _convert_value(value):
+ return value if value != '' else 0
+
+
def _convert_duration(duration):
if (isinstance(duration, str) or isinstance(duration, unicode)) and ':' in duration:
hours, minutes, seconds = duration.split(":")
+ hours = _convert_value(hours)
+ minutes = _convert_value(minutes)
+ seconds = _convert_value(seconds)
int_duration = 3600 * int(hours) + 60 * int(minutes) + float(seconds)
else:
int_duration = duration
-> details.orchestrator.duration
"""
testcase_details = testcase['details']
- sig_test_results = _get_dicts_from_list(testcase_details['sig_test']['result'],
+ sig_test_results = _get_dicts_from_list(testcase, testcase_details['sig_test']['result'],
{'duration', 'result', 'name', 'error'})
if len(sig_test_results) < 1:
logger.info("No 'result' from 'sig_test' found in vIMS details, skipping")
testcase_details = testcase['details']
funcvirnet_details = testcase_details['FUNCvirNet']['status']
- funcvirnet_statuses = _get_dicts_from_list(funcvirnet_details, {'Case result', 'Case name:'})
+ funcvirnet_statuses = _get_dicts_from_list(testcase, funcvirnet_details, {'Case result', 'Case name:'})
funcvirnetl3_details = testcase_details['FUNCvirNetL3']['status']
- funcvirnetl3_statuses = _get_dicts_from_list(funcvirnetl3_details, {'Case result', 'Case name:'})
+ funcvirnetl3_statuses = _get_dicts_from_list(testcase, funcvirnetl3_details, {'Case result', 'Case name:'})
if len(funcvirnet_statuses) < 0:
logger.info("No results found in 'FUNCvirNet' part of ONOS results")
-> details.tests
-> details.success_percentage
"""
- summaries = _get_dicts_from_list(testcase['details'], {'summary'})
+ summaries = _get_dicts_from_list(testcase, testcase['details'], {'summary'})
if len(summaries) != 1:
logger.info("Found zero or more than one 'summaries' in Rally details, skipping")
-> details.failures
-> details.success_percentage?
"""
- test_statuses = _get_dicts_from_list(testcase['details']['details'], {'test_status', 'test_doc', 'test_name'})
+ test_statuses = _get_dicts_from_list(testcase, testcase['details']['details'],
+ {'test_status', 'test_doc', 'test_name'})
if len(test_statuses) < 1:
logger.info("No 'test_status' found in ODL details, skipping")
return False
for mongo_json_line in fobj:
test_result = json.loads(mongo_json_line)
if modify_mongo_entry(test_result):
- shared_utils.publish_json(test_result, output_destination, es_user, es_passwd)
+ shared_utils.publish_json(test_result, es_user, es_passwd, output_destination)
finally:
if os.path.exists(tmp_filename):
os.remove(tmp_filename)