[ODL-SFC] Add push resulst to DB
[functest.git] / testcases / features / doctor.py
index 02edd25..6c26875 100755 (executable)
 import argparse
 import os
 import time
-import yaml
 
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as functest_utils
 
+
 parser = argparse.ArgumentParser()
 parser.add_argument("-r", "--report",
                     help="Create json result file",
                     action="store_true")
 args = parser.parse_args()
 
-with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f:
-    functest_yaml = yaml.safe_load(f)
+functest_yaml = functest_utils.get_functest_yaml()
 
-dirs = functest_yaml.get('general').get('directories')
-DOCTOR_REPO = dirs.get('dir_repo_doctor')
+DOCTOR_REPO = \
+    functest_utils.get_functest_config('general.directories.dir_repo_doctor')
+RESULTS_DIR = \
+    functest_utils.get_functest_config('general.directories.dir_results')
 
 logger = ft_logger.Logger("doctor").getLogger()
 
 
 def main():
     exit_code = -1
+
+    # if the image name is explicitly set for the doctor suite, set it as
+    # enviroment variable
+    if 'doctor' in functest_yaml and 'image_name' in functest_yaml['doctor']:
+        os.environ["IMAGE_NAME"] = functest_yaml['doctor']['image_name']
+
     cmd = 'cd %s/tests && ./run.sh' % DOCTOR_REPO
+    log_file = RESULTS_DIR + "/doctor.log"
+
     start_time = time.time()
 
-    ret = functest_utils.execute_command(cmd, logger, info=True,
-                                         exit_on_error=False)
+    ret = functest_utils.execute_command(cmd,
+                                         info=True,
+                                         exit_on_error=False,
+                                         output_file=log_file)
 
     stop_time = time.time()
     duration = round(stop_time - start_time, 1)
     if ret == 0:
-        logger.info("doctor OK")
+        logger.info("Doctor test case OK")
         test_status = 'OK'
         exit_code = 0
     else:
-        logger.info("doctor FAILED")
+        logger.info("Doctor test case FAILED")
         test_status = 'NOK'
 
     details = {
@@ -62,13 +73,12 @@ def main():
     status = "FAIL"
     if details['status'] == "OK":
         status = "PASS"
-    functest_utils.logger_test_results(logger, "Doctor",
+    functest_utils.logger_test_results("Doctor",
                                        "doctor-notification",
                                        status, details)
     if args.report:
         functest_utils.push_results_to_db("doctor",
                                           "doctor-notification",
-                                          logger,
                                           start_time,
                                           stop_time,
                                           status,