Skip to content

Commit

Permalink
Build images using CMD
Browse files Browse the repository at this point in the history
  • Loading branch information
eddumelendez committed May 14, 2020
1 parent 64f426c commit bb74295
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 37 deletions.
@@ -1,5 +1,7 @@
package org.testcontainers.containers;

import java.util.Arrays;

import org.testcontainers.containers.wait.strategy.Wait;

/**
Expand All @@ -12,15 +14,19 @@
*/
public class DatastoreEmulatorContainer extends GCloudGenericContainer<DatastoreEmulatorContainer> {

private static final String DATASTORE_EMULATOR_START_COMMAND = "gcloud beta emulators datastore start --project dummy-project --host-port 0.0.0.0:8081";

private static final String[] CMDS = {"apk --update add openjdk8-jre",
"gcloud components install beta cloud-datastore-emulator --quiet"};
"gcloud components install beta cloud-datastore-emulator --quiet",
"gcloud beta emulators datastore start --project dummy-project --host-port 0.0.0.0:8081"};

public DatastoreEmulatorContainer(String image) {
super(image, DATASTORE_EMULATOR_START_COMMAND, CMDS);
super(image);
withExposedPorts(8081);
setWaitStrategy(Wait.forHttp("/").forStatusCode(200));
withCommand("/bin/sh", "-c", parseCmds(CMDS));
}

private static String parseCmds(String... cmds) {
return String.join(" && ", Arrays.asList(cmds));
}

public DatastoreEmulatorContainer() {
Expand Down
@@ -1,5 +1,8 @@
package org.testcontainers.containers;

import java.time.Duration;
import java.util.Arrays;

import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;

/**
Expand All @@ -12,16 +15,21 @@
*/
public class FirestoreEmulatorContainer extends GCloudGenericContainer<FirestoreEmulatorContainer> {

private static final String FIRESTORE_EMULATOR_START_COMMAND = "gcloud beta emulators firestore start --host-port 0.0.0.0:8080";

private static final String[] CMDS = {"apk --update add openjdk8-jre",
"gcloud components install beta cloud-firestore-emulator --quiet"};
"gcloud components install beta cloud-firestore-emulator --quiet",
"gcloud beta emulators firestore start --host-port 0.0.0.0:8080"};

public FirestoreEmulatorContainer(String image) {
super(image, FIRESTORE_EMULATOR_START_COMMAND, CMDS);
super(image);
withExposedPorts(8080);
setWaitStrategy(new LogMessageWaitStrategy()
.withRegEx("(?s).*running.*$"));
.withRegEx("(?s).*running.*$")
.withStartupTimeout(Duration.ofSeconds(120)));
withCommand("/bin/sh", "-c", parseCmds(CMDS));
}

private static String parseCmds(String... cmds) {
return String.join(" && ", Arrays.asList(cmds));
}

public FirestoreEmulatorContainer() {
Expand Down
Expand Up @@ -6,8 +6,6 @@
import java.util.List;

import com.github.dockerjava.api.command.InspectContainerResponse;
import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.images.builder.dockerfile.DockerfileBuilder;

/**
* @author Eddú Meléndez
Expand All @@ -22,10 +20,6 @@ public GCloudGenericContainer(String image) {
super(image);
}

public GCloudGenericContainer(String image, String mainCmd, String[] prerequisiteCmds) {
super(buildImage(image, mainCmd, prerequisiteCmds));
}

@Override
protected void containerIsStarted(InspectContainerResponse containerInfo) {
runAdditionalCommands();
Expand All @@ -46,21 +40,4 @@ public SELF withAdditionalCommands(String... cmds) {
return self();
}

private static ImageFromDockerfile buildImage(String image, String mainCmd, String[] prerequisiteCmds) {
return new ImageFromDockerfile()
.withDockerfileFromBuilder(builder -> {
DockerfileBuilder from = builder
.from(image);
if (prerequisiteCmds != null) {
from.run(parseCmds(prerequisiteCmds));
}
from.cmd(mainCmd);
from.build();
});
}

private static String parseCmds(String... cmds) {
return String.join(" && \n", Arrays.asList(cmds));
}

}
@@ -1,5 +1,8 @@
package org.testcontainers.containers;

import java.time.Duration;
import java.util.Arrays;

import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;

/**
Expand All @@ -12,16 +15,21 @@
*/
public class PubSubEmulatorContainer extends GCloudGenericContainer<PubSubEmulatorContainer> {

private static final String PUBSUB_EMULATOR_START_COMMAND = "gcloud beta emulators pubsub start --host-port 0.0.0.0:8085";

private static final String[] CMDS = {"apk --update add openjdk7-jre",
"gcloud components install beta pubsub-emulator --quiet"};
"gcloud components install beta pubsub-emulator --quiet",
"gcloud beta emulators pubsub start --host-port 0.0.0.0:8085"};

public PubSubEmulatorContainer(String image) {
super(image, PUBSUB_EMULATOR_START_COMMAND, CMDS);
super(image);
withExposedPorts(8085);
setWaitStrategy(new LogMessageWaitStrategy()
.withRegEx("(?s).*started.*$"));
.withRegEx("(?s).*started.*$")
.withStartupTimeout(Duration.ofSeconds(120)));
withCommand("/bin/sh", "-c", parseCmds(CMDS));
}

private static String parseCmds(String... cmds) {
return String.join(" && ", Arrays.asList(cmds));
}

public PubSubEmulatorContainer() {
Expand Down

0 comments on commit bb74295

Please sign in to comment.