X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=testsuites%2Fposca%2Ftestcase_script%2Fposca_factor_cpu_burden.py;h=58da8ca77e4db6e74b803f0780fbbbc7c197b486;hb=8b8a2ca5a993b10f9c5cf3955b705fa2da024fe2;hp=0b3b2319d4a700d3df7de4bb5a9074de29a00944;hpb=914d679eab3335a59e4425218def6d4d38dd2c1d;p=bottlenecks.git diff --git a/testsuites/posca/testcase_script/posca_factor_cpu_burden.py b/testsuites/posca/testcase_script/posca_factor_cpu_burden.py index 0b3b2319..58da8ca7 100644 --- a/testsuites/posca/testcase_script/posca_factor_cpu_burden.py +++ b/testsuites/posca/testcase_script/posca_factor_cpu_burden.py @@ -13,105 +13,113 @@ 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 # ------------------------------------------------------ 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_cpu_burden.yaml") + help="configuration files for the testcase,\ + in yaml format", + 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" -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\"}'" -#-------------------------------------------------- +# -------------------------------------------------- # logging configuration -#-------------------------------------------------- +# -------------------------------------------------- logger = logging.getLogger(__name__) + def posca_env_check(): - print "========== posca system bandwidth env check ===========" - if os.path.exists(r'/home/opnfv/bottlenecks/testsuites/posca/test_result/'): + print("========== posca system bandwidth env check ===========") + filepath = r"/home/opnfv/bottlenecks/testsuites/posca/test_result/" + 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_cpu_burden_%s.json"%(time_new),"a") as f: - f.write(json.dumps(save_dic,f)) - f.write("\n") + 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) + 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) + 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_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 def posca_run(con_dic): - print "========== run posca system bandwidth ===========" - - test_pkt_s_a = con_dic['test_pkt_s'].split(',') - time_new = time.strftime('%H_%M',time.localtime(time.time())) + print("========== run posca system bandwidth ===========") + 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) + + return True - 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 %s"%(cmd,order_arg,con_dic['test_ip'],con_dic['test_rx_flavor'],con_dic['test_tx_flavor'],test_pkt_s_e,test_pkt_s_e)) - order_result = order_excute.read() - test_id = order_result.find("task_id") - time.sleep(con_dic['test_time']) - cmd_excute = os.popen( "%s http://%s/api/v3/yardstick/testresults?task_id=%s"%(cmd,con_dic['test_ip'],test_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 def main(): if not (args.conf): - logger.error("Configuration files do not exist for the specified testcases") - exit(-1) + logger.error("Configuration files do not exist for \ + the specified testcases") + os.exit(-1) else: - testcase_cfg = args.conf + 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__': +if __name__ == '__main__': main()