Skip modifying creds if Variables.robot is missing 29/48029/5
authorCédric Ollivier <cedric.ollivier@orange.com>
Wed, 29 Nov 2017 18:33:07 +0000 (19:33 +0100)
committerCédric Ollivier <cedric.ollivier@orange.com>
Thu, 30 Nov 2017 05:00:56 +0000 (06:00 +0100)
Variable.robot is missing in functest-features [1].
As it's related to ODL csit suites, modifying it could be safely
skipped as odl.py is designed for testing multiple ODL testcases.

[1] https://gerrit.opnfv.org/gerrit/#/c/46225/

Change-Id: Id5f1947a073d251ef7480f418218a4c85fe078c1
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
functest/opnfv_tests/sdn/odl/odl.py
functest/tests/unit/odl/test_odl.py

index de723d1..6c05c01 100644 (file)
@@ -38,11 +38,13 @@ class ODLTests(robotframework.RobotFramework):
     """ODL test runner."""
 
     odl_test_repo = constants.CONST.__getattribute__('dir_repo_odl_test')
-    neutron_suite_dir = os.path.join(odl_test_repo,
-                                     "csit/suites/openstack/neutron")
-    basic_suite_dir = os.path.join(odl_test_repo,
-                                   "csit/suites/integration/basic")
+    neutron_suite_dir = os.path.join(
+        odl_test_repo, "csit/suites/openstack/neutron")
+    basic_suite_dir = os.path.join(
+        odl_test_repo, "csit/suites/integration/basic")
     default_suites = [basic_suite_dir, neutron_suite_dir]
+    odl_variables_file = os.path.join(
+        odl_test_repo, 'csit/variables/Variables.robot')
     __logger = logging.getLogger(__name__)
 
     def __init__(self, **kwargs):
@@ -59,18 +61,17 @@ class ODLTests(robotframework.RobotFramework):
             True if credentials are set.
             False otherwise.
         """
-        odl_variables_files = os.path.join(cls.odl_test_repo,
-                                           'csit/variables/Variables.robot')
+
         try:
-            for line in fileinput.input(odl_variables_files,
+            for line in fileinput.input(cls.odl_variables_file,
                                         inplace=True):
                 print(re.sub("@{AUTH}.*",
                              "@{{AUTH}}           {}    {}".format(
                                  odlusername, odlpassword),
                              line.rstrip()))
             return True
-        except Exception as ex:  # pylint: disable=broad-except
-            cls.__logger.error("Cannot set ODL creds: %s", str(ex))
+        except Exception:  # pylint: disable=broad-except
+            cls.__logger.exception("Cannot set ODL creds:")
             return False
 
     def run_suites(self, suites=None, **kwargs):
@@ -128,10 +129,12 @@ class ODLTests(robotframework.RobotFramework):
         except KeyError:
             self.__logger.exception("Cannot run ODL testcases. Please check")
             return self.EX_RUN_ERROR
-        if self.set_robotframework_vars(odlusername, odlpassword):
-            return super(ODLTests, self).run(variable=variable, suites=suites)
+        if not os.path.isfile(self.odl_variables_file):
+            self.__logger.info("Skip writting ODL creds")
         else:
-            return self.EX_RUN_ERROR
+            if not self.set_robotframework_vars(odlusername, odlpassword):
+                return self.EX_RUN_ERROR
+        return super(ODLTests, self).run(variable=variable, suites=suites)
 
     def run(self, **kwargs):
         """Run suites in OPNFV environment
index ff25cd7..1a3f795 100644 (file)
@@ -154,7 +154,7 @@ class ODLMainTesting(ODLTesting):
         kwargs = self._get_run_suites_kwargs()
         self.assertEqual(self.test.run_suites(**kwargs), status)
         if len(args) > 0:
-            args[0].assert_called_once_with(self.test.res_dir)
+            args[0].assert_called_once_with(self.test.odl_variables_file)
         if len(args) > 1:
             variable = [
                 'KEYSTONEURL:{}://{}'.format(
@@ -214,15 +214,17 @@ class ODLMainTesting(ODLTesting):
     def test_no_odlrestconfport(self):
         self._test_no_keyword('odlrestconfport')
 
-    def test_set_vars_ko(self):
+    @mock.patch('os.path.isfile', return_value=True)
+    def test_set_vars_ko(self, *args):
         with mock.patch.object(self.test, 'set_robotframework_vars',
                                return_value=False) as mock_object:
             self._test_run_suites(testcase.TestCase.EX_RUN_ERROR)
             mock_object.assert_called_once_with(
                 self._odl_username, self._odl_password)
+        args[0].assert_called_once_with(self.test.odl_variables_file)
 
     @mock.patch('robot.run', side_effect=RobotError)
-    @mock.patch('os.makedirs')
+    @mock.patch('os.path.isfile', return_value=True)
     def test_run_ko(self, *args):
         with mock.patch.object(self.test, 'set_robotframework_vars',
                                return_value=True), \
@@ -230,7 +232,7 @@ class ODLMainTesting(ODLTesting):
             self._test_run_suites(testcase.TestCase.EX_RUN_ERROR, *args)
 
     @mock.patch('robot.run')
-    @mock.patch('os.makedirs')
+    @mock.patch('os.path.isfile', return_value=True)
     def test_parse_results_ko(self, *args):
         with mock.patch.object(self.test, 'set_robotframework_vars',
                                return_value=True), \
@@ -239,15 +241,24 @@ class ODLMainTesting(ODLTesting):
             self._test_run_suites(testcase.TestCase.EX_RUN_ERROR, *args)
 
     @mock.patch('robot.run')
-    @mock.patch('os.makedirs')
+    @mock.patch('os.path.isfile', return_value=True)
     def test_ok(self, *args):
         with mock.patch.object(self.test, 'set_robotframework_vars',
                                return_value=True), \
                 mock.patch.object(self.test, 'parse_results'):
             self._test_run_suites(testcase.TestCase.EX_OK, *args)
 
+    @mock.patch('robot.run')
+    @mock.patch('os.path.isfile', return_value=False)
+    def test_ok_no_creds(self, *args):
+        with mock.patch.object(self.test, 'set_robotframework_vars',
+                               return_value=True) as mock_method, \
+                mock.patch.object(self.test, 'parse_results'):
+            self._test_run_suites(testcase.TestCase.EX_OK, *args)
+            mock_method.assert_not_called()
+
     @mock.patch('robot.run', return_value=1)
-    @mock.patch('os.makedirs')
+    @mock.patch('os.path.isfile', return_value=True)
     def test_testcases_in_failure(self, *args):
         with mock.patch.object(self.test, 'set_robotframework_vars',
                                return_value=True), \