4 # Copyright 2015 Intel Corporation.
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
25 def results2opnfv_dashboard(results_path, int_data):
27 the method open the csv file with results and calls json encoder
29 testcases = os.listdir(results_path)
30 for test in testcases:
31 if not ".csv" in test:
33 resfile = results_path + '/' + test
34 with open(resfile, 'r') as in_file:
35 reader = csv.DictReader(in_file)
36 _push_results(reader, int_data)
38 def _push_results(reader, int_data):
40 the method encodes results and sends them into opnfv dashboard
42 db_url = int_data['db_url']
43 url = db_url + "/results"
48 allowed_pkt = ["64", "128", "512", "1024", "1518"]
49 details = {"64": '', "128": '', "512": '', "1024": '', "1518": ''}
51 for row_reader in reader:
52 if allowed_pkt.count(row_reader['packet_size']) == 0:
53 logging.error("The framesize is not supported in opnfv dashboard")
56 casename = _generate_test_name(row_reader['id'], int_data)
57 if "back2back" in row_reader['id']:
58 details[row_reader['packet_size']] = row_reader['b2b_frames']
60 details[row_reader['packet_size']] = row_reader['throughput_rx_fps']
62 # Create version field
63 with open(int_data['pkg_list'], 'r') as pkg_file:
66 version_ovs = line.replace(' ', '')
67 version_ovs = version_ovs.replace('OVS_TAG?=', '')
68 if "DPDK_TAG" in line:
69 if int_data['vanilla'] == False:
70 version_dpdk = line.replace(' ', '')
71 version_dpdk = version_dpdk.replace('DPDK_TAG?=', '')
73 version_dpdk = "not used"
74 version = "OVS " + version_ovs.replace('\n', '') + " DPDK " + version_dpdk.replace('\n', '')
77 body = {"project_name": "vsperf",
78 "case_name": casename,
79 "pod_name": int_data['pod'],
80 "installer": int_data['installer'],
84 myData = requests.post(url, json=body)
85 logging.info("Results for %s sent to opnfv, http response: %s", casename, myData)
86 logging.debug("opnfv url: %s", db_url)
87 logging.debug("the body sent to opnfv")
90 def _generate_test_name(testcase, int_data):
92 the method generates testcase name for releng
94 vanilla = int_data['vanilla']
97 names = {'phy2phy_tput': ["tput_ovsdpdk", "tput_ovs"],
98 'back2back': ["b2b_ovsdpdk", "b2b_ovs"],
99 'phy2phy_tput_mod_vlan': ["tput_mod_vlan_ovsdpdk", "tput_mod_vlan_ovs"],
100 'phy2phy_cont': ["cont_ovsdpdk", "cont_ovs"],
101 'pvp_cont': ["pvp_cont_ovsdpdkuser", "pvp_cont_ovsvirtio"],
102 'pvvp_cont': ["pvvp_cont_ovsdpdkuser", "pvvp_cont_ovsvirtio"],
103 'phy2phy_scalability': ["scalability_ovsdpdk", "scalability_ovs"],
104 'pvp_tput': ["pvp_tput_ovsdpdkuser", "pvp_tput_ovsvirtio"],
105 'pvp_back2back': ["pvp_b2b_ovsdpdkuser", "pvp_b2b_ovsvirtio"],
106 'pvvp_tput': ["pvvp_tput_ovsdpdkuser", "pvvp_tput_ovsvirtio"],
107 'pvvp_back2back': ["pvvp_b2b_ovsdpdkuser", "pvvp_b2b_ovsvirtio"],
108 'phy2phy_cpu_load': ["cpu_load_ovsdpdk", "cpu_load_ovs"],
109 'phy2phy_mem_load': ["mem_load_ovsdpdk", "mem_load_ovs"]}
111 for name, name_list in names.items():
115 res_name = name_list[1]
117 res_name = name_list[0]