Merge "Add flavor creation in functest env prepare"
[functest.git] / functest / tests / unit / odl / test_odl.py
index 3878337..810b359 100644 (file)
@@ -15,10 +15,10 @@ import StringIO
 import unittest
 
 from keystoneauth1.exceptions import auth_plugins
-from robot.errors import RobotError
+from robot.errors import DataError, RobotError
 from robot.result import testcase
+from robot.utils.robottime import timestamp_to_secs
 
-mock.patch('logging.FileHandler').start()  # noqa
 from functest.core import testcase_base
 from functest.opnfv_tests.sdn.odl import odl
 
@@ -85,6 +85,27 @@ class ODLTesting(unittest.TestCase):
         visitor.visit_test(test)
         self.assertEqual(visitor.get_data(), [data])
 
+    @mock.patch('robot.api.ExecutionResult', side_effect=DataError)
+    def test_parse_results_raises_exceptions(self, *args):
+        with self.assertRaises(DataError):
+            self.test.parse_results()
+
+    def test_parse_results(self, *args):
+        config = {'name': 'dummy', 'starttime': '20161216 16:00:00.000',
+                  'endtime': '20161216 16:00:01.000', 'status': 'PASS'}
+        suite = mock.Mock()
+        suite.configure_mock(**config)
+        with mock.patch('robot.api.ExecutionResult',
+                        return_value=mock.Mock(suite=suite)):
+            self.test.parse_results()
+            self.assertEqual(self.test.criteria, config['status'])
+            self.assertEqual(self.test.start_time,
+                             timestamp_to_secs(config['starttime']))
+            self.assertEqual(self.test.stop_time,
+                             timestamp_to_secs(config['endtime']))
+            self.assertEqual(self.test.details,
+                             {'description': config['name'], 'tests': []})
+
     @mock.patch('fileinput.input', side_effect=Exception())
     def test_set_robotframework_vars_failed(self, *args):
         self.assertFalse(self.test.set_robotframework_vars())
@@ -315,7 +336,8 @@ class ODLTesting(unittest.TestCase):
                              testcase_base.TestcaseBase.EX_RUN_ERROR)
 
     def _test_run(self, status=testcase_base.TestcaseBase.EX_OK,
-                  exception=None, odlip="127.0.0.3", odlwebport="8080"):
+                  exception=None, odlip="127.0.0.3", odlwebport="8080",
+                  odlrestconfport="8181"):
         with mock.patch('functest.utils.openstack_utils.get_endpoint',
                         side_effect=self._fake_url_for):
             if exception:
@@ -324,9 +346,31 @@ class ODLTesting(unittest.TestCase):
                 self.test.main = mock.Mock(return_value=status)
             self.assertEqual(self.test.run(), status)
             self.test.main.assert_called_once_with(
+                odl.ODLTests.default_suites,
+                keystoneip=self._keystone_ip, neutronip=self._neutron_ip,
+                odlip=odlip, odlpassword=self._odl_password,
+                odlrestconfport=odlrestconfport,
+                odlusername=self._odl_username, odlwebport=odlwebport,
+                ospassword=self._os_password, ostenantname=self._os_tenantname,
+                osusername=self._os_username)
+
+    def _test_run_defining_multiple_suites(
+            self, suites,
+            status=testcase_base.TestcaseBase.EX_OK,
+            exception=None, odlip="127.0.0.3", odlwebport="8080",
+            odlrestconfport="8181"):
+        with mock.patch('functest.utils.openstack_utils.get_endpoint',
+                        side_effect=self._fake_url_for):
+            if exception:
+                self.test.main = mock.Mock(side_effect=exception)
+            else:
+                self.test.main = mock.Mock(return_value=status)
+            self.assertEqual(self.test.run(suites=suites), status)
+            self.test.main.assert_called_once_with(
+                suites,
                 keystoneip=self._keystone_ip, neutronip=self._neutron_ip,
                 odlip=odlip, odlpassword=self._odl_password,
-                odlrestconfport=self._odl_restconfport,
+                odlrestconfport=odlrestconfport,
                 odlusername=self._odl_username, odlwebport=odlwebport,
                 ospassword=self._os_password, ostenantname=self._os_tenantname,
                 osusername=self._os_username)
@@ -372,6 +416,14 @@ class ODLTesting(unittest.TestCase):
                        odlip=self._sdn_controller_ip,
                        odlwebport=self._odl_webport)
 
+    def test_run_redefining_suites(self):
+        os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
+        self._test_run_defining_multiple_suites(
+            [odl.ODLTests.basic_suite_dir],
+            testcase_base.TestcaseBase.EX_OK,
+            odlip=self._sdn_controller_ip,
+            odlwebport=self._odl_webport)
+
     def test_run_fuel(self):
         os.environ["INSTALLER_TYPE"] = "fuel"
         self._test_run(testcase_base.TestcaseBase.EX_OK,
@@ -388,7 +440,8 @@ class ODLTesting(unittest.TestCase):
         os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
         os.environ["INSTALLER_TYPE"] = "apex"
         self._test_run(testcase_base.TestcaseBase.EX_OK,
-                       odlip=self._sdn_controller_ip, odlwebport='8181')
+                       odlip=self._sdn_controller_ip, odlwebport='8081',
+                       odlrestconfport='8081')
 
     def test_run_joid_missing_sdn_controller(self):
         with mock.patch('functest.utils.openstack_utils.get_endpoint',