SDNVPN test cases failed in CI 07/35207/2
authorxudan <xudan16@huawei.com>
Tue, 23 May 2017 12:28:58 +0000 (08:28 -0400)
committerxudan <xudan16@huawei.com>
Wed, 24 May 2017 04:05:26 +0000 (00:05 -0400)
JIRA: DOVETAIL-439

1. SDNVPN test cases run in CI failed, because the file
  /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml is empty.
2. copy the file userconfig/sdnvpn_config_testcase1/2/4/8.yaml
  to /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml in Functest container

Change-Id: Ie904f83c755efc0d9e0abe5dcd44fe4a5056123e
Signed-off-by: xudan <xudan16@huawei.com>
dovetail/container.py
dovetail/test_runner.py
dovetail/testcase.py
dovetail/testcase/sdnvpn.tc001.yml
dovetail/testcase/sdnvpn.tc002.yml
dovetail/testcase/sdnvpn.tc003.yml
dovetail/testcase/sdnvpn.tc004.yml
dovetail/testcase/sdnvpn.tc008.yml
userconfig/pod.yaml.sample [moved from userconfig/sample_pod.yaml with 100% similarity]

index 11c64f4..d91c184 100644 (file)
@@ -148,7 +148,7 @@ class Container(object):
             cls.logger.debug("Can just use password in %s.", pod_file)
         config_volume = \
             ' -v %s:%s ' % (dovetail_config['userconfig_dir'],
-                            dovetail_config["functest"]['config']['dir'])
+                            dovetail_config[type]['config']['dir'])
 
         hosts_config = ""
         hosts_config_path = os.path.abspath(
index cfc4901..0482c2c 100644 (file)
@@ -28,6 +28,23 @@ class DockerRunner(object):
     def create_log(cls):
         cls.logger = dt_logger.Logger(__name__ + '.DockerRunner').getLogger()
 
+    def pre_copy(self, container_id=None, dest_path=None,
+                 src_file=None, exist_file=None):
+        if not dest_path:
+            self.logger.error("There has no dest_path in %s config file.",
+                              self.testcase.name())
+            return None
+        if src_file:
+            self.testcase.mk_src_file()
+            file_path = dt_cfg.dovetail_config[self.type]['result']['dir']
+            src_path = os.path.join(file_path, src_file)
+        if exist_file:
+            file_path = dt_cfg.dovetail_config[self.type]['config']['dir']
+            src_path = os.path.join(file_path, exist_file)
+
+        Container.pre_copy(container_id, src_path, dest_path)
+        return dest_path
+
     def run(self):
         if dt_cfg.dovetail_config['offline']:
             exist = Container.check_image_exist(self.testcase.validate_type())
@@ -47,12 +64,15 @@ class DockerRunner(object):
 
         self.logger.debug('container id:%s', container_id)
 
-        dest_path = self.testcase.pre_copy_dest_path()
-        if dest_path:
-            self.testcase.mk_src_file()
-            src_path = self.testcase.pre_copy_src_path(self.type)
-            ret, msg = Container.pre_copy(container_id, src_path,
-                                          dest_path)
+        dest_path = self.testcase.pre_copy_path("dest_path")
+        src_file_name = self.testcase.pre_copy_path("src_file")
+        exist_file_name = self.testcase.pre_copy_path("exist_src_file")
+
+        if src_file_name or exist_file_name:
+            if not self.pre_copy(container_id, dest_path, src_file_name,
+                                 exist_file_name):
+                return
+
         if not self.testcase.prepared():
             prepare_failed = False
             cmds = self.testcase.pre_condition()
index 408599f..2ceb8f2 100644 (file)
@@ -115,24 +115,12 @@ class Testcase(object):
                               self.name())
         return pre_condition
 
-    def pre_copy_src_path(self, test_type):
+    def pre_copy_path(self, key_name):
         try:
-            pre_copy_src_file = \
-                self.testcase['validate']['pre_copy']['src_file']
-            result_dir = dt_cfg.dovetail_config[test_type]['result']['dir']
-        except KeyError as e:
-            self.logger.error('src file Key error %s', e)
-            return None
-        src_path = os.path.join(result_dir, pre_copy_src_file)
-        return src_path
-
-    def pre_copy_dest_path(self):
-        try:
-            pre_copy_dest_path = \
-                self.testcase['validate']['pre_copy']['dest_path']
+            path = self.testcase['validate']['pre_copy'][key_name]
         except KeyError:
-            pre_copy_dest_path = ''
-        return pre_copy_dest_path
+            return None
+        return path
 
     def post_condition(self):
         try:
@@ -148,7 +136,7 @@ class Testcase(object):
         return post_condition
 
     def mk_src_file(self):
-        testcase_src_file = self.testcase['validate']['pre_copy']['src_file']
+        testcase_src_file = self.pre_copy_path('src_file')
         try:
             file_path = os.path.join(dt_cfg.dovetail_config['result_dir'],
                                      testcase_src_file)
@@ -158,12 +146,10 @@ class Testcase(object):
                         self.logger.debug('save testcases %s', sub_test)
                         src_file.write(sub_test + '\n')
             self.logger.debug('save testcases to %s', file_path)
+            return file_path
         except Exception:
             self.logger.error('Failed to save: %s', file_path)
-
-        src_file_path = os.path.join(dt_cfg.dovetail_config['result_dir'],
-                                     testcase_src_file)
-        return src_file_path
+            return None
 
     def run(self):
         runner = TestRunnerFactory.create(self)
index a453838..25a636d 100644 (file)
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc001:
     type: functest
     testcase: bgpvpn
     pre_copy:
-      src_file: sdnvpn_config_testcase1.yaml
+      exist_src_file: sdnvpn_config_testcase1.yaml
       dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
   report:
     sub_testcase_list:
index 0e4cb51..7984651 100644 (file)
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc002:
     type: functest
     testcase: bgpvpn
     pre_copy:
-      src_file: sdnvpn_config_testcase2.yaml
+      exist_src_file: sdnvpn_config_testcase2.yaml
       dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
   report:
     sub_testcase_list:
index 3da7ccd..4ae3926 100644 (file)
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc003:
     type: functest
     testcase: bgpvpn
     pre_copy:
-      src_file: sdnvpn_config_testcase3.yaml
+      exist_src_file: sdnvpn_config_testcase3.yaml
       dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
   report:
     sub_testcase_list:
index 6e6727d..4c7d8d4 100644 (file)
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc004:
     type: functest
     testcase: bgpvpn
     pre_copy:
-      src_file: sdnvpn_config_testcase4.yaml
+      exist_src_file: sdnvpn_config_testcase4.yaml
       dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
   report:
     sub_testcase_list:
index 80b01d7..e805097 100644 (file)
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc008:
     type: functest
     testcase: bgpvpn
     pre_copy:
-      src_file: sdnvpn_config_testcase8.yaml
+      exist_src_file: sdnvpn_config_testcase8.yaml
       dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
   report:
     sub_testcase_list: