import uuid
import json
import os
+import sys
import time
-import multiprocessing
+import threading
import datetime
+import Queue
from utils.parser import Parser as conf_parser
import utils.env_prepare.quota_prepare as quota_prepare
import utils.env_prepare.stack_prepare as stack_prepare
testfile = os.path.basename(__file__)
testcase, file_format = os.path.splitext(testfile)
+q = Queue.Queue()
+
def env_pre(test_config):
test_yardstick = False
LOG.debug(stdout)
-def do_test(test_config, con_dic):
+def do_test():
+ func_name = sys._getframe().f_code.co_name
out_file = ("/tmp/yardstick_" + str(uuid.uuid4()) + ".out")
yardstick_container = docker_env.yardstick_info['container']
cmd = ('yardstick task start /home/opnfv/repos/yardstick/'
loop_walue = 0
while loop_walue < 150:
time.sleep(2)
+ loop_walue = loop_walue + 1
with open(out_file) as f:
- loop_walue = loop_walue + 1
data = json.load(f)
if data["status"] == 1:
if data["result"]["criteria"] == "PASS":
break
elif data["status"] == 2:
LOG.error("yardstick error exit")
+ q.put((out_value, func_name))
return out_value
-def config_to_result(num, out_num, during_date):
+def config_to_result(num, out_num, during_date, result):
testdata = {}
test_result = {}
- test_result["number_of_users"] = float(num)
+ test_result["number_of_stacks"] = float(num)
test_result["success_times"] = out_num
test_result["success_rate"] = out_num / num
test_result["duration_time"] = during_date
+ test_result["result"] = result
testdata["data_body"] = test_result
testdata["testcase"] = testcase
return testdata
def func_run(condic):
- test_config = {}
- test_date = do_test(test_config, condic)
+ test_date = do_test()
return test_date
result = []
out_num = 0
num = int(value)
- pool = multiprocessing.Pool(processes=num)
+ # pool = multiprocessing.Pool(processes=num)
+ threadings = []
LOG.info("begin to run %s thread" % num)
starttime = datetime.datetime.now()
- 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())
+
+ for i in xrange(0, num):
+ temp_thread = threading.Thread(target=func_run, args=(str(i),))
+ threadings.append(temp_thread)
+ temp_thread.start()
+ for one_thread in threadings:
+ one_thread.join()
+ while not q.empty():
+ result.append(q.get())
+ for item in result:
+ out_num = out_num + float(item[0])
endtime = datetime.datetime.now()
LOG.info("%s thread success %d times" % (num, out_num))
during_date = (endtime - starttime).seconds
- data_reply = config_to_result(num, out_num, during_date)
+ if out_num >= con_dic["scenarios"]['threshhold']:
+ criteria_result = "PASS"
+ else:
+ criteria_result = "FAIL"
+
+ data_reply = config_to_result(num, out_num, during_date,
+ criteria_result)
if "dashboard" in test_config["contexts"].keys():
DashBoard.dashboard_send_data(test_config['contexts'], data_reply)
conf_parser.result_to_file(data_reply, test_config["out_file"])
- 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))
+ if criteria_result is "FAIL":
break
LOG.info('END POSCA stress ping test')
+ return criteria_result