Repository: ambari Updated Branches: refs/heads/trunk 6734ea3de -> 405edb289
AMBARI-8827. Failure in pyhton unit tests for ambari-server (aonishuk) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/405edb28 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/405edb28 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/405edb28 Branch: refs/heads/trunk Commit: 405edb28951fce001cfedae92e119b0acfcada68 Parents: 6734ea3 Author: Andrew Onishuk <[email protected]> Authored: Fri Dec 19 19:58:52 2014 +0200 Committer: Andrew Onishuk <[email protected]> Committed: Fri Dec 19 19:58:52 2014 +0200 ---------------------------------------------------------------------- .../test/python/ambari_agent/TestActionQueue.py | 4 +- .../test/python/ambari_agent/TestHostInfo.py | 5 +- .../src/main/python/ambari_commons/os_check.py | 75 ++++++++++---------- ambari-server/src/test/python/TestOSCheck.py | 18 ++--- 4 files changed, 50 insertions(+), 52 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/405edb28/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py ---------------------------------------------------------------------- diff --git a/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py b/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py index 9aeb024..c8d90ab 100644 --- a/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py +++ b/ambari-agent/src/test/python/ambari_agent/TestActionQueue.py @@ -36,7 +36,7 @@ from ambari_agent.PythonExecutor import PythonExecutor from ambari_agent.CommandStatusDict import CommandStatusDict from ambari_agent.ActualConfigHandler import ActualConfigHandler from FileCache import FileCache -import ambari_commons.os_check +from ambari_commons import OSCheck class TestActionQueue(TestCase): def setUp(self): @@ -275,7 +275,7 @@ class TestActionQueue(TestCase): actionQueue.process_command(execution_command) self.assertTrue(print_exc_mock.called) - @patch.object(ambari_commons.os_check,"os_distribution", new=lambda: ('Suse','11','Final')) + @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = ('Suse','11','Final'))) @patch("__builtin__.open") @patch.object(ActionQueue, "status_update_callback") def test_execute_command(self, status_update_callback_mock, open_mock): http://git-wip-us.apache.org/repos/asf/ambari/blob/405edb28/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py ---------------------------------------------------------------------- diff --git a/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py b/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py index a5f085b..a7f3435 100644 --- a/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py +++ b/ambari-agent/src/test/python/ambari_agent/TestHostInfo.py @@ -40,6 +40,7 @@ with patch("platform.linux_distribution", return_value = ('redhat','11','Final') import ambari_commons @patch.object(System, "os_family", new = 'redhat') [email protected](OSCheck, "os_distribution", new = MagicMock(return_value = ('redhat','11','Final'))) class TestHostInfo(TestCase): @patch.object(OSCheck, 'get_os_family') @@ -219,7 +220,6 @@ class TestHostInfo(TestCase): for item in ['/etc/conf/a1', '/var/lib/a1', '/etc/conf/b1', '/var/lib/b1']: self.assertTrue(item in names) - @patch("ambari_commons.os_check.os_distribution", new=MagicMock(return_value=('redhat','11','Final'))) @patch('os.path.exists') @patch('__builtin__.open') def test_checkUsers(self, builtins_open_mock, path_mock): @@ -416,7 +416,6 @@ class TestHostInfo(TestCase): result = hostInfo.hadoopVarLogCount() self.assertEquals(result, 0) - @patch("ambari_commons.os_check.os_distribution", new=MagicMock(return_value=('redhat','11','Final'))) @patch("os.listdir", create=True, autospec=True) @patch("__builtin__.open", create=True, autospec=True) @patch("pwd.getpwuid", create=True, autospec=True) @@ -499,7 +498,6 @@ class TestHostInfo(TestCase): self.assertEquals(result[0]['name'], 'service1') self.assertTrue(len(result[0]['desc']) > 0) - @patch("ambari_commons.os_check.os_distribution", new=MagicMock(return_value=('redhat','11','Final'))) @patch("os.path.exists") @patch("os.listdir", create=True, autospec=True) @patch("os.path.islink") @@ -567,7 +565,6 @@ class TestHostInfo(TestCase): run_os_command_mock.return_value = 3, "", "" self.assertFalse(Firewall().getFirewallObject().check_iptables()) - @patch("ambari_commons.os_check.os_distribution", new=MagicMock(return_value=('redhat','11','Final'))) @patch("os.path.isfile") @patch('__builtin__.open') def test_transparent_huge_page(self, open_mock, os_path_isfile_mock): http://git-wip-us.apache.org/repos/asf/ambari/blob/405edb28/ambari-common/src/main/python/ambari_commons/os_check.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/ambari_commons/os_check.py b/ambari-common/src/main/python/ambari_commons/os_check.py index 503f933..39d8202 100644 --- a/ambari-common/src/main/python/ambari_commons/os_check.py +++ b/ambari-common/src/main/python/ambari_commons/os_check.py @@ -70,41 +70,6 @@ VER_NT_WORKSTATION = 1 VER_NT_DOMAIN_CONTROLLER = 2 VER_NT_SERVER = 3 - -def os_distribution(): - if platform.system() == SYSTEM_WINDOWS: - # windows distribution - major, minor, build, code = _get_windows_version() - if code in (VER_NT_DOMAIN_CONTROLLER, VER_NT_SERVER): - # we are on server os - release = None - if major == 6: - if minor == 0: - release = REL_2008 - elif minor == 1: - release = REL_2008R2 - elif minor == 2: - release = REL_2012 - elif minor == 3: - release = REL_2012R2 - distribution = (release, "{0}.{1}".format(major,minor),"WindowsServer") - else: - # we are on unsupported desktop os - distribution = ("", "","") - else: - # linux distribution - PYTHON_VER = sys.version_info[0] * 10 + sys.version_info[1] - - if PYTHON_VER < 26: - distribution = platform.dist() - elif os.path.exists('/etc/redhat-release'): - distribution = platform.dist() - else: - distribution = platform.linux_distribution() - - return distribution - - class OS_CONST_TYPE(type): # Declare here os type mapping @@ -157,6 +122,40 @@ class OSConst: class OSCheck: @staticmethod + def os_distribution(): + if platform.system() == SYSTEM_WINDOWS: + # windows distribution + major, minor, build, code = _get_windows_version() + if code in (VER_NT_DOMAIN_CONTROLLER, VER_NT_SERVER): + # we are on server os + release = None + if major == 6: + if minor == 0: + release = REL_2008 + elif minor == 1: + release = REL_2008R2 + elif minor == 2: + release = REL_2012 + elif minor == 3: + release = REL_2012R2 + distribution = (release, "{0}.{1}".format(major,minor),"WindowsServer") + else: + # we are on unsupported desktop os + distribution = ("", "","") + else: + # linux distribution + PYTHON_VER = sys.version_info[0] * 10 + sys.version_info[1] + + if PYTHON_VER < 26: + distribution = platform.dist() + elif os.path.exists('/etc/redhat-release'): + distribution = platform.dist() + else: + distribution = platform.linux_distribution() + + return distribution + + @staticmethod def get_os_type(): """ Return values: @@ -168,7 +167,7 @@ class OSCheck: """ # Read content from /etc/*-release file # Full release name - dist = os_distribution() + dist = OSCheck.os_distribution() operatingSystem = dist[0].lower() # special cases @@ -209,7 +208,7 @@ class OSCheck: """ # Read content from /etc/*-release file # Full release name - dist = os_distribution() + dist = OSCheck.os_distribution() dist = dist[1] if dist: @@ -233,7 +232,7 @@ class OSCheck: In case cannot detect raises exception. """ - dist = os_distribution() + dist = OSCheck.os_distribution() dist = dist[2].lower() if dist: http://git-wip-us.apache.org/repos/asf/ambari/blob/405edb28/ambari-server/src/test/python/TestOSCheck.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/TestOSCheck.py b/ambari-server/src/test/python/TestOSCheck.py index 1f60964..026f747 100644 --- a/ambari-server/src/test/python/TestOSCheck.py +++ b/ambari-server/src/test/python/TestOSCheck.py @@ -26,6 +26,7 @@ import tempfile import sys from unittest import TestCase from mock.mock import patch +from mock.mock import MagicMock from ambari_commons import OSCheck import os_check_type @@ -33,12 +34,13 @@ import os_check_type utils = __import__('ambari_server.utils').utils # We have to use this import HACK because the filename contains a dash with patch("platform.linux_distribution", return_value = ('Suse','11','Final')): - with patch.object(utils, "get_postgre_hba_dir"): - ambari_server = __import__('ambari-server') + with patch.object(OSCheck, "os_distribution", return_value = ('Suse','11','Final')): + with patch.object(utils, "get_postgre_hba_dir"): + ambari_server = __import__('ambari-server') class TestOSCheck(TestCase): - @patch("platform.linux_distribution") + @patch.object(OSCheck, "os_distribution") @patch("os.path.exists") def test_get_os_type(self, mock_exists, mock_linux_distribution): @@ -87,7 +89,7 @@ class TestOSCheck(TestCase): result = OSCheck.get_os_type() self.assertEquals(result, 'redhat') - @patch("platform.linux_distribution") + @patch.object(OSCheck, "os_distribution") @patch("os.path.exists") def test_get_os_family(self, mock_exists, mock_linux_distribution): @@ -131,7 +133,7 @@ class TestOSCheck(TestCase): self.assertEquals("Cannot detect os type. Exiting...", str(e)) pass - @patch("platform.linux_distribution") + @patch.object(OSCheck, "os_distribution") def test_get_os_version(self, mock_linux_distribution): # 1 - Any system @@ -149,7 +151,7 @@ class TestOSCheck(TestCase): self.assertEquals("Cannot detect os version. Exiting...", str(e)) pass - @patch("platform.linux_distribution") + @patch.object(OSCheck, "os_distribution") def test_get_os_major_version(self, mock_linux_distribution): # 1 @@ -162,7 +164,7 @@ class TestOSCheck(TestCase): result = OSCheck.get_os_major_version() self.assertEquals(result, '11') - @patch("platform.linux_distribution") + @patch.object(OSCheck, "os_distribution") def test_get_os_release_name(self, mock_linux_distribution): # 1 - Any system @@ -226,7 +228,7 @@ class TestOSCheck(TestCase): result = ambari_server.update_ambari_properties() self.assertEquals(result, 0) - @patch("platform.linux_distribution") + @patch.object(OSCheck, "os_distribution") def test_os_type_check(self, mock_linux_distribution): # 1 - server and agent os compatible
