예제 #1
0
    def test_admission_status(self):
        """Test whether the admission status gets printed if a query gets queued when
    either live_summary or live_progress is set to true"""
        expected_admission_status = "Query queued. Latest queuing reason: " \
                                    "number of running queries 1 is at or over limit 1"
        # Start a long running query so that the next one gets queued.
        sleep_query_handle = self.client.execute_async("select sleep(10000)")
        self.client.wait_for_admission_control(sleep_query_handle)

        # Iterate over test vector within test function to avoid restarting cluster.
        for vector in [
                ImpalaTestVector([value])
                for value in create_beeswax_dimension()
        ]:
            cmd = get_shell_cmd(vector)
            proc = pexpect.spawn(cmd[0], cmd[1:])
            # Check with only live_summary set to true.
            proc.expect("{0}] default>".format(get_impalad_port(vector)))
            proc.sendline("set live_summary=true;")
            proc.sendline("select 1;")
            proc.expect(expected_admission_status)
            proc.sendcontrol('c')
            proc.expect("Cancelling Query")
            # Check with only live_progress set to true.
            proc.sendline("set live_summary=false;")
            proc.sendline("set live_progress=true;")
            proc.sendline("select 1;")
            proc.expect(expected_admission_status)
    def test_auto_reconnect_after_impalad_died(self):
        """Test reconnect after restarting the remote impalad without using connect;"""
        # Use pexpect instead of ImpalaShell() since after using get_result() in ImpalaShell()
        # to check Disconnect, send_cmd() will no longer have any effect so we can not check
        # reconnect.
        impalad = ImpaladService(socket.getfqdn())

        # Iterate over test vector within test function to avoid restarting cluster.
        for vector in [
                ImpalaTestVector([value])
                for value in create_beeswax_dimension()
        ]:
            cmd = get_shell_cmd(vector)
            proc = pexpect.spawn(cmd[0], cmd[1:])
            proc.expect("{0}] default>".format(get_impalad_port(vector)))
            # ImpalaShell startup may issue query to get server info - get num queries after
            # starting shell.
            start_num_queries = impalad.get_metric_value(NUM_QUERIES)
            proc.sendline("use tpch;")

            # wait for the USE command to finish
            impalad.wait_for_metric_value(NUM_QUERIES, start_num_queries + 1)
            assert impalad.wait_for_num_in_flight_queries(0)

            # Disconnect
            self.cluster.impalads[0].kill()
            proc.sendline("show tables;")
            # Search from [1:] since the square brackets "[]" are special characters in regex
            proc.expect(ImpalaShellClass.DISCONNECTED_PROMPT[1:])
            # Restarting Impalad
            self.cluster.impalads[0].start()
            # Check reconnect
            proc.sendline("show tables;")
            proc.expect("nation")
            proc.expect("{0}] tpch>".format(get_impalad_port(vector)))
    def test_manual_reconnect(self):
        # Iterate over test vector within test function to avoid restarting cluster.
        for vector in [
                ImpalaTestVector([value])
                for value in create_beeswax_dimension()
        ]:
            p = ImpalaShell(vector)
            p.send_cmd("USE functional")
            # Connect without arguments works because the custom cluster will have the default
            # HS2 and Beeswax ports.
            p.send_cmd("CONNECT")
            p.send_cmd("SHOW TABLES")

            result = p.get_result()
            assert "alltypesaggmultifilesnopart" in result.stdout, result.stdout
    def test_auto_reconnect(self):
        impalad = ImpaladService(socket.getfqdn())

        # Iterate over test vector within test function to avoid restarting cluster.
        for vector in [
                ImpalaTestVector([value])
                for value in create_beeswax_dimension()
        ]:
            p = ImpalaShell(vector)
            # ImpalaShell startup may issue query to get server info - get num queries after
            # starting shell.
            start_num_queries = impalad.get_metric_value(NUM_QUERIES)
            p.send_cmd("USE functional")

            # wait for the USE command to finish
            impalad.wait_for_metric_value(NUM_QUERIES, start_num_queries + 1)
            assert impalad.wait_for_num_in_flight_queries(0)

            self._start_impala_cluster([])

            p.send_cmd("SHOW TABLES")
            result = p.get_result()
            assert "alltypesaggmultifilesnopart" in result.stdout, result.stdout
예제 #5
0
 def add_test_dimensions(cls):
     cls.ImpalaTestMatrix.add_dimension(create_beeswax_dimension())
 def add_test_dimensions(cls):
   cls.ImpalaTestMatrix.add_dimension(create_beeswax_dimension())