|
@@ -24,12 +24,21 @@ import logging
|
|
|
import unittest
|
|
|
import subprocess
|
|
|
import socket
|
|
|
+import platform
|
|
|
from mock.mock import patch
|
|
|
from mock.mock import MagicMock
|
|
|
from mock.mock import create_autospec
|
|
|
import ambari_commons
|
|
|
+from ambari_commons import OSCheck
|
|
|
+import os
|
|
|
+from only_for_platform import only_for_platform, get_platform, PLATFORM_WINDOWS, PLATFORM_LINUX
|
|
|
|
|
|
-with patch("platform.linux_distribution", return_value = ('redhat','11','Final')):
|
|
|
+if get_platform() != PLATFORM_WINDOWS:
|
|
|
+ os_distro_value = ('Suse','11','Final')
|
|
|
+else:
|
|
|
+ os_distro_value = ('win2012serverr2','6.3','WindowsServer')
|
|
|
+
|
|
|
+with patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value)):
|
|
|
from ambari_agent.HostCheckReportFileHandler import HostCheckReportFileHandler
|
|
|
from ambari_agent.PackagesAnalyzer import PackagesAnalyzer
|
|
|
from ambari_agent.HostInfo import HostInfo, HostInfoLinux
|
|
@@ -39,10 +48,13 @@ with patch("platform.linux_distribution", return_value = ('redhat','11','Final')
|
|
|
from ambari_commons import OSCheck, Firewall, FirewallChecks ,OSConst
|
|
|
import ambari_commons
|
|
|
|
|
|
-@patch.object(System, "os_family", new = 'redhat')
|
|
|
-@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = ('redhat','11','Final')))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
|
|
|
class TestHostInfo(TestCase):
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch.object(OSCheck, 'get_os_family')
|
|
|
@patch.object(PackagesAnalyzer, 'subprocessWithTimeout')
|
|
|
def test_analyze_zypper_out(self, spwt_mock, get_os_family_mock):
|
|
@@ -74,6 +86,7 @@ class TestHostInfo(TestCase):
|
|
|
self.assertTrue(installedPackages[3][2], "HDP")
|
|
|
self.assertTrue(installedPackages[6][1], "11-38.13.9")
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
def test_getReposToRemove(self):
|
|
|
l1 = ["Hortonworks Data Platform Utils Version - HDP-UTILS-1.1.0.15", "Ambari 1.x", "HDP"]
|
|
|
l2 = ["Ambari", "HDP-UTIL"]
|
|
@@ -87,6 +100,7 @@ class TestHostInfo(TestCase):
|
|
|
self.assertTrue(1, len(l3))
|
|
|
self.assertEqual(l3[0], "HDP-1.3.0")
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
def test_perform_package_analysis(self):
|
|
|
packageAnalyzer = PackagesAnalyzer()
|
|
|
installedPackages = [
|
|
@@ -134,6 +148,7 @@ class TestHostInfo(TestCase):
|
|
|
for package in expected:
|
|
|
self.assertTrue(package in allPackages)
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch.object(OSCheck, 'get_os_family')
|
|
|
@patch.object(PackagesAnalyzer, 'subprocessWithTimeout')
|
|
|
def test_analyze_yum_output(self, subprocessWithTimeout_mock, get_os_family_mock):
|
|
@@ -190,11 +205,12 @@ class TestHostInfo(TestCase):
|
|
|
"koji-override-0/$releasever"])
|
|
|
self.assertFalse(package['repoName'] in ["AMBARI.dev-1.x"])
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch.object(OSCheck, 'get_os_family')
|
|
|
@patch.object(PackagesAnalyzer, 'subprocessWithTimeout')
|
|
|
def test_analyze_yum_output_err(self, subprocessWithTimeout_mock, get_os_family_mock):
|
|
|
get_os_family_mock.return_value = OSConst.REDHAT_FAMILY
|
|
|
-
|
|
|
+
|
|
|
packageAnalyzer = PackagesAnalyzer()
|
|
|
|
|
|
result = {}
|
|
@@ -211,15 +227,19 @@ class TestHostInfo(TestCase):
|
|
|
@patch('os.path.exists')
|
|
|
def test_checkFolders(self, path_mock):
|
|
|
path_mock.return_value = True
|
|
|
- hostInfo = HostInfoLinux()
|
|
|
+ hostInfo = HostInfo()
|
|
|
results = []
|
|
|
- existingUsers = [{'name':'a1', 'homeDir':'/home/a1'}, {'name':'b1', 'homeDir':'/home/b1'}]
|
|
|
- hostInfo.checkFolders(["/etc/conf", "/var/lib", "/home/"], ["a1", "b1"], existingUsers, results)
|
|
|
+ existingUsers = [{'name':'a1', 'homeDir':os.path.join('home', 'a1')}, {'name':'b1', 'homeDir':os.path.join('home', 'b1')}]
|
|
|
+ hostInfo.checkFolders([os.path.join("etc", "conf"), os.path.join("var", "lib"), "home"], ["a1", "b1"], existingUsers, results)
|
|
|
+ print results
|
|
|
self.assertEqual(4, len(results))
|
|
|
names = [i['name'] for i in results]
|
|
|
- for item in ['/etc/conf/a1', '/var/lib/a1', '/etc/conf/b1', '/var/lib/b1']:
|
|
|
+ for item in [os.path.join('etc','conf','a1'), os.path.join('var','lib','a1'), os.path.join('etc','conf','b1'), os.path.join('var','lib','b1')]:
|
|
|
+
|
|
|
self.assertTrue(item in names)
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
+ @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = os_distro_value))
|
|
|
@patch('os.path.exists')
|
|
|
@patch('__builtin__.open')
|
|
|
def test_checkUsers(self, builtins_open_mock, path_mock):
|
|
@@ -241,6 +261,7 @@ class TestHostInfo(TestCase):
|
|
|
self.assertTrue(newlist[1]['status'], "Invalid home directory")
|
|
|
print(path_mock.mock_calls)
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch.object(OSCheck, "get_os_type")
|
|
|
@patch('os.umask')
|
|
|
@patch.object(HostCheckReportFileHandler, 'writeHostCheckFile')
|
|
@@ -283,7 +304,7 @@ class TestHostInfo(TestCase):
|
|
|
self.assertTrue(0 < len(dict['installedPackages']))
|
|
|
self.assertTrue('agentTimeStampAtReporting' in dict['hostHealth'])
|
|
|
|
|
|
-
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch.object(OSCheck, "get_os_type")
|
|
|
@patch('os.umask')
|
|
|
@patch.object(HostCheckReportFileHandler, 'writeHostCheckFile')
|
|
@@ -386,7 +407,7 @@ class TestHostInfo(TestCase):
|
|
|
result = host.dirType("/home")
|
|
|
self.assertEquals(result, 'unknown')
|
|
|
|
|
|
-
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch("os.path.exists")
|
|
|
@patch("glob.glob")
|
|
|
def test_hadoopVarRunCount(self, glob_glob_mock, os_path_exists_mock):
|
|
@@ -401,7 +422,7 @@ class TestHostInfo(TestCase):
|
|
|
result = hostInfo.hadoopVarRunCount()
|
|
|
self.assertEquals(result, 0)
|
|
|
|
|
|
-
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch("os.path.exists")
|
|
|
@patch("glob.glob")
|
|
|
def test_hadoopVarLogCount(self, glob_glob_mock, os_path_exists_mock):
|
|
@@ -416,6 +437,8 @@ class TestHostInfo(TestCase):
|
|
|
result = hostInfo.hadoopVarLogCount()
|
|
|
self.assertEquals(result, 0)
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
+ @patch.object(OSCheck, "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)
|
|
@@ -436,7 +459,7 @@ class TestHostInfo(TestCase):
|
|
|
self.assertTrue(list[0]['hadoop'])
|
|
|
self.assertEquals(list[0]['user'], 'user')
|
|
|
|
|
|
-
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch("subprocess.Popen")
|
|
|
@patch.object(Hardware, 'extractMountInfo')
|
|
|
def test_osdiskAvailableSpace(self, extract_mount_info_mock, subproc_popen_mock):
|
|
@@ -454,7 +477,7 @@ class TestHostInfo(TestCase):
|
|
|
|
|
|
self.assertEquals(result, {})
|
|
|
|
|
|
-
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch.object(OSCheck, "get_os_type")
|
|
|
@patch("subprocess.Popen")
|
|
|
def test_checkLiveServices(self, subproc_popen, get_os_type_method):
|
|
@@ -498,6 +521,8 @@ class TestHostInfo(TestCase):
|
|
|
self.assertEquals(result[0]['name'], 'service1')
|
|
|
self.assertTrue(len(result[0]['desc']) > 0)
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
+ @patch.object(OSCheck, "os_distribution", new = MagicMock(return_value = ('redhat','11','Final')))
|
|
|
@patch("os.path.exists")
|
|
|
@patch("os.listdir", create=True, autospec=True)
|
|
|
@patch("os.path.islink")
|
|
@@ -519,6 +544,7 @@ class TestHostInfo(TestCase):
|
|
|
self.assertEquals(result[0]['name'], 'config1')
|
|
|
self.assertEquals(result[0]['target'], 'real_path_to_conf')
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch.object(OSCheck, "get_os_family")
|
|
|
@patch.object(OSCheck, "get_os_type")
|
|
|
@patch.object(OSCheck, "get_os_major_version")
|
|
@@ -554,7 +580,7 @@ class TestHostInfo(TestCase):
|
|
|
|
|
|
self.assertFalse(hostInfo.checkReverseLookup())
|
|
|
|
|
|
-
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
@patch.object(OSCheck, "get_os_family")
|
|
|
@patch.object(OSCheck, "get_os_type")
|
|
|
@patch.object(OSCheck, "get_os_major_version")
|
|
@@ -565,6 +591,8 @@ class TestHostInfo(TestCase):
|
|
|
run_os_command_mock.return_value = 3, "", ""
|
|
|
self.assertFalse(Firewall().getFirewallObject().check_iptables())
|
|
|
|
|
|
+ @only_for_platform(PLATFORM_LINUX)
|
|
|
+ @patch.object(OSCheck, "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):
|