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 setUp(self):
     super(TestServerInstall, self).setUp()
     self.setup_cluster(HdpBareImageProvider(),
                        YARN_SLIDER_PA_AND_SLIDER_CLUSTER)
     self.installer = SliderPrestoInstaller(self)
     self.await_hdfs()
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')
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')