def test_analyze_zypper_out(self, spwt_mock, hasZy_mock): packageAnalyzer = PackagesAnalyzer() stringToRead = """Refreshing service 'susecloud'. Loading repository data... Reading installed packages... S | Name | Type | Version | Arch | Repository --+-----------------------------------+---------+------------------------+--------+---------------------- i | ConsoleKit | package | 0.2.10-64.65.1 | x86_64 | SLES11-SP1-Updates i | gweb | package | 2.2.0-99 | noarch | Hortonworks Data Platform Utils Version - HDP-UTILS-1.1.0.15 i | hadoop | package | 1.2.0.1.3.0.0-107 | x86_64 | HDP i | hadoop-libhdfs | package | 1.2.0.1.3.0.0-107 | x86_64 | HDP i | ambari-server | package | 1.2.4.9-1 | noarch | Ambari 1.x i | hdp_mon_ganglia_addons | package | 1.2.4.9-1 | noarch | Ambari 1.x i | Minimal | pattern | 11-38.13.9 | x86_64 | SLES11-SP1""" result = {} result['out'] = stringToRead result['err'] = "" result['retCode'] = 0 spwt_mock.return_value = result hasZy_mock.return_value = True installedPackages = [] packageAnalyzer.allInstalledPackages(installedPackages) self.assertEqual(7, len(installedPackages)) self.assertTrue(installedPackages[1][0], "gweb") self.assertTrue(installedPackages[3][2], "HDP") self.assertTrue(installedPackages[6][1], "11-38.13.9")
def test_perform_package_analysis(self): packageAnalyzer = PackagesAnalyzer() installedPackages = [["hadoop-a", "2.3", "HDP"], ["zk", "3.1", "HDP"], ["webhcat", "3.1", "HDP"], ["hadoop-b", "2.3", "HDP-epel"], ["epel", "3.1", "HDP-epel"], ["epel-2", "3.1", "HDP-epel"], ["hadoop-c", "2.3", "Ambari"], ["ambari-s", "3.1", "Ambari"], ["nagios", "2.3", "NAGIOS"], ["rrd", "3.1", "RRD"], ["keeper-1", "2.3", "NAGIOS"], ["keeper-2", "3.1", "base"], ["def-def.x86", "2.2", "DEF.3"], ["def.1", "1.2", "NewDEF"]] availablePackages = [["hadoop-d", "2.3", "HDP"], ["zk-2", "3.1", "HDP"], ["pig", "3.1", "HDP"], ["epel-3", "2.3", "HDP-epel"], ["hadoop-e", "3.1", "HDP-epel"], ["ambari-a", "3.1", "Ambari"], ["keeper-3", "3.1", "base"]] packagesToLook = ["webhcat", "hadoop", "*-def"] reposToIgnore = ["ambari"] additionalPackages = ["nagios", "rrd"] repos = [] packageAnalyzer.getInstalledRepos( packagesToLook, installedPackages + availablePackages, reposToIgnore, repos) self.assertEqual(3, len(repos)) expected = ["HDP", "HDP-epel", "DEF.3"] for repo in expected: self.assertTrue(repo in repos) packagesInstalled = packageAnalyzer.getInstalledPkgsByRepo( repos, ["epel"], installedPackages) self.assertEqual(5, len(packagesInstalled)) expected = ["hadoop-a", "zk", "webhcat", "hadoop-b", "def-def.x86"] for repo in expected: self.assertTrue(repo in packagesInstalled) additionalPkgsInstalled = packageAnalyzer.getInstalledPkgsByNames( additionalPackages, installedPackages) self.assertEqual(2, len(additionalPkgsInstalled)) expected = ["nagios", "rrd"] for additionalPkg in expected: self.assertTrue(additionalPkg in additionalPkgsInstalled) allPackages = list(set(packagesInstalled + additionalPkgsInstalled)) self.assertEqual(7, len(allPackages)) expected = [ "hadoop-a", "zk", "webhcat", "hadoop-b", "nagios", "rrd", "def-def.x86" ] for package in expected: self.assertTrue(package in allPackages)
def test_analyze_yum_output_err(self, subprocessWithTimeout_mock): packageAnalyzer = PackagesAnalyzer() result = {} result['out'] = "" result['err'] = "" result['retCode'] = 1 subprocessWithTimeout_mock.return_value = result installedPackages = [] packageAnalyzer.allInstalledPackages(installedPackages) self.assertEqual(installedPackages, [])
def test_analyze_yum_output(self, subprocessWithTimeout_mock, hasZy_mock): packageAnalyzer = PackagesAnalyzer() stringToRead = """Loaded plugins: amazon-id, product-id, rhui-lb, security, subscription-manager Updating certificate-based repositories. Installed Packages AMBARI.dev.noarch 1.x-1.el6 installed PyXML.x86_64 0.8.4-19.el6 @koji-override-0 Red_Hat_Enterprise_Linux-Release_Notes-6-en-US.noarch 3-7.el6 @koji-override-0 hcatalog.noarch 0.11.0.1.3.0.0-107.el6 @HDP-1.3.0 hesiod.x86_64 3.1.0-19.el6 @koji-override-0/$releasever hive.noarch 0.11.0.1.3.0.0-107.el6 @HDP-1.3.0 oracle-server-db.x86 1.3.17-2 @Oracle-11g ambari-log4j.noarch 1.2.5.9-1 @AMBARI.dev-1.x libconfuse.x86_64 2.7-4.el6 @HDP-epel""" result = {} result['out'] = stringToRead result['err'] = "" result['retCode'] = 0 subprocessWithTimeout_mock.return_value = result hasZy_mock.return_value = False installedPackages = [] packageAnalyzer.allInstalledPackages(installedPackages) self.assertEqual(9, len(installedPackages)) for package in installedPackages: self.assertTrue(package[0] in ["AMBARI.dev.noarch", "PyXML.x86_64", "oracle-server-db.x86", "Red_Hat_Enterprise_Linux-Release_Notes-6-en-US.noarch", "hcatalog.noarch", "hesiod.x86_64", "hive.noarch", "ambari-log4j.noarch", "libconfuse.x86_64"]) self.assertTrue(package[1] in ["1.x-1.el6", "0.8.4-19.el6", "3-7.el6", "3.1.0-19.el6", "0.11.0.1.3.0.0-107.el6", "1.2.5.9-1", "1.3.17-2", "1.2.5.9-1", "2.7-4.el6"]) self.assertTrue(package[2] in ["installed", "koji-override-0", "HDP-1.3.0", "koji-override-0/$releasever", "AMBARI.dev-1.x", "Oracle-11g", "HDP-epel"]) packages = packageAnalyzer.getInstalledPkgsByNames(["AMBARI", "Red_Hat_Enterprise", "hesiod", "hive"], installedPackages) self.assertEqual(4, len(packages)) expected = ["AMBARI.dev.noarch", "Red_Hat_Enterprise_Linux-Release_Notes-6-en-US.noarch", "hesiod.x86_64", "hive.noarch"] for package in expected: self.assertTrue(package in packages) detailedPackages = packageAnalyzer.getPackageDetails(installedPackages, packages) self.assertEqual(4, len(detailedPackages)) for package in detailedPackages: self.assertTrue(package['version'] in ["1.x-1.el6", "3-7.el6", "3.1.0-19.el6", "0.11.0.1.3.0.0-107.el6"]) self.assertTrue(package['repoName'] in ["installed", "koji-override-0", "HDP-1.3.0", "koji-override-0/$releasever"]) self.assertFalse(package['repoName'] in ["AMBARI.dev-1.x"])