Skip to content

Instantly share code, notes, and snippets.

@jmini
Created September 27, 2023 20:52
Show Gist options
  • Save jmini/5d702a63858b3342a628000afe088b2c to your computer and use it in GitHub Desktop.
Save jmini/5d702a63858b3342a628000afe088b2c to your computer and use it in GitHub Desktop.
JBang script to run the helloworld docker image with testcontainers
///usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS org.testcontainers:testcontainers:1.19.0
//DEPS org.slf4j:slf4j-simple:1.7.36
//JAVA 11
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.output.WaitingConsumer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.containers.wait.strategy.WaitStrategy;
import org.testcontainers.utility.DockerImageName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RunHelloworld {
public static void main(String... args) throws Exception {
Logger logger = LoggerFactory.getLogger(RunHelloworld.class);
Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(logger);
GenericContainer<?> container = new GenericContainer<>(DockerImageName.parse("testcontainers/helloworld:latest"))
.withEnv("DELAY_START_MSEC", "2000")
.withExposedPorts(8080, 8081)
.withLogConsumer(logConsumer);
container.start();
try {
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("http://localhost:" + container.getMappedPort(8080) + "/ping"))
.GET()
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
String content = response.body();
int code = response.statusCode();
if (!(code >= 200 && code < 300)) {
System.out.println("Error while performing the call. Response:");
System.out.println(content);
throw new IllegalStateException("Unexpected status code. " + code);
}
System.out.println(content);
} finally {
container.stop();
}
System.out.println("-----");
System.out.println(container.getLogs());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment