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
-mock.patch('logging.FileHandler').start() # noqa
from functest.utils import functest_utils
self.installer = 'test_installer'
self.scenario = 'test_scenario'
self.build_tag = 'jenkins-functest-fuel-opnfv-jump-2-daily-master-190'
+ self.build_tag_week = 'jenkins-functest-fuel-baremetal-weekly-master-8'
self.version = 'master'
self.node_name = 'test_node_name'
self.project = 'test_project'
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()
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]
self.assertEqual(functest_utils.get_installer_type(),
self.installer)
- @mock.patch('functest.utils.functest_utils.logger.error')
- def test_get_scenario_failed(self, mock_logger_error):
+ @mock.patch('functest.utils.functest_utils.logger.info')
+ def test_get_scenario_failed(self, mock_logger_info):
with mock.patch.dict(os.environ,
{},
clear=True):
self.assertEqual(functest_utils.get_scenario(),
- "Unknown_scenario")
- mock_logger_error.assert_called_once_with("Impossible to retrieve"
- " the scenario")
+ "os-nosdn-nofeature-noha")
+ mock_logger_info.assert_called_once_with("Impossible to retrieve "
+ "the scenario.Use "
+ "default "
+ "os-nosdn-nofeature-noha")
def test_get_scenario_default(self):
with mock.patch.dict(os.environ,
self.scenario)
@mock.patch('functest.utils.functest_utils.get_build_tag')
- def test_get_version_default(self, mock_get_build_tag):
+ def test_get_version_daily_job(self, mock_get_build_tag):
mock_get_build_tag.return_value = self.build_tag
self.assertEqual(functest_utils.get_version(), self.version)
+ @mock.patch('functest.utils.functest_utils.get_build_tag')
+ def test_get_version_weekly_job(self, mock_get_build_tag):
+ mock_get_build_tag.return_value = self.build_tag_week
+ self.assertEqual(functest_utils.get_version(), self.version)
+
+ @mock.patch('functest.utils.functest_utils.get_build_tag')
+ def test_get_version_with_dummy_build_tag(self, mock_get_build_tag):
+ mock_get_build_tag.return_value = 'whatever'
+ self.assertEqual(functest_utils.get_version(), 'unknown')
+
@mock.patch('functest.utils.functest_utils.get_build_tag')
def test_get_version_unknown(self, mock_get_build_tag):
mock_get_build_tag.return_value = "unknown_build_tag"
self.assertEqual(functest_utils.get_version(), "unknown")
- @mock.patch('functest.utils.functest_utils.logger.error')
- def test_get_pod_name_failed(self, mock_logger_error):
+ @mock.patch('functest.utils.functest_utils.logger.info')
+ def test_get_pod_name_failed(self, mock_logger_info):
with mock.patch.dict(os.environ,
{},
clear=True):
self.assertEqual(functest_utils.get_pod_name(),
"unknown-pod")
- mock_logger_error.assert_called_once_with("Unable to retrieve "
- "the POD name from "
- "environment. Using "
- "pod name 'unknown-pod'")
+ mock_logger_info.assert_called_once_with("Unable to retrieve "
+ "the POD name from "
+ "environment. Using "
+ "pod name 'unknown-pod'")
def test_get_pod_name_default(self):
with mock.patch.dict(os.environ,
self.assertEqual(functest_utils.get_pod_name(),
self.node_name)
- @mock.patch('functest.utils.functest_utils.logger.error')
- def test_get_build_tag_failed(self, mock_logger_error):
+ @mock.patch('functest.utils.functest_utils.logger.info')
+ def test_get_build_tag_failed(self, mock_logger_info):
with mock.patch.dict(os.environ,
{},
clear=True):
self.assertEqual(functest_utils.get_build_tag(),
- "unknown_build_tag")
- mock_logger_error.assert_called_once_with("Impossible to retrieve"
- " the build tag")
+ "none")
+ mock_logger_info.assert_called_once_with("Impossible to retrieve"
+ " the build tag")
def test_get_build_tag_default(self):
with mock.patch.dict(os.environ,
self.assertEqual(functest_utils.get_build_tag(),
self.build_tag)
+ def test_get_db_url_env_var(self):
+ with mock.patch.dict(os.environ,
+ {'TEST_DB_URL': self.db_url_env,
+ 'CONFIG_FUNCTEST_YAML':
+ "./functest/ci/config_functest.yaml"},
+ clear=True):
+ self.assertEqual(functest_utils.get_db_url(),
+ self.db_url_env)
+
@mock.patch('functest.utils.functest_utils.get_functest_config')
- def test_get_db_url(self, mock_get_functest_config):
+ def test_get_db_url_default(self, mock_get_functest_config):
mock_get_functest_config.return_value = self.db_url
self.assertEqual(functest_utils.get_db_url(), self.db_url)
mock_get_functest_config.assert_called_once_with('results.test_db_url')
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 +
"\'"))
def test_push_results_to_db_missing_buildtag(self):
self._test_push_results_to_db_missing_env('BUILD_TAG')
- def test_push_results_to_db_incorrect_buildtag(self):
- dic = self._get_env_dict(None)
- dic['BUILD_TAG'] = 'incorrect_build_tag'
- with mock.patch('functest.utils.functest_utils.get_db_url',
- return_value=self.db_url), \
- mock.patch.dict(os.environ,
- dic,
- clear=True), \
- mock.patch('functest.utils.functest_utils.logger.error') \
- as mock_logger_error:
- self.assertFalse(functest_utils.
- push_results_to_db(self.project, self.case_name,
- self.start_date,
- self.stop_date,
- self.criteria, self.details))
- mock_logger_error.assert_called_once_with("Please fix BUILD_TAG"
- " env var: incorrect_"
- "build_tag")
-
def test_push_results_to_db_request_post_failed(self):
dic = self._get_env_dict(None)
with mock.patch('functest.utils.functest_utils.get_db_url',
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"
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):
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']
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:])
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
):
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
@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_'
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:
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
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):
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
"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