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_client_protocol_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))) proc.sendeof() proc.wait() # Ensure no sessions or queries are left dangling. verifier = MetricVerifier(self.impalad_test_service) verifier.verify_metrics_are_zero()
def test_metrics_are_zero(self): """Test that all the metric in METRIC_LIST are 0""" verifier = MetricVerifier(self.impalad_test_service) verifier.verify_metrics_are_zero()