def test_hostinfo_register(self, get_transparentHuge_page_mock, cit_mock, hvlc_mock, hvrc_mock, eac_mock, cf_mock, jp_mock, cls_mock, cu_mock, gir_mock, gipbr_mock, gipbn_mock, gpd_mock, aip_mock, aap_mock, whcf_mock, os_umask_mock, get_os_type_mock): cit_mock.return_value = True hvlc_mock.return_value = 1 hvrc_mock.return_value = 1 gipbr_mock.return_value = ["pkg1"] gipbn_mock.return_value = ["pkg2"] gpd_mock.return_value = ["pkg1", "pkg2"] get_os_type_mock.return_value = "redhat" hostInfo = HostInfoLinux() dict = {} hostInfo.register(dict, True, True) self.verifyReturnedValues(dict) hostInfo.register(dict, True, False) self.verifyReturnedValues(dict) hostInfo.register(dict, False, True) self.verifyReturnedValues(dict) self.assertTrue(os_umask_mock.call_count == 2) cit_mock.reset_mock() hostInfo = HostInfoLinux() dict = {} hostInfo.register(dict, False, False) self.assertTrue(cit_mock.called) self.assertEqual(1, cit_mock.call_count)
def test_hostinfo_register_suse(self, cit_mock, hvlc_mock, hvrc_mock, eac_mock, cf_mock, jp_mock, cls_mock, cu_mock, gir_mock, gipbr_mock, gipbn_mock, gpd_mock, aip_mock, aap_mock, whcf_mock, os_umask_mock, get_os_type_mock): cit_mock.return_value = True hvlc_mock.return_value = 1 hvrc_mock.return_value = 1 gipbr_mock.return_value = ["pkg1"] gipbn_mock.return_value = ["pkg2"] gpd_mock.return_value = ["pkg1", "pkg2"] get_os_type_mock.return_value = "suse" hostInfo = HostInfoLinux() dict = {} hostInfo.register(dict, False, False) self.assertTrue(cit_mock.called) self.assertTrue(gir_mock.called) self.assertTrue(gpd_mock.called) self.assertTrue(aip_mock.called) self.assertTrue(aap_mock.called) self.assertTrue(os_umask_mock.called) self.assertTrue(whcf_mock.called) self.assertTrue(0 < len(dict['installedPackages'])) self.assertTrue('agentTimeStampAtReporting' in dict['hostHealth'])
def test_hostinfo_register_suse(self, jce_mock, cit_mock, hvlc_mock, hvrc_mock, eac_mock, cf_mock, jp_mock, cls_mock, cu_mock, get_packages_mock, whcf_mock, os_umask_mock, get_os_type_mock): m = MagicMock() m.get_package_details.return_value = ["pkg1", "pkg2"] m.get_installed_pkgs_by_names.return_value = ["pkg2"] m.get_installed_pkgs_by_repo.return_value = ["pkg1"] get_packages_mock.return_value = m cit_mock.return_value = True hvlc_mock.return_value = 1 hvrc_mock.return_value = 1 get_os_type_mock.return_value = "suse" hostInfo = HostInfoLinux() dict = {} hostInfo.register(dict, False, False) self.assertTrue(cit_mock.called) self.assertTrue(os_umask_mock.called) self.assertTrue(whcf_mock.called) self.assertTrue(jce_mock.called) self.assertTrue('agentTimeStampAtReporting' in dict['hostHealth'])
def test_checkUsers(self): hostInfo = HostInfoLinux() results = [] hostInfo.checkUsers(["root", "zxlmnap12341234"], results) self.assertEqual(1, len(results)) newlist = sorted(results, key=lambda k: k['name']) self.assertTrue(newlist[0]['name'], "root") self.assertTrue(newlist[0]['homeDir'], "/root") self.assertTrue(newlist[0]['status'], "Available")
def test_hadoopVarRunCount(self, glob_glob_mock, os_path_exists_mock): hostInfo = HostInfoLinux() os_path_exists_mock.return_value = True glob_glob_mock.return_value = ['pid1', 'pid2', 'pid3'] result = hostInfo.hadoopVarRunCount() self.assertEquals(result, 3) os_path_exists_mock.return_value = False result = hostInfo.hadoopVarRunCount() self.assertEquals(result, 0)
def test_hadoopVarRunCount(self, glob_glob_mock, os_path_exists_mock): hostInfo = HostInfoLinux() os_path_exists_mock.return_value = True glob_glob_mock.return_value = ['pid1','pid2','pid3'] result = hostInfo.hadoopVarRunCount() self.assertEquals(result, 3) os_path_exists_mock.return_value = False result = hostInfo.hadoopVarRunCount() self.assertEquals(result, 0)
def test_hadoopVarLogCount(self, glob_glob_mock, os_path_exists_mock): hostInfo = HostInfoLinux() os_path_exists_mock.return_value = True glob_glob_mock.return_value = ['log1', 'log2'] result = hostInfo.hadoopVarLogCount() self.assertEquals(result, 2) os_path_exists_mock.return_value = False result = hostInfo.hadoopVarLogCount() self.assertEquals(result, 0)
def test_hadoopVarLogCount(self, glob_glob_mock, os_path_exists_mock): hostInfo = HostInfoLinux() os_path_exists_mock.return_value = True glob_glob_mock.return_value = ['log1','log2'] result = hostInfo.hadoopVarLogCount() self.assertEquals(result, 2) os_path_exists_mock.return_value = False result = hostInfo.hadoopVarLogCount() self.assertEquals(result, 0)
def test_osdiskAvailableSpace(self, extract_mount_info_mock, subproc_popen_mock): hostInfo = HostInfoLinux() p = MagicMock() p.communicate.return_value = ['some'] subproc_popen_mock.return_value = p extract_mount_info_mock.return_value = {'info' : 'info'} result = hostInfo.osdiskAvailableSpace('') self.assertTrue(result['info'], 'info') p.communicate.return_value = '' result = hostInfo.osdiskAvailableSpace('') self.assertEquals(result, {})
def test_osdiskAvailableSpace(self, extract_mount_info_mock, subproc_popen_mock): hostInfo = HostInfoLinux() p = MagicMock() p.communicate.return_value = ['some'] subproc_popen_mock.return_value = p extract_mount_info_mock.return_value = {'info': 'info'} result = hostInfo.osdiskAvailableSpace('') self.assertTrue(result['info'], 'info') p.communicate.return_value = '' result = hostInfo.osdiskAvailableSpace('') self.assertEquals(result, {})
def test_getReposToRemove(self): l1 = [ "Hortonworks Data Platform Utils Version - HDP-UTILS-1.1.0.15", "Ambari 1.x", "HDP" ] l2 = ["Ambari", "HDP-UTIL"] hostInfo = HostInfoLinux() l3 = hostInfo.getReposToRemove(l1, l2) self.assertTrue(1, len(l3)) self.assertEqual(l3[0], "HDP") l1 = ["AMBARI.dev-1.x", "HDP-1.3.0"] l3 = hostInfo.getReposToRemove(l1, l2) self.assertTrue(1, len(l3)) self.assertEqual(l3[0], "HDP-1.3.0")
def test_javaProcs(self, pwd_getpwuid_mock, buitin_open_mock, os_listdir_mock): hostInfo = HostInfoLinux() openRead = MagicMock() openRead.read.return_value = '/java/;/hadoop/' buitin_open_mock.side_effect = [openRead, ['Uid: 22']] pwuid = MagicMock() pwd_getpwuid_mock.return_value = pwuid pwuid.pw_name = 'user' os_listdir_mock.return_value = ['1'] list = [] hostInfo.javaProcs(list) self.assertEquals(list[0]['command'], '/java/;/hadoop/') self.assertEquals(list[0]['pid'], 1) self.assertTrue(list[0]['hadoop']) self.assertEquals(list[0]['user'], 'user')
def verifyReturnedValues(self, dict): hostInfo = HostInfoLinux() self.assertEqual(dict['alternatives'], []) self.assertEqual(dict['stackFoldersAndFiles'], []) self.assertEqual(dict['existingUsers'], []) self.assertTrue(dict['firewallRunning']) self.assertEqual(dict['firewallName'], "iptables")
def test_etcAlternativesConf(self, os_path_realpath_mock, os_path_islink_mock, os_listdir_mock, os_path_exists_mock): hostInfo = HostInfoLinux() os_path_exists_mock.return_value = False result = hostInfo.etcAlternativesConf('',[]) self.assertEquals(result, []) os_path_exists_mock.return_value = True os_listdir_mock.return_value = ['config1'] os_path_islink_mock.return_value = True os_path_realpath_mock.return_value = 'real_path_to_conf' result = [] hostInfo.etcAlternativesConf('project', result) self.assertEquals(result[0]['name'], 'config1') self.assertEquals(result[0]['target'], 'real_path_to_conf')
def verifyReturnedValues(self, dict): hostInfo = HostInfoLinux() self.assertEqual(dict['alternatives'], []) self.assertEqual(dict['stackFoldersAndFiles'], []) self.assertEqual(dict['existingUsers'], []) self.assertEqual(dict['existingRepos'][0], hostInfo.RESULT_UNAVAILABLE) self.assertEqual(dict['installedPackages'], []) self.assertTrue(dict['iptablesIsRunning'])
def test_dirType(self, os_path_isfile_mock, os_path_isdir_mock, os_path_islink_mock, os_path_exists_mock): host = HostInfoLinux() os_path_exists_mock.return_value = False result = host.dirType("/home") self.assertEquals(result, 'not_exist') os_path_exists_mock.return_value = True os_path_islink_mock.return_value = True result = host.dirType("/home") self.assertEquals(result, 'sym_link') os_path_exists_mock.return_value = True os_path_islink_mock.return_value = False os_path_isdir_mock.return_value = True result = host.dirType("/home") self.assertEquals(result, 'directory') os_path_exists_mock.return_value = True os_path_islink_mock.return_value = False os_path_isdir_mock.return_value = False os_path_isfile_mock.return_value = True result = host.dirType("/home") self.assertEquals(result, 'file') os_path_exists_mock.return_value = True os_path_islink_mock.return_value = False os_path_isdir_mock.return_value = False os_path_isfile_mock.return_value = False result = host.dirType("/home") self.assertEquals(result, 'unknown')
def test_transparent_huge_page(self, open_mock, os_path_isfile_mock): context_manager_mock = MagicMock() open_mock.return_value = context_manager_mock file_mock = MagicMock() file_mock.read.return_value = "[never] always" enter_mock = MagicMock() enter_mock.return_value = file_mock exit_mock = MagicMock() setattr(context_manager_mock, '__enter__', enter_mock) setattr(context_manager_mock, '__exit__', exit_mock) hostInfo = HostInfoLinux() os_path_isfile_mock.return_value = True self.assertEqual("never", hostInfo.getTransparentHugePage()) os_path_isfile_mock.return_value = False self.assertEqual("", hostInfo.getTransparentHugePage())
def test_checkUsers(self, builtins_open_mock, path_mock): builtins_open_mock.return_value = [ "hdfs:x:493:502:Hadoop HDFS:/usr/lib/hadoop:/bin/bash", "zookeeper:x:492:502:ZooKeeper:/var/run/zookeeper:/bin/bash"] path_mock.side_effect = [False, True, False] hostInfo = HostInfoLinux() results = [] hostInfo.checkUsers(["zookeeper", "hdfs"], results) self.assertEqual(2, len(results)) newlist = sorted(results, key=lambda k: k['name']) self.assertTrue(newlist[0]['name'], "hdfs") self.assertTrue(newlist[1]['name'], "zookeeper") self.assertTrue(newlist[0]['homeDir'], "/usr/lib/hadoop") self.assertTrue(newlist[1]['homeDir'], "/var/run/zookeeper") self.assertTrue(newlist[0]['status'], "Available") self.assertTrue(newlist[1]['status'], "Invalid home directory") print(path_mock.mock_calls)
def test_transparent_huge_page(self, open_mock, os_path_isfile_mock): context_manager_mock = MagicMock() open_mock.return_value = context_manager_mock file_mock = MagicMock() file_mock.read.return_value = "[never] always" enter_mock = MagicMock() enter_mock.return_value = file_mock exit_mock = MagicMock() setattr( context_manager_mock, '__enter__', enter_mock ) setattr( context_manager_mock, '__exit__', exit_mock ) hostInfo = HostInfoLinux() os_path_isfile_mock.return_value = True self.assertEqual("never", hostInfo.getTransparentHugePage()) os_path_isfile_mock.return_value = False self.assertEqual("", hostInfo.getTransparentHugePage())
def test_hostinfo_register_suse(self, cit_mock, hvlc_mock, hvrc_mock, eac_mock, cf_mock, jp_mock, cls_mock, cu_mock, gir_mock, gipbr_mock, gipbn_mock, gpd_mock, aip_mock, aap_mock, whcf_mock, os_umask_mock, get_os_type_mock): cit_mock.return_value = True hvlc_mock.return_value = 1 hvrc_mock.return_value = 1 gipbr_mock.return_value = ["pkg1"] gipbn_mock.return_value = ["pkg2"] gpd_mock.return_value = ["pkg1", "pkg2"] get_os_type_mock.return_value = "suse" hostInfo = HostInfoLinux() dict = {} hostInfo.register(dict, False, False) self.assertTrue(cit_mock.called) self.assertTrue(os_umask_mock.called) self.assertTrue(whcf_mock.called) self.assertTrue('agentTimeStampAtReporting' in dict['hostHealth'])
def test_checkReverseLookup(self, gethostname_mock, gethostbyname_mock, getfqdn_mock): gethostname_mock.return_value = "test" gethostbyname_mock.side_effect = ["123.123.123.123", "123.123.123.123"] getfqdn_mock.return_value = "test.example.com" hostInfo = HostInfoLinux() self.assertTrue(hostInfo.checkReverseLookup()) gethostbyname_mock.assert_any_call("test.example.com") gethostbyname_mock.assert_any_call("test") self.assertEqual(2, gethostbyname_mock.call_count) gethostbyname_mock.side_effect = ["123.123.123.123", "231.231.231.231"] self.assertFalse(hostInfo.checkReverseLookup()) gethostbyname_mock.side_effect = ["123.123.123.123", "123.123.123.123"] getfqdn_mock.side_effect = socket.error() self.assertFalse(hostInfo.checkReverseLookup())
def test_checkLiveServices(self, subproc_popen, get_os_type_method): hostInfo = HostInfoLinux() p = MagicMock() p.returncode = 0 p.communicate.return_value = ('', 'err') subproc_popen.return_value = p result = [] get_os_type_method.return_value = 'redhat' hostInfo.checkLiveServices(['service1'], result) self.assertEquals(result[0]['status'], 'Healthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], '') self.assertEquals( str(subproc_popen.call_args_list), "[call(['service', 'service1', 'status'], stderr=-1, stdout=-1)]") p.returncode = 1 p.communicate.return_value = ('out', 'err') result = [] hostInfo.checkLiveServices(['service1'], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], 'out') p.communicate.return_value = ('', 'err') result = [] hostInfo.checkLiveServices(['service1'], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], 'err') p.communicate.return_value = ('', 'err', '') result = [] hostInfo.checkLiveServices(['service1'], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertTrue(len(result[0]['desc']) > 0)
def test_checkLiveServices(self, subproc_popen, get_os_type_method): hostInfo = HostInfoLinux() p = MagicMock() p.returncode = 0 p.communicate.return_value = ('', 'err') subproc_popen.return_value = p result = [] get_os_type_method.return_value = 'redhat' hostInfo.checkLiveServices(['service1'], result) self.assertEquals(result[0]['status'], 'Healthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], '') self.assertEquals(str(subproc_popen.call_args_list), "[call(['service', 'service1', 'status'], stderr=-1, stdout=-1)]") p.returncode = 1 p.communicate.return_value = ('out', 'err') result = [] hostInfo.checkLiveServices(['service1'], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], 'out') p.communicate.return_value = ('', 'err') result = [] hostInfo.checkLiveServices(['service1'], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], 'err') p.communicate.return_value = ('', 'err', '') result = [] hostInfo.checkLiveServices(['service1'], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertTrue(len(result[0]['desc']) > 0)
def test_hostinfo_register(self, get_transparentHuge_page_mock, cit_mock, hvlc_mock, hvrc_mock, eac_mock, cf_mock, jp_mock, cls_mock, cu_mock, get_packages_mock, whcf_mock, os_umask_mock, get_os_type_mock): m = MagicMock() m.get_package_details.return_value = ["pkg1", "pkg2"] m.get_installed_pkgs_by_names.return_value = ["pkg2"] m.get_installed_pkgs_by_repo.return_value = ["pkg1"] get_packages_mock.return_value = m cit_mock.return_value = True hvlc_mock.return_value = 1 hvrc_mock.return_value = 1 get_os_type_mock.return_value = "redhat" hostInfo = HostInfoLinux() dict = {} hostInfo.register(dict, True, True) self.verifyReturnedValues(dict) hostInfo.register(dict, True, False) self.verifyReturnedValues(dict) hostInfo.register(dict, False, True) self.verifyReturnedValues(dict) self.assertTrue(os_umask_mock.call_count == 2) cit_mock.reset_mock() hostInfo = HostInfoLinux() dict = {} hostInfo.register(dict, False, False) self.assertTrue(cit_mock.called) self.assertEqual(1, cit_mock.call_count)
def test_checkLiveServices(self, shell_call, get_os_type_method): get_os_type_method.return_value = 'redhat' hostInfo = HostInfoLinux() shell_call.return_value = (0, '', 'err') result = [] hostInfo.checkLiveServices([('service1', )], result) self.assertEquals(result[0]['desc'], '') self.assertEquals(result[0]['status'], 'Healthy') self.assertEquals(result[0]['name'], 'service1') shell_call.return_value = (1, 'out', 'err') result = [] hostInfo.checkLiveServices([('service1', )], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], 'out') shell_call.return_value = (1, '', 'err') result = [] hostInfo.checkLiveServices([('service1', )], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], 'err') shell_call.return_value = (1, '', 'err') result = [] hostInfo.checkLiveServices([('service1', )], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertTrue(len(result[0]['desc']) > 0) shell_call.return_value = (0, '', 'err') result = [] hostInfo.checkLiveServices([( 'service1', 'service2', )], result) self.assertEquals(result[0]['status'], 'Healthy') self.assertEquals(result[0]['name'], 'service1 or service2') self.assertEquals(result[0]['desc'], '') shell_call.return_value = (1, 'out', 'err') result = [] hostInfo.checkLiveServices([( 'service1', 'service2', )], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1 or service2') self.assertEquals(result[0]['desc'], 'out\nout') msg = 'thrown by shell call' shell_call.side_effect = Exception(msg) result = [] hostInfo.checkLiveServices([('service1', )], result) self.assertEquals(result[0]['status'], 'Unhealthy') self.assertEquals(result[0]['name'], 'service1') self.assertEquals(result[0]['desc'], msg)