From 32fc31642ff993fe93e5033cba9f97a633a0a340 Mon Sep 17 00:00:00 2001 From: liyin Date: Wed, 7 Dec 2016 17:24:29 +0800 Subject: cpu_burden script&configure JIRA: BOTTLENECK-118 This patch add a new function cpu_burden. there are two things: 1.add configure file of cpu_burden, this default file could run test case 2.add script of cpu_burden, this script use the configure file could use yardstick restful api call date. Change-Id: Icd88b317fb97d8f12d81279eaffc2d3effc8ab65 Signed-off-by: liyin --- .../testcase_cfg/posca_factor_cpu_burden.yaml | 18 +-- .../testcase_script/posca_factor_cpu_burden.py | 150 ++++++++++----------- 2 files changed, 82 insertions(+), 86 deletions(-) (limited to 'testsuites') diff --git a/testsuites/posca/testcase_cfg/posca_factor_cpu_burden.yaml b/testsuites/posca/testcase_cfg/posca_factor_cpu_burden.yaml index c50264b0..fb4dcba9 100644 --- a/testsuites/posca/testcase_cfg/posca_factor_cpu_burden.yaml +++ b/testsuites/posca/testcase_cfg/posca_factor_cpu_burden.yaml @@ -1,14 +1,16 @@ [config] -test_ip: 192.168.23.2:8888 -throughput: 1000 +test_ip: +dashboard: y +ES_ip: tool: netperf protocol: tcp -test_time: 30 -pkt sizes: 64,32,16,8 -tx cache sizes: 65536 -rx cache sizes: 87380 -cpu load: 0.9 -latency: 500000 +test_time: 60 +tx_pkt_sizes: 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072 +rx_pkt_sizes: 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072 +default_rx_pkt_sizes: 65536 +default_tx_pkt_sizes: 87380 +cpu_load: 90 +latency: 100000 [flavor_config] rx_flavor: bottlenecks_system_bandwidth_rx,512,1,1 diff --git a/testsuites/posca/testcase_script/posca_factor_cpu_burden.py b/testsuites/posca/testcase_script/posca_factor_cpu_burden.py index 8a51a3d2..273a24f9 100644 --- a/testsuites/posca/testcase_script/posca_factor_cpu_burden.py +++ b/testsuites/posca/testcase_script/posca_factor_cpu_burden.py @@ -13,7 +13,9 @@ import argparse import time import logging import ConfigParser -import json +import common_script +import datetime +import subprocess # ------------------------------------------------------ # parser for configuration files in each test case @@ -22,17 +24,17 @@ parser = argparse.ArgumentParser() parser.add_argument("-c", "--conf", help="configuration files for the testcase,\ in yaml format", - default="/home/opnfv/bottlenecks/testsuites/posca/\ - testcase_cfg/posca_factor_tx_pkt_size.yaml") + default="/home/opnfv/bottlenecks/testsuites/posca\ +/testcase_cfg/posca_factor_system_bandwidth.yaml") args = parser.parse_args() +headers = {"Content-Type": "application/json"} +INTERPRETER = "/usr/bin/python" + + # -------------------------------------------------- # logging configuration # -------------------------------------------------- logger = logging.getLogger(__name__) -cmd = "curl -i" -order_arg = "-H \"Content-Type: application/json\" -X POST -d \'{\"cmd\": \ - \"start\", \"opts\":{\"output-file\": \"/tem/yardstick.out\"}, \ - \"args\": \"../samples/netperf.yaml\"}'" def posca_env_check(): @@ -41,80 +43,56 @@ def posca_env_check(): if os.path.exists(filepath): return True else: - os.mkdirs(r'/home/opnfv/bottlenecks/testsuites/posca/test_result/') - - -def posca_output_result(time_new, input_1, input_2, input_3, - input_4, input_5, input_6): - save_dic = {} - save_dic['tx_pkt_size'] = input_1 - save_dic['rx_cache_size'] = input_2 - save_dic['tx_cache_size'] = input_3 - save_dic['throughput '] = input_4 - save_dic['latency'] = input_5 - save_dic['cpu_load'] = input_6 - with open("/home/opnfv/bottlenecks/testsuites/posca/test_result/\ - factor_tx_cache_size_%s.json" % (time_new), "a") as f: - f.write(json.dumps(save_dic, f)) - f.write("\n") - - -def posca_config_read(config_str): - print("========== posca system bandwidth config read ===========") - - con_dic = {} - config = ConfigParser.ConfigParser() - with open(config_str, "rd") as cfgfile: - config.readfp(cfgfile) - con_dic['test_ip'] = config.get("config", "test_ip") - con_dic['test_throughput'] = config.get("config", "throughput") - con_dic['test_tool'] = config.get("config", "tool") - con_dic['test_time'] = config.get("config", "test_time") - con_dic['test_protocol'] = config.get("config", "protocol") - con_dic['test_pkt_s'] = config.get("config", "pkt sizes") - con_dic['test_tx_cache_s'] = config.get("config", "tx cache sizes") - con_dic['test_rx_cache_s'] = config.get("config", "rx cache sizes") - con_dic['test_cpu_load'] = config.get("config", "cpu load") - con_dic['test_latency'] = config.get("config", "latency") - con_dic['test_rx_flavor'] = config.get("flavor_config", "rx_flavor") - con_dic['test_tx_flavor'] = config.get("flavor_config", "tx_flavor") - return con_dic + os.mkdir(r'/home/opnfv/bottlenecks/testsuites/posca/test_result/') + + +def system_cpu_burden(test_id, data, file_config, con_dic): + date_id = test_id + print("test is is begin from %d" % test_id) + cur_role_result = 1 + pre_role_result = 1 + pre_reply = {} + data_return = {} + data_max = {} + data_return["throughput"] = 1 + for test_x in data["tx_pkt_sizes"]: + data_max["throughput"] = 1 + for test_y in data["rx_pkt_sizes"]: + test_config = { + "tx_msg_size": float(test_x), + "rx_msg_size": float(test_y), + } + date_id = date_id + 1 + file_config["test_id"] = date_id + data_reply = common_script.posca_send_data( + con_dic, test_config, file_config) + bandwidth = data_reply["throughput"] + if (data_max["remote_cpu_util"] > con_dic["cpu_load"]): + return 1, data_reply + if (data_max["local_cpu_util"] > con_dic["cpu_load"]): + return 1, data_reply + print("cpu_burden don't find\n") + return 0, data_return def posca_run(con_dic): print("========== run posca system bandwidth ===========") - - test_pkt_s_a = con_dic['test_pkt_s'].split(',') - test_rx_cache_s_e = con_dic['test_rx_cache_s'].split(',') - test_tx_cache_s_e = con_dic['test_tx_cache_s'].split(',') + test_con_id = 0 + file_config = {} + data = {} + rx_pkt_s_a = con_dic['rx_pkt_sizes'].split(',') + tx_pkt_s_a = con_dic['tx_pkt_sizes'].split(',') time_new = time.strftime('%H_%M', time.localtime(time.time())) + file_config["file_path"] = "/home/opnfv/bottlenecks/testsuites/posca/\ +test_result/factor_system_system_bandwidth_%s.json" % (time_new) + file_config["test_type"] = "system_bandwidth_biggest" + data["rx_pkt_sizes"] = rx_pkt_s_a + data["tx_pkt_sizes"] = tx_pkt_s_a + print("######test package begin######") + date_return, pkt_reply = system_cpu_burden( + test_con_id, data, file_config, con_dic) - for test_pkt_s_e in test_pkt_s_a: - print("Package size %s") % (test_pkt_s_e) - order_excute = os.popen("%s %s http://%s/api/v3/yardstick/\ - tasks/task %s %s %s" % (cmd, order_arg, con_dic['test_ip'], - test_pkt_s_e, test_rx_cache_s_e, - test_tx_cache_s_e)) - order_result = order_excute.read() - task_id = order_result.find("task_id") - time.sleep(con_dic['test_time']) - cmd_excute = os.popen("%s http://%s/api/v3/yardstick/testre\ - sults?task_id=%s" % (cmd, con_dic['test_ip'], task_id)) - test_result = cmd_excute.read() - bandwidth = test_result.find("bandwidth") - cpu_load = test_result.find("cpu_load") - latency = test_result.find("latency") - posca_output_result(time_new, test_pkt_s_e, con_dic['test_rx_cache_s'], - con_dic['test_tx_cache_s']) - if (bandwidth < con_dic['test_throughput\ - ']) and (latency < con_dic['test_latency']): - if cpu_load > con_dic['test_cpu_load']: - return True - else: - print("%s,%s,%s") % (bandwidth, latency, cpu_load) - else: - print("%s,%s,%s") % (bandwidth, latency, cpu_load) - return False + return True def main(): @@ -125,11 +103,27 @@ def main(): else: testcase_cfg = args.conf - con_dic = posca_config_read(testcase_cfg) + con_str = [ + 'test_ip', 'tool', 'test_time', 'protocol', + 'tx_pkt_sizes', 'rx_pkt_sizes', 'cpu_load', + 'latency', 'ES_ip', 'dashboard' + ] posca_env_check() + starttime = datetime.datetime.now() + config = ConfigParser.ConfigParser() + con_dic = common_script.posca_config_read(testcase_cfg, con_str, config) + common_script.posca_create_incluxdb(con_dic) posca_run(con_dic) - + endtime = datetime.datetime.now() + if con_dic["dashboard"] == "y": + cmd = '/home/opnfv/bottlenecks/testsuites/posca/testcase_dashboard/\ +system_bandwidth.py' + pargs = [INTERPRETER, cmd] + print("\nBegin to establish dashboard.") + sub_result = subprocess.Popen(pargs) + sub_result.wait() + print("System Bandwidth testing time : %s" %(endtime - starttime)) time.sleep(5) if __name__ == '__main__': - main() + main() \ No newline at end of file -- cgit 1.2.3-korg