Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,16 @@

public class DruidClusterAdminClient
{
public static final String COORDINATOR_DOCKER_CONTAINER_NAME = "/druid-coordinator";
public static final String COORDINATOR_TWO_DOCKER_CONTAINER_NAME = "/druid-coordinator-two";
public static final String HISTORICAL_DOCKER_CONTAINER_NAME = "/druid-historical";
public static final String OVERLORD_DOCKER_CONTAINER_NAME = "/druid-overlord";
public static final String OVERLORD_TWO_DOCKER_CONTAINER_NAME = "/druid-overlord-two";
public static final String BROKER_DOCKER_CONTAINER_NAME = "/druid-broker";
public static final String ROUTER_DOCKER_CONTAINER_NAME = "/druid-router";
public static final String MIDDLEMANAGER_DOCKER_CONTAINER_NAME = "/druid-middlemanager";

private static final Logger LOG = new Logger(DruidClusterAdminClient.class);
private static final String COORDINATOR_DOCKER_CONTAINER_NAME = "/druid-coordinator";
private static final String COORDINATOR_TWO_DOCKER_CONTAINER_NAME = "/druid-coordinator-two";
private static final String HISTORICAL_DOCKER_CONTAINER_NAME = "/druid-historical";
private static final String OVERLORD_DOCKER_CONTAINER_NAME = "/druid-overlord";
private static final String OVERLORD_TWO_DOCKER_CONTAINER_NAME = "/druid-overlord-two";
private static final String BROKER_DOCKER_CONTAINER_NAME = "/druid-broker";
private static final String ROUTER_DOCKER_CONTAINER_NAME = "/druid-router";
private static final String MIDDLEMANAGER_DOCKER_CONTAINER_NAME = "/druid-middlemanager";

private final ObjectMapper jsonMapper;
private final HttpClient httpClient;
Expand Down Expand Up @@ -199,12 +200,9 @@ public Pair<String, String> runCommandInMiddleManagerContainer(String... cmd) th
return runCommandInDockerContainer(MIDDLEMANAGER_DOCKER_CONTAINER_NAME, cmd);
}

private Pair<String, String> runCommandInDockerContainer(String serviceName, String... cmd) throws Exception
public Pair<String, String> runCommandInDockerContainer(String serviceName, String... cmd) throws Exception
{
DockerClient dockerClient = DockerClientBuilder.getInstance()
.withDockerCmdExecFactory((new NettyDockerCmdExecFactory())
.withConnectTimeout(10 * 1000))
.build();
DockerClient dockerClient = newClient();
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
ByteArrayOutputStream stderr = new ByteArrayOutputStream();
ExecCreateCmdResponse execCreateCmdResponse = dockerClient.execCreateCmd(findDockerContainer(dockerClient, serviceName))
Expand All @@ -219,23 +217,38 @@ private Pair<String, String> runCommandInDockerContainer(String serviceName, Str
return new Pair<>(stdout.toString(StandardCharsets.UTF_8.name()), stderr.toString(StandardCharsets.UTF_8.name()));
}

private void restartDockerContainer(String serviceName)
public void restartDockerContainer(String serviceName)
{
DockerClient dockerClient = DockerClientBuilder.getInstance()
.withDockerCmdExecFactory((new NettyDockerCmdExecFactory())
.withConnectTimeout(10 * 1000))
.build();
DockerClient dockerClient = newClient();
dockerClient.restartContainerCmd(findDockerContainer(dockerClient, serviceName)).exec();
}

public void killAndRestartDockerContainer(String serviceName)
{
final DockerClient dockerClient = newClient();
final String containerId = findDockerContainer(dockerClient, serviceName);

dockerClient.killContainerCmd(containerId).withSignal("SIGKILL").exec();
dockerClient.startContainerCmd(containerId).exec();
}

private static DockerClient newClient()
{
return DockerClientBuilder
.getInstance()
.withDockerCmdExecFactory((new NettyDockerCmdExecFactory()).withConnectTimeout(10 * 1000))
.build();
}

private String findDockerContainer(DockerClient dockerClient, String serviceName)
{

List<Container> containers = dockerClient.listContainersCmd().exec();
Optional<String> containerName = containers.stream()
.filter(container -> Arrays.asList(container.getNames()).contains(serviceName))
.findFirst()
.map(container -> container.getId());
Optional<String> containerName = containers
.stream()
.filter(container -> Arrays.asList(container.getNames()).contains(serviceName))
.findFirst()
.map(Container::getId);

if (!containerName.isPresent()) {
LOG.error("Cannot find docker container for " + serviceName);
Expand Down Expand Up @@ -272,11 +285,11 @@ private void waitUntilInstanceReady(final String host)
LOG.error("Channel disconnected");
} else {
// log stack trace for unknown exception
LOG.error(e, "");
LOG.error(e, "Error while waiting for [%s] to be ready", host);
}
} else {
// log stack trace for unknown exception
LOG.error(e, "");
LOG.error(e, "Error while waiting for [%s] to be ready", host);
}

return false;
Expand Down Expand Up @@ -304,7 +317,7 @@ private void postDynamicConfig(CoordinatorDynamicConfig coordinatorDynamicConfig
return response.getStatus().equals(HttpResponseStatus.OK) || response.getStatus().equals(HttpResponseStatus.TEMPORARY_REDIRECT);
}
catch (Throwable e) {
LOG.error(e, "");
LOG.error(e, "Error while posting dynamic config");
return false;
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
package org.apache.druid.testing.utils;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.druid.sql.http.SqlQuery;

import java.util.Collections;
Expand All @@ -31,8 +32,8 @@ public class SqlQueryWithResults extends AbstractQueryWithResults<SqlQuery>

@JsonCreator
public SqlQueryWithResults(
SqlQuery query,
List<Map<String, Object>> expectedResults
@JsonProperty("query") SqlQuery query,
@JsonProperty("expectedResults") List<Map<String, Object>> expectedResults
)
{
super(query, expectedResults, Collections.emptyList());
Expand Down