summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliyin <liyin11@huawei.com>2016-12-07 17:24:29 +0800
committerliyin <liyin11@huawei.com>2016-12-07 17:24:29 +0800
commit32fc31642ff993fe93e5033cba9f97a633a0a340 (patch)
treed1b22de612c3bc20588904f168dd5818f17eeb54
parentc4a53bacf10ac556a0e6a355f0ead2cb4d6939b8 (diff)
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 <liyin11@huawei.com>
-rw-r--r--testsuites/posca/testcase_cfg/posca_factor_cpu_burden.yaml18
-rw-r--r--testsuites/posca/testcase_script/posca_factor_cpu_burden.py150
2 files changed, 82 insertions, 86 deletions
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