diff options
author | liyin <liyin11@huawei.com> | 2017-02-16 12:30:12 +0800 |
---|---|---|
committer | Ace Lee <liyin11@huawei.com> | 2017-02-17 06:15:45 +0000 |
commit | 58c97253eaaf72f73924837fca4ddcb5cb8a5d94 (patch) | |
tree | 506b5cf15b80578433600693434aa54f473a8d26 /testsuites/posca/testcase_script | |
parent | be6453bb485c720278c5f6a45a5194391e454ce4 (diff) |
stress test of ping testcase
JIRA:BOTTLENECK-136
those code will add a new testcase: posca_stress_ping
This will use docker python client to realize the fountion of
calling yardstick to test.
And yardstick will create several VM pairs to test.
Because of the limites of quotas,
we now create 2,5,10 VM pairs.
Change-Id: I096250c547cd598c7c632a884b31d81c2be125f8
Signed-off-by: liyin <liyin11@huawei.com>
Diffstat (limited to 'testsuites/posca/testcase_script')
-rw-r--r-- | testsuites/posca/testcase_script/posca_stress_ping.py | 94 |
1 files changed, 94 insertions, 0 deletions
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') |