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() pass @patch.object(manifestGenerator, 'writeImports') @patch.object(manifestGenerator, 'writeNodes') @patch.object(manifestGenerator, 'writeParams') @patch.object(manifestGenerator, 'writeTasks') def testGenerateManifest(self, writeTasksMock, writeParamsMock, writeNodesMock, writeImportsMock): tmpFileName = tempfile.mkstemp(dir=self.dir, text=True)[1] manifestGenerator.generateManifest(self.parsedJson, tmpFileName, '../../main/puppet/modules', self.config.getConfig()) self.assertTrue(writeParamsMock.called) self.assertTrue(writeNodesMock.called) self.assertTrue(writeImportsMock.called) self.assertTrue(writeTasksMock.called) print file(tmpFileName).read() pass
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
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() pass @patch.object(manifestGenerator, 'writeImports') @patch.object(manifestGenerator, 'writeNodes') @patch.object(manifestGenerator, 'writeParams') @patch.object(manifestGenerator, 'writeTasks') def testGenerateManifest(self, writeTasksMock, writeParamsMock, writeNodesMock, writeImportsMock): tmpFileName = tempfile.mkstemp(dir=self.dir, text=True)[1] self.parsedJson['roleParams'] = 'role param' manifestGenerator.generateManifest(self.parsedJson, tmpFileName, '../../main/puppet/modules', self.config.getConfig()) self.assertTrue(writeParamsMock.called) self.assertTrue(writeNodesMock.called) self.assertTrue(writeImportsMock.called) self.assertTrue(writeTasksMock.called) print file(tmpFileName).read() def raiseTypeError(): raise TypeError() writeNodesMock.side_effect = raiseTypeError manifestGenerator.generateManifest(self.parsedJson, tmpFileName, '../../main/puppet/modules', self.config.getConfig()) pass 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)