class TestServerInstall(BaseProductTestCase): def setUp(self): super(TestServerInstall, self).setUp() self.setup_cluster(HdpBareImageProvider(), YARN_SLIDER_PA_AND_SLIDER_CLUSTER) self.installer = SliderPrestoInstaller(self) self.await_hdfs() def await_hdfs(self): start = time.clock() ip_addr = self.cluster.get_ip_address_dict()[self.cluster.master] while True: try: s = socket() s.connect((ip_addr, HDFS_PORT)) break except Exception as e: s.close() if e.errno == ECONNREFUSED: pass else: raise finally: s.close() end = time.clock() duration = end - start print 'Waited %.3f seconds for hdfs' % (duration) def assert_uninstalled(self): self.assertRaisesRegexp(OSError, 'No such file or directory', self.installer.assert_installed, self) def get_config(self): slider_master = self.installer._get_slider_master(self) conf = self.get_file_content(slider_master, SLIDER_CONFIG_PATH) return json.loads(conf) def assert_config_has_package(self): conf_dict = self.get_config() self.assertIn(PRESTO_PACKAGE, conf_dict) def assert_config_no_package(self): conf_dict = self.get_config() self.assertNotIn(PRESTO_PACKAGE, conf_dict) def test_install(self): self.assert_uninstalled() self.installer.install() self.installer.assert_installed(self) self.assert_config_has_package() def test_install_twice(self): self.assert_uninstalled() self.installer.install() self.installer.assert_installed(self) self.assertRaisesRegexp(OSError, "Package exists", self.installer.install) def test_uninstall(self): self.assert_uninstalled() self.installer.install() self.installer.assert_installed(self) self.assert_config_has_package() self.uninstall() self.assert_uninstalled() self.assert_config_no_package() def test_uninstall_not_installed(self): self.assert_uninstalled() self.assertRaisesRegexp(OSError, "Package does not exist", self.uninstall) def uninstall(self): return self.run_prestoadmin(' server uninstall')