diff options
Diffstat (limited to 'testsuites/posca')
-rwxr-xr-x | testsuites/posca/run_posca.py | 5 | ||||
-rw-r--r-- | testsuites/posca/testcase_cfg/posca_stress_ping.yaml | 22 | ||||
-rwxr-xr-x | testsuites/posca/testcase_dashboard/system_bandwidth.py | 7 | ||||
-rw-r--r-- | testsuites/posca/testcase_script/posca_stress_ping.py | 94 |
4 files changed, 123 insertions, 5 deletions
diff --git a/testsuites/posca/run_posca.py b/testsuites/posca/run_posca.py index 72a0d4c2..3e23a37a 100755 --- a/testsuites/posca/run_posca.py +++ b/testsuites/posca/run_posca.py @@ -16,6 +16,7 @@ and if you run "python run_posca", this will run testcase, posca_factor_system_bandwidth by default.''' import importlib +import sys import utils.parser as conf_parser import utils.logger as log INTERPRETER = "/usr/bin/python" @@ -47,8 +48,8 @@ def posca_run(test_level, test_name): def main(): - test_level = "testcase" - test_name = "posca_factor_system_bandwidth" + test_level = sys.argv[1] + test_name = sys.argv[2] posca_run(test_level, test_name) diff --git a/testsuites/posca/testcase_cfg/posca_stress_ping.yaml b/testsuites/posca/testcase_cfg/posca_stress_ping.yaml new file mode 100644 index 00000000..a60a8832 --- /dev/null +++ b/testsuites/posca/testcase_cfg/posca_stress_ping.yaml @@ -0,0 +1,22 @@ +# Sample stress task config file +# Three scenarios run in parallel pinging one target vm. +# Multiple context are used to specify the host and target VMs. + +load_manager: + scenarios: + tool: ping + test_times: 100 + package_size: + num_stack: 2, 5, 10 + package_loss: 10% + + contexts: + stack_create: yardstick + flavor: + yardstick_test_ip: + yardstick_test_dir: "samples" + yardstick_testcase: "ping_bottlenecks" + +dashboard: + dashboard: "y" + dashboard_ip: diff --git a/testsuites/posca/testcase_dashboard/system_bandwidth.py b/testsuites/posca/testcase_dashboard/system_bandwidth.py index e95ff214..155ca2df 100755 --- a/testsuites/posca/testcase_dashboard/system_bandwidth.py +++ b/testsuites/posca/testcase_dashboard/system_bandwidth.py @@ -17,9 +17,10 @@ from utils.parser import Parser as conf_parser LOG = log.Logger(__name__).getLogger() config = ConfigParser.ConfigParser() es = Elasticsearch() -dashboard_dir = os.path.join(conf_parser.test_dir, - "posca", - "testcase_dashboard") +dashboard_path = os.path.join(conf_parser.test_dir, + "posca", + "testcase_dashboard") +dashboard_dir = dashboard_path + "/" def dashboard_send_data(runner_config, test_data): diff --git a/testsuites/posca/testcase_script/posca_stress_ping.py b/testsuites/posca/testcase_script/posca_stress_ping.py new file mode 100644 index 00000000..abf8044a --- /dev/null +++ b/testsuites/posca/testcase_script/posca_stress_ping.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +############################################################################## +# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# 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 +############################################################################## +'''This file realize the function of run posca ping stress test script +This file contain several part: +Frist is create a script to realize several threading run''' + +import utils.logger as log +import uuid +import json +import os +import multiprocessing +import utils.infra_setup.runner.yardstick as Runner +from utils.parser import Parser as conf_parser +import docker +# -------------------------------------------------- +# logging configuration +# -------------------------------------------------- +LOG = log.Logger(__name__).getLogger() + +test_dict = { + "action": "runTestCase", + "args": { + "opts": { + "task-args": {} + }, + "testcase": "ping_bottlenecks" + } +} + + +def env_pre(con_dic): + Runner.yardstick_env_prepare(con_dic['contexts']) + + +def do_test(test_config, con_dic): + out_file = ("/tmp/yardstick_" + str(uuid.uuid4()) + ".out") + client = docker.from_env() + con = client.containers.get('bottleneckcompose_yardstick_1') + cmd = ('yardstick task start /home/opnfv/repos/yardstick/' + 'samples/ping_bottlenecks.yaml --output-file ' + out_file) + stdout = con.exec_run(cmd) + LOG.debug(stdout) + with open(out_file) as f: + data = json.load(f) + if data["status"] == 1: + LOG.info("yardstick run success") + out_value = 1 + else: + LOG.error("yardstick error exit") + out_value = 0 + os.remove(out_file) + return out_value + + +def func_run(condic): + test_config = {} + test_date = do_test(test_config, condic) + return test_date + + +def run(test_config): + con_dic = test_config["load_manager"] + test_num = con_dic['scenarios']['num_stack'].split(',') + if con_dic["contexts"]["yardstick_test_ip"] is None: + con_dic["contexts"]["yardstick_test_ip"] =\ + conf_parser.ip_parser("yardstick_test_ip") + + env_pre(con_dic) + + for num in test_num: + result = [] + out_num = 0 + pool = multiprocessing.Pool(processes=num) + for i in range(0, int(num)): + result.append(pool.apply_async(func_run, (con_dic, ))) + pool.close() + pool.join() + for res in result: + out_num = out_num + float(res.get()) + LOG.info("%s thread success %d times" % (num, out_num)) + if out_num < num: + success_rate = ('%d/%d' % (out_num, num)) + LOG.error('error thread: %d ' + 'the successful rate is %s' + % (num - out_num, success_rate)) + break + LOG.info('END POSCA stress ping test') |