Merge "Add Python3 support to the ODL testcase"
[functest.git] / functest / tests / unit / utils / test_functest_utils.py
index eb241e5..6714e55 100644 (file)
@@ -11,11 +11,11 @@ import logging
 import os
 import time
 import unittest
-import urllib2
 
 from git.exc import NoSuchPathError
 import mock
 import requests
+from six.moves import urllib
 
 from functest.tests.unit import test_utils
 from functest.utils import functest_utils
@@ -41,8 +41,8 @@ class FunctestUtilsTesting(unittest.TestCase):
         self.status = 'test_status'
         self.details = 'test_details'
         self.db_url = 'test_db_url'
-        self.success_rate = 2.0
-        self.criteria = 'test_criteria==2.0'
+        self.criteria = 50
+        self.result = 75
         self.start_date = 1482624000
         self.stop_date = 1482624000
         self.start_time = time.time()
@@ -54,38 +54,39 @@ class FunctestUtilsTesting(unittest.TestCase):
         self.cmd = 'test_cmd'
         self.output_file = 'test_output_file'
         self.testname = 'testname'
-        self.testcase_dict = {'name': 'testname', 'criteria': self.criteria}
+        self.testcase_dict = {'case_name': 'testname',
+                              'criteria': self.criteria}
         self.parameter = 'general.openstack.image_name'
         self.config_yaml = 'test_config_yaml-'
         self.db_url_env = 'http://foo/testdb'
         self.file_yaml = {'general': {'openstack': {'image_name':
                                                     'test_image_name'}}}
 
-    @mock.patch('urllib2.urlopen',
-                side_effect=urllib2.URLError('no host given'))
+    @mock.patch('six.moves.urllib.request.urlopen',
+                side_effect=urllib.error.URLError('no host given'))
     def test_check_internet_connectivity_failed(self, mock_method):
         self.assertFalse(functest_utils.check_internet_connectivity())
         mock_method.assert_called_once_with(self.url, timeout=self.timeout)
 
-    @mock.patch('urllib2.urlopen')
+    @mock.patch('six.moves.urllib.request.urlopen')
     def test_check_internet_connectivity_default(self, mock_method):
         self.assertTrue(functest_utils.check_internet_connectivity())
         mock_method.assert_called_once_with(self.url, timeout=self.timeout)
 
-    @mock.patch('urllib2.urlopen')
+    @mock.patch('six.moves.urllib.request.urlopen')
     def test_check_internet_connectivity_debian(self, mock_method):
         self.url = "https://www.debian.org/"
         self.assertTrue(functest_utils.check_internet_connectivity(self.url))
         mock_method.assert_called_once_with(self.url, timeout=self.timeout)
 
-    @mock.patch('urllib2.urlopen',
-                side_effect=urllib2.URLError('no host given'))
+    @mock.patch('six.moves.urllib.request.urlopen',
+                side_effect=urllib.error.URLError('no host given'))
     def test_download_url_failed(self, mock_url):
         self.assertFalse(functest_utils.download_url(self.url, self.dest_path))
 
-    @mock.patch('urllib2.urlopen')
+    @mock.patch('six.moves.urllib.request.urlopen')
     def test_download_url_default(self, mock_url):
-        with mock.patch("__builtin__.open", mock.mock_open()) as m, \
+        with mock.patch("six.moves.builtins.open", mock.mock_open()) as m, \
                 mock.patch('functest.utils.functest_utils.shutil.copyfileobj')\
                 as mock_sh:
             name = self.url.rsplit('/')[-1]
@@ -278,7 +279,7 @@ class FunctestUtilsTesting(unittest.TestCase):
                 as mock_logger_error:
             functest_utils.push_results_to_db(self.project, self.case_name,
                                               self.start_date, self.stop_date,
-                                              self.criteria, self.details)
+                                              self.result, self.details)
             mock_logger_error.assert_called_once_with("Please set env var: " +
                                                       str("\'" + env_var +
                                                           "\'"))
@@ -310,7 +311,7 @@ class FunctestUtilsTesting(unittest.TestCase):
                              push_results_to_db(self.project, self.case_name,
                                                 self.start_date,
                                                 self.stop_date,
-                                                self.criteria, self.details))
+                                                self.result, self.details))
             mock_logger_error.assert_called_once_with(test_utils.
                                                       RegexMatch("Pushing "
                                                                  "Result to"
@@ -333,7 +334,7 @@ class FunctestUtilsTesting(unittest.TestCase):
                              push_results_to_db(self.project, self.case_name,
                                                 self.start_date,
                                                 self.stop_date,
-                                                self.criteria, self.details))
+                                                self.result, self.details))
             self.assertTrue(mock_logger_error.called)
 
     def test_push_results_to_db_default(self):
@@ -348,7 +349,7 @@ class FunctestUtilsTesting(unittest.TestCase):
                             push_results_to_db(self.project, self.case_name,
                                                self.start_date,
                                                self.stop_date,
-                                               self.criteria, self.details))
+                                               self.result, self.details))
     readline = 0
     test_ip = ['10.1.23.4', '10.1.14.15', '10.1.16.15']
 
@@ -370,7 +371,7 @@ class FunctestUtilsTesting(unittest.TestCase):
         attrs = {'readline.side_effect': self.readline_side}
         m.configure_mock(**attrs)
 
-        with mock.patch("__builtin__.open") as mo:
+        with mock.patch("six.moves.builtins.open") as mo:
             mo.return_value = m
             self.assertEqual(functest_utils.get_resolvconf_ns(),
                              self.test_ip[1:])
@@ -398,7 +399,8 @@ class FunctestUtilsTesting(unittest.TestCase):
                                                      mock_logger_error):
         with mock.patch('functest.utils.functest_utils.subprocess.Popen') \
                 as mock_subproc_open, \
-                mock.patch('__builtin__.open', mock.mock_open()) as mopen:
+                mock.patch('six.moves.builtins.open',
+                           mock.mock_open()) as mopen:
 
             FunctestUtilsTesting.readline = 0
 
@@ -427,7 +429,8 @@ class FunctestUtilsTesting(unittest.TestCase):
                                                        ):
         with mock.patch('functest.utils.functest_utils.subprocess.Popen') \
                 as mock_subproc_open, \
-                mock.patch('__builtin__.open', mock.mock_open()) as mopen:
+                mock.patch('six.moves.builtins.open',
+                           mock.mock_open()) as mopen:
 
             FunctestUtilsTesting.readline = 0
 
@@ -502,7 +505,7 @@ class FunctestUtilsTesting(unittest.TestCase):
 
     @mock.patch('functest.utils.functest_utils.logger.error')
     def test_get_dict_by_test(self, mock_logger_error):
-        with mock.patch('__builtin__.open', mock.mock_open()), \
+        with mock.patch('six.moves.builtins.open', mock.mock_open()), \
                 mock.patch('functest.utils.functest_utils.yaml.safe_load') \
                 as mock_yaml, \
                 mock.patch('functest.utils.functest_utils.get_testcases_'
@@ -530,7 +533,7 @@ class FunctestUtilsTesting(unittest.TestCase):
 
     def test_get_parameter_from_yaml_failed(self):
         self.file_yaml['general'] = None
-        with mock.patch('__builtin__.open', mock.mock_open()), \
+        with mock.patch('six.moves.builtins.open', mock.mock_open()), \
                 mock.patch('functest.utils.functest_utils.yaml.safe_load') \
                 as mock_yaml, \
                 self.assertRaises(ValueError) as excep:
@@ -542,7 +545,7 @@ class FunctestUtilsTesting(unittest.TestCase):
                              self.parameter) in excep.exception)
 
     def test_get_parameter_from_yaml_default(self):
-        with mock.patch('__builtin__.open', mock.mock_open()), \
+        with mock.patch('six.moves.builtins.open', mock.mock_open()), \
                 mock.patch('functest.utils.functest_utils.yaml.safe_load') \
                 as mock_yaml:
             mock_yaml.return_value = self.file_yaml
@@ -565,7 +568,7 @@ class FunctestUtilsTesting(unittest.TestCase):
                 as mock_criteria:
             mock_criteria.return_value = self.criteria
             resp = functest_utils.check_success_rate(self.case_name,
-                                                     self.success_rate)
+                                                     self.result)
             self.assertEqual(resp, 'PASS')
 
     def test_check_success_rate_failed(self):
@@ -573,7 +576,7 @@ class FunctestUtilsTesting(unittest.TestCase):
                 as mock_criteria:
             mock_criteria.return_value = self.criteria
             resp = functest_utils.check_success_rate(self.case_name,
-                                                     3.0)
+                                                     0)
             self.assertEqual(resp, 'FAIL')
 
     # TODO: merge_dicts
@@ -585,7 +588,7 @@ class FunctestUtilsTesting(unittest.TestCase):
                          "functest/ci/testcases.yaml")
 
     def test_get_functest_yaml(self):
-        with mock.patch('__builtin__.open', mock.mock_open()), \
+        with mock.patch('six.moves.builtins.open', mock.mock_open()), \
                 mock.patch('functest.utils.functest_utils.yaml.safe_load') \
                 as mock_yaml:
             mock_yaml.return_value = self.file_yaml