def testDecompressClusterHostInfo(self): info = { "jtnode_host": ["5"], "hbase_master_hosts": ["5"], "all_hosts": ["h8", "h9", "h5", "h4", "h7", "h6", "h1", "h3", "h2", "h10"], "namenode_host": ["6"], "mapred_tt_hosts": ["0", "7-9", "2", "3", "5"], "slave_hosts": ["3", "0", "1", "5-9"], "snamenode_host": ["8"], "ping_ports": ["8670:1,5-8", "8673:9", "8672:0,4", "8671:2,3"], "hbase_rs_hosts": ["3", "1", "5", "8", "9"] } decompressedInfo = manifestGenerator.decompressClusterHostInfo( clusterHostInfo) self.assertTrue(decompressedInfo.has_key("all_hosts")) allHosts = decompressedInfo.pop("all_hosts") self.assertEquals(info.get("all_hosts"), decompressedInfo.get("all_hosts")) pingPorts = decompressedInfo.pop("all_ping_ports") self.assertEquals( pingPorts, manifestGenerator.convertMappedRangeToList( info.get("all_ping_ports"))) for k, v in decompressedInfo.items(): self.assertEquals( v, manifestGenerator.convertRangeToList(info.get(k)))
def testConvertRangeToList(self): rangesList = ["1-3", "4", "6", "7-9"] list = manifestGenerator.convertRangeToList(rangesList) self.assertEqual(sorted(list), sorted([1, 2, 3, 4, 6, 7, 8, 9])) rangesList = ["5", "4"] list = manifestGenerator.convertRangeToList(rangesList) self.assertEqual(list, [5, 4]) exceptionWasTrown = False try: rangesList = ["0", "-2"] list = manifestGenerator.convertRangeToList(rangesList) except AgentException, err: #Expected exceptionWasTrown = True
class TestManifestGenerator(TestCase): def setUp(self): # disable stdout out = StringIO.StringIO() sys.stdout = out self.dir = tempfile.mkdtemp() self.config = AmbariConfig() jsonCommand = file('../../main/python/ambari_agent/test.json').read() self.parsedJson = json.loads(jsonCommand) def tearDown(self): shutil.rmtree(self.dir) # enable stdout sys.stdout = sys.__stdout__ def testWriteImports(self): tmpFileName = tempfile.mkstemp(dir=self.dir, text=True)[1] print tmpFileName tmpFile = file(tmpFileName, 'r+') manifestGenerator.writeImports(tmpFile, '../../main/puppet/modules', self.config.getImports()) tmpFile.seek(0) print tmpFile.read() tmpFile.close() def testEscape(self): shouldBe = '\\\'\\\\' result = manifestGenerator.escape('\'\\') self.assertEqual(result, shouldBe) def test_writeNodes(self): tmpFileName = tempfile.mkstemp(dir=self.dir, text=True)[1] tmpFile = file(tmpFileName, 'r+') clusterHostInfo = self.parsedJson['clusterHostInfo'] clusterHostInfo['zookeeper_hosts'] = [ "h1.hortonworks.com", "h2.hortonworks.com" ] manifestGenerator.writeNodes(tmpFile, clusterHostInfo) tmpFile.seek(0) print tmpFile.read() tmpFile.close() os.remove(tmpFileName) def test_writeNodes_failed(self): tmpFileName = tempfile.mkstemp(dir=self.dir, text=True)[1] tmpFile = file(tmpFileName, 'r+') clusterHostInfo = self.parsedJson['clusterHostInfo'] clusterHostInfo.update({u'ZOOKEEPER': [None]}) clusterHostInfo['zookeeper_hosts'] = [ "h1.hortonworks.com", "h2.hortonworks.com" ] self.assertRaises(TypeError, manifestGenerator.writeNodes, tmpFile, clusterHostInfo) tmpFile.seek(0) print tmpFile.read() tmpFile.close() os.remove(tmpFileName) def test_writeHostAttributes(self): tmpFileName = tempfile.mkstemp(dir=self.dir, text=True)[1] tmpFile = file(tmpFileName, 'r+') hostAttributes = {'HostAttr1': '1', 'HostAttr2': '2'} manifestGenerator.writeHostAttributes(tmpFile, hostAttributes) tmpFile.seek(0) print tmpFile.read() tmpFile.close() os.remove(tmpFileName) def test_writeTasks(self): tmpFileName = tempfile.mkstemp(dir=self.dir, text=True)[1] tmpFile = file(tmpFileName, 'r+') roles = [{ 'role': 'ZOOKEEPER_SERVER', 'cmd': 'NONE', 'roleParams': { 'someRoleParams': '-x' } }] clusterHostInfo = self.parsedJson['clusterHostInfo'] clusterHostInfo['zookeeper_hosts'] = [ "h1.hortonworks.com", "h2.hortonworks.com" ] manifestGenerator.writeTasks(tmpFile, roles, self.config, clusterHostInfo, "h1.hortonworks.com") tmpFile.seek(0) print tmpFile.read() tmpFile.close() os.remove(tmpFileName) def testConvertRangeToList(self): rangesList = ["1-3", "4", "6", "7-9"] list = manifestGenerator.convertRangeToList(rangesList) self.assertEqual(sorted(list), sorted([1, 2, 3, 4, 6, 7, 8, 9])) rangesList = ["5", "4"] list = manifestGenerator.convertRangeToList(rangesList) self.assertEqual(list, [5, 4]) exceptionWasTrown = False try: rangesList = ["0", "-2"] list = manifestGenerator.convertRangeToList(rangesList) except AgentException, err: #Expected exceptionWasTrown = True self.assertTrue(exceptionWasTrown) exceptionWasTrown = False try: rangesList = ["0", "-"] list = manifestGenerator.convertRangeToList(rangesList) except AgentException, err: #Expected exceptionWasTrown = True
self.assertTrue(exceptionWasTrown) exceptionWasTrown = False try: rangesList = ["0", "-"] list = manifestGenerator.convertRangeToList(rangesList) except AgentException, err: #Expected exceptionWasTrown = True self.assertTrue(exceptionWasTrown) exceptionWasTrown = False try: rangesList = ["0", "2-"] list = manifestGenerator.convertRangeToList(rangesList) except AgentException, err: #Expected exceptionWasTrown = True self.assertTrue(exceptionWasTrown) def testConvertMappedRangeToList(self): mappedRangedList = ["1:0-2,5", "2:3,4"] list = manifestGenerator.convertMappedRangeToList(mappedRangedList) self.assertEqual(list, [1, 1, 1, 2, 2, 1]) mappedRangedList = ["7:0"] list = manifestGenerator.convertMappedRangeToList(mappedRangedList) self.assertEqual(list, [7]) exceptionWasTrown = False