stress_test_dashboard_code
[bottlenecks.git] / testsuites / posca / testcase_script / posca_stress_ping.py
index abf8044..02244a3 100644 (file)
@@ -16,9 +16,11 @@ import uuid
 import json
 import os
 import multiprocessing
+import docker
+import datetime
 import utils.infra_setup.runner.yardstick as Runner
 from utils.parser import Parser as conf_parser
-import docker
+import testsuites.posca.testcase_dashboard.posca_stress_ping as DashBoard
 # --------------------------------------------------
 # logging configuration
 # --------------------------------------------------
@@ -33,10 +35,16 @@ test_dict = {
         "testcase": "ping_bottlenecks"
     }
 }
+testfile = os.path.basename(__file__)
+testcase, file_format = os.path.splitext(testfile)
 
 
 def env_pre(con_dic):
-    Runner.yardstick_env_prepare(con_dic['contexts'])
+    client = docker.from_env()
+    con = client.containers.get('bottleneckcompose_yardstick_1')
+    cmd = ('yardstick env prepare')
+    stdout = con.exec_run(cmd)
+    LOG.debug(stdout)
 
 
 def do_test(test_config, con_dic):
@@ -59,6 +67,18 @@ def do_test(test_config, con_dic):
     return out_value
 
 
+def config_to_result(num, out_num, during_date):
+    testdata = {}
+    test_result = {}
+    test_result["number_of_users"] = float(num)
+    test_result["success_times"] = out_num
+    test_result["success_rate"] = out_num / num
+    test_result["duration_time"] = during_date
+    testdata["data_body"] = test_result
+    testdata["testcase"] = testcase
+    return testdata
+
+
 def func_run(condic):
     test_config = {}
     test_date = do_test(test_config, condic)
@@ -72,19 +92,39 @@ def run(test_config):
         con_dic["contexts"]["yardstick_test_ip"] =\
             conf_parser.ip_parser("yardstick_test_ip")
 
+    if test_config["dashboard"]["dashboard"] == 'y':
+        if test_config["dashboard"]["dashboard_ip"] is None:
+            test_config["dashboard"]["dashboard_ip"] =\
+                conf_parser.ip_parser("dashboard")
+        LOG.info("Create Dashboard data")
+        DashBoard.posca_stress_ping(test_config["dashboard"])
+
+    LOG.info("yardstick envrionment prepare!")
     env_pre(con_dic)
 
-    for num in test_num:
+    for value in test_num:
         result = []
         out_num = 0
+        num = int(value)
         pool = multiprocessing.Pool(processes=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())
+
+        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 test_config['dashboard']['dashboard'] == 'y':
+            DashBoard.dashboard_send_data(test_config['dashboard'], 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 '