diff --git a/pom.xml b/pom.xml
index 94d6f19a..356b8d9f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
org.hobbit
hobbit-java-sdk
- 1.1.0
+ 1.1.1
UTF-8
1.8
diff --git a/src/main/java/org/hobbit/sdk/docker/AbstractDockerizer.java b/src/main/java/org/hobbit/sdk/docker/AbstractDockerizer.java
index 0c2da9fa..7c55a17a 100644
--- a/src/main/java/org/hobbit/sdk/docker/AbstractDockerizer.java
+++ b/src/main/java/org/hobbit/sdk/docker/AbstractDockerizer.java
@@ -1,450 +1,450 @@
-package org.hobbit.sdk.docker;
-
-import org.hobbit.core.components.Component;
-import org.hobbit.sdk.docker.builders.common.AbstractDockersBuilder;
-import com.google.common.collect.ImmutableList;
-import com.spotify.docker.client.DefaultDockerClient;
-import com.spotify.docker.client.DockerClient;
-import com.spotify.docker.client.LogStream;
-import com.spotify.docker.client.exceptions.ContainerNotFoundException;
-import com.spotify.docker.client.exceptions.DockerCertificateException;
-import com.spotify.docker.client.exceptions.DockerException;
-import com.spotify.docker.client.exceptions.DockerRequestException;
-import com.spotify.docker.client.messages.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.*;
-import java.util.*;
-import java.util.concurrent.*;
-
-import static java.lang.String.format;
-
-/**
- * @author Roman Katerinenko
- */
-public abstract class AbstractDockerizer implements Component {
-
- private String name;
- public Logger logger;
-
- private String imageName;
- private String hostName;
- private String containerName;
- private Map> portBindings;
- private Collection environmentVariables;
- private Collection networks;
-
- public Exception exception;
- private String containerId;
-
- private Boolean skipLogsReading;
- public Boolean useCachedContainer;
- public DockerClient dockerClient;
- private Callable onTermination;
-
-
- protected AbstractDockerizer(AbstractDockersBuilder builder) {
- name = builder.getName();
- logger = LoggerFactory.getLogger(name);
- imageName = builder.getImageName();
- hostName = builder.getHostName();
- containerName = builder.getContainerName();
- portBindings = builder.getPortBindings();
- environmentVariables = builder.getEnvironmentVariables();
- networks = builder.getNetworks();
- skipLogsReading = builder.getSkipLogsReading();
- useCachedContainer = builder.getUseCachedContainer();
- onTermination = builder.getOnTermination();
- }
-
-
- @Override
- public void init() {
-
- }
-
- @Override
- public void run() {
- try {
- stop(true);
- Boolean requiresStart = createContainerIfNotExists();
- if(requiresStart) {
- int readLogsSince = (int) (System.currentTimeMillis() / 1000L);
- startContainer();
- startMonitoringAndLogsReading(readLogsSince);
- }
-
- }catch (DockerRequestException e){
- logger.error("Exception: {}", e.getResponseBody());
- exception = e;
- }
- catch (Exception e){
- logger.error("Exception: {}", e);
- exception = e;
- }
- }
-
- public DockerClient getDockerClient() throws DockerCertificateException {
- if(dockerClient==null)
- dockerClient = DefaultDockerClient.fromEnv().build();
- return dockerClient;
- }
-
- public void stop() throws InterruptedException, DockerException, DockerCertificateException {
- stop(false);
- }
-
- public void stop(Boolean onstart) throws InterruptedException, DockerException, DockerCertificateException {
- try {
- if(useCachedContainer!=null && useCachedContainer) {
- if(!onstart)
- stopContainer();
- }else if(onstart)
- removeAllSameNamedContainers();
- }
- catch (Exception e){
- logger.error("Exception", e);
- exception = e;
- }
- }
-
- public void setOnTermination(Callable value){
- this.onTermination = value;
- }
-
- public String getName(){
- return name;
- }
- public String getImageName(){
- return imageName;
- }
- public String getContainerName(){
- return containerName;
- }
-
- public String getHostName(){ return hostName;}
-
- public void removeAllSameNamedContainers(){
- logger.debug("Removing containers (imageName={})", imageName);
- try {
- removeAllSameNamedContainers(containerName);
- }
- catch (Exception e){
- logger.error("Exception", e);
- exception = e;
- }
- }
-
- public void removeAllSameNamedImages() throws DockerException, InterruptedException, DockerCertificateException {
- logger.debug("Removing images (imageName={})", imageName);
-
- removeAllSameNamedImages(imageName);
- }
-
- public void addEnvironmentVariable(String keyValue){
- this.environmentVariables.add(keyValue);
- }
-
- public void prepareImage() throws InterruptedException, DockerException, DockerCertificateException, IOException{
- prepareImage(imageName);
- };
-
- public abstract void prepareImage(String imageName) throws InterruptedException, DockerException, DockerCertificateException, IOException;
-
-
- public Boolean createContainerIfNotExists() throws DockerException, InterruptedException, DockerCertificateException, IOException {
- if(containerId!=null)
- return true;
-
- Boolean requiresToBeStarted = false;
- List results = findContainersByName(containerName, DockerClient.ListContainersParam.allContainers());
- if(results.size()==0){
- containerId = createContainer();
- requiresToBeStarted = true;
- }else{
- for(Container container : results)
- if(container.state().equals("running"))
- containerId = results.get(0).id();
-
- if(containerId==null) {
- containerId = results.get(0).id();
- requiresToBeStarted = true;
- }
- }
- return requiresToBeStarted;
- }
-
- public void startContainer() throws Exception {
- logger.debug("Starting container (imageName={}, containerId={})", imageName, containerId);
- getDockerClient().restartContainer(containerId);
- connectContainerToNetworks(networks);
- //logger.debug("Waiting till container will start (imageName={})", imageName);
- //awaitRunning(dockerClient, containerId);
- logger.debug("Container started (imageName={}, containerId={})", imageName, containerId);
- }
-
- public void startMonitoringAndLogsReading(int since) throws Exception {
- logger.debug("Starting monitoring & logs reading for container (imageName={})", imageName);
-
- ExecutorService threadPool = Executors.newCachedThreadPool();
-
- Callable callable = () -> {
- //String ret="";
- LogStream logStream = null;
-
- String logs="";
- String prevLogs="";
- Boolean running = true;
- while(running){
- if (skipLogsReading==null || !skipLogsReading){
- try {
- logStream = getDockerClient().logs(containerId,
- DockerClient.LogsParam.stderr(),
- DockerClient.LogsParam.stdout(),
- DockerClient.LogsParam.since(since)
- );
- logs = logStream.readFully();
- } catch (Exception e) {
- logger.debug(String.format("No logs are available (imageName=%s):", imageName), e);
- } finally {
- if (logStream != null) {
- logStream.close();
- }
- }
-
- if (logs.length() > prevLogs.length()) {
- String logsToPrint = logs.substring(prevLogs.length());
- if (logsToPrint.toLowerCase().contains("error"))
- logger.error(logsToPrint);
- else
- logger.debug(logsToPrint);
- prevLogs = logs;
- }
- running = getDockerClient().inspectContainer(containerId).state().running();
- }
- Thread.sleep(1000);
- }
- if(onTermination!=null)
- onTermination.call();
- stop();
- return "";
- };
- //if(interruptable) {
- Future future = threadPool.submit(callable);
- try {
- future.get(3000, TimeUnit.MILLISECONDS);
- } catch (ExecutionException e) {
- throw new RuntimeException(e.getCause());
- } catch (InterruptedException e) {
- logger.debug("Logs reader was failed to attach");
- Thread.currentThread().interrupt();
- //throw new TimeoutException();
- } catch (TimeoutException e) {
- //logger.debug("Logs reader was attached");
- //e.printStackTrace();
- }
- //}else
- //callable.call();
-
- }
-
- public void waitForContainerFinish() throws DockerException, InterruptedException, DockerCertificateException {
- logger.debug("Waiting for container finish (imageName={})", imageName);
- getDockerClient().waitContainer(containerId);
-
- }
-
- public void stopContainer(){
- logger.debug("Stopping containers (imageName={})", imageName);
- try{
- if(containerId==null){
- List results = findContainersByName(containerName, DockerClient.ListContainersParam.withStatusRunning());
- if(results.size()>0)
- containerId = results.get(0).id();
- }
- if(containerId!=null)
- getDockerClient().stopContainer(containerId, 0);
- }
- catch (Exception e){
- logger.error("Exception", e);
- exception = e;
- }
- }
-
-
- private String createContainer() throws DockerException, InterruptedException, DockerCertificateException, IOException {
-
- if(findImagesByName(imageName).size()==0)
- prepareImage(imageName);
-
- logger.debug("Creating container (imageName={})", imageName);
- boolean removeContainerWhenItExits = false;
- HostConfig hostConfig = HostConfig.builder()
- .autoRemove(removeContainerWhenItExits)
- .portBindings(portBindings)
- .dns("1.2.3.4")
- .dnsSearch("rabbit")
- .build();
-
- ContainerConfig.Builder builder = ContainerConfig.builder()
- .hostConfig(hostConfig)
- .exposedPorts(getExposedPorts())
- .image(imageName)
- .env(getEnvironmentVariables());
-
- ContainerConfig containerConfig = builder .build();
- ContainerCreation creation = getDockerClient().createContainer(containerConfig, containerName);
- String contId = creation.id();
- if (contId == null) {
- IllegalStateException exception = new IllegalStateException(format("Unable to create container %s", containerName));
- logger.error(String.format("Failed to create container (imageName=%s): ",imageName), exception);
- throw exception;
- }
-
- return contId;
- }
-
- private static void awaitRunning(final DockerClient client, final String containerId)
- throws Exception {
- Boolean running = false;
- while (!running) {
- final ContainerInfo containerInfo = client.inspectContainer(containerId);
- running = containerInfo.state().running() ? true : false;
- Thread.sleep(300);
- }
- }
-
-
-
- private ContainerInfo getContainerInfo(DockerClient dockerClient) {
- if (containerId == null) {
- return null;
- }
- ContainerInfo info = null;
- try {
- info = getDockerClient().inspectContainer(containerId);
- } catch (ContainerNotFoundException e) {
- logger.error("The container " + containerId + " is not known.", e);
- } catch (Throwable e) {
- logger.error("Error while checking status of container " + containerId + ".", e);
- }
- return info;
- }
-
- private void connectContainerToNetworks(Collection networks) throws DockerException, InterruptedException, DockerCertificateException {
- logger.debug("Connecting container to networks (imageName={})", imageName);
-
-// ContainerInfo info = getContainerInfo(dockerClient);
-// Map prev_networks = info.networkSettings().networks();
-// for (String networkName : prev_networks.keySet()) {
-// getDockerClient().disconnectFromNetwork(containerId, networkName);
-// }
-
- for (String network : networks) {
- String networkId = createDockerNetworkIfNeeded(dockerClient, network);
- getDockerClient().connectToNetwork(containerId, networkId);
- }
- }
-
- public String createDockerNetworkIfNeeded(DockerClient dockerClient, String networkName) throws
- DockerException, InterruptedException, DockerCertificateException {
- for (Network network : getDockerClient().listNetworks()) {
- if (network.name() != null && network.name().equals(networkName)) {
- return network.id();
- }
- }
- NetworkConfig networkConfig = NetworkConfig.builder()
- .name(networkName)
- .build();
- return getDockerClient().createNetwork(networkConfig).id();
- }
-
- private Set getExposedPorts() {
- return portBindings.keySet();
- }
-
- private String[] getEnvironmentVariables() {
- return environmentVariables.toArray(new String[environmentVariables.size()]);
- }
-
- private List findContainersByName(String containerName, DockerClient.ListContainersParam param) throws
- DockerException, InterruptedException, DockerCertificateException {
- List ret = new ArrayList<>();
- for(Container container : getDockerClient().listContainers(param)) {
- for(String name : container.names()){
- if (name.equals(dockerizeContainerName(containerName)))
- ret.add(container);
- }
- }
-
- return ret;
- }
-
- private void removeAllSameNamedContainers(String containerName) throws
- DockerException, InterruptedException, DockerCertificateException {
- for(Container container : findContainersByName(containerName, DockerClient.ListContainersParam.allContainers())) {
- boolean removed = false;
- while (!removed) {
- try {
- getDockerClient().removeContainer(container.id(), DockerClient.RemoveContainerParam.forceKill());
- removed = true;
- containerId = null;
- } catch (Exception e) {
- //if(!e.getMessage().contains("not found"))
- logger.error("Exception", e);
- }
- }
- }
- }
-
- private static String dockerizeContainerName(String intendedContainerName) {
- return format("/%s", intendedContainerName);
- }
-
- private List findImagesByName(String imageName) throws DockerException, InterruptedException, DockerCertificateException {
- List ret = new ArrayList<>();
- String imageNameToSearch = (imageName.contains(":")?imageName:imageName+":");
- for (Image image : getDockerClient().listImages(DockerClient.ListImagesParam.allImages())) {
- ImmutableList repoTags = image.repoTags();
- if (repoTags != null) {
- boolean nameMatch = repoTags.stream().anyMatch(name -> name != null && name.contains(imageNameToSearch));
- if (nameMatch)
- ret.add(image.id());
- }
- }
- return ret;
- }
-
- private void removeAllSameNamedImages(String imageName) throws DockerException, InterruptedException, DockerCertificateException {
- boolean force = true;
- boolean dontDeleteUntaggedParents = false;
- for (String id : findImagesByName(imageName)){
- getDockerClient().removeImage(id, force, dontDeleteUntaggedParents);
- }
- }
-
-
- public Exception anyExceptions() {
- return exception;
- }
-
- public static String toEnvironmentEntry(String key, String value) {
- return format("%s=%s", key, value);
- }
-
-
- @Override
- public void close(){
- logger.debug("Close() (imageName={})", imageName);
-// try {
-// stop();
-// } catch (InterruptedException e) {
-// e.printStackTrace();
-// } catch (DockerException e) {
-// e.printStackTrace();
-// } catch (DockerCertificateException e) {
-// e.printStackTrace();
-// }
- }
+package org.hobbit.sdk.docker;
+
+import org.hobbit.core.components.Component;
+import org.hobbit.sdk.docker.builders.AbstractDockersBuilder;
+import com.google.common.collect.ImmutableList;
+import com.spotify.docker.client.DefaultDockerClient;
+import com.spotify.docker.client.DockerClient;
+import com.spotify.docker.client.LogStream;
+import com.spotify.docker.client.exceptions.ContainerNotFoundException;
+import com.spotify.docker.client.exceptions.DockerCertificateException;
+import com.spotify.docker.client.exceptions.DockerException;
+import com.spotify.docker.client.exceptions.DockerRequestException;
+import com.spotify.docker.client.messages.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.*;
+import java.util.*;
+import java.util.concurrent.*;
+
+import static java.lang.String.format;
+
+/**
+ * @author Roman Katerinenko
+ */
+public abstract class AbstractDockerizer implements Component {
+
+ private String name;
+ public Logger logger;
+
+ private String imageName;
+ private String hostName;
+ private String containerName;
+ private Map> portBindings;
+ private Collection environmentVariables;
+ private Collection networks;
+
+ public Exception exception;
+ private String containerId;
+
+ private Boolean skipLogsReading;
+ public Boolean useCachedContainer;
+ public DockerClient dockerClient;
+ private Callable onTermination;
+
+
+ protected AbstractDockerizer(AbstractDockersBuilder builder) {
+ name = builder.getName();
+ logger = LoggerFactory.getLogger(name);
+ imageName = builder.getImageName();
+ hostName = builder.getHostName();
+ containerName = builder.getContainerName();
+ portBindings = builder.getPortBindings();
+ environmentVariables = builder.getEnvironmentVariables();
+ networks = builder.getNetworks();
+ skipLogsReading = builder.getSkipLogsReading();
+ useCachedContainer = builder.getUseCachedContainer();
+ onTermination = builder.getOnTermination();
+ }
+
+
+ @Override
+ public void init() {
+
+ }
+
+ @Override
+ public void run() {
+ try {
+ stop(true);
+ Boolean requiresStart = createContainerIfNotExists();
+ if(requiresStart) {
+ int readLogsSince = (int) (System.currentTimeMillis() / 1000L);
+ startContainer();
+ startMonitoringAndLogsReading(readLogsSince);
+ }
+
+ }catch (DockerRequestException e){
+ logger.error("Exception: {}", e.getResponseBody());
+ exception = e;
+ }
+ catch (Exception e){
+ logger.error("Exception: {}", e);
+ exception = e;
+ }
+ }
+
+ public DockerClient getDockerClient() throws DockerCertificateException {
+ if(dockerClient==null)
+ dockerClient = DefaultDockerClient.fromEnv().build();
+ return dockerClient;
+ }
+
+ public void stop() throws InterruptedException, DockerException, DockerCertificateException {
+ stop(false);
+ }
+
+ public void stop(Boolean onstart) throws InterruptedException, DockerException, DockerCertificateException {
+ try {
+ if(useCachedContainer!=null && useCachedContainer) {
+ if(!onstart)
+ stopContainer();
+ }else if(onstart)
+ removeAllSameNamedContainers();
+ }
+ catch (Exception e){
+ logger.error("Exception", e);
+ exception = e;
+ }
+ }
+
+ public void setOnTermination(Callable value){
+ this.onTermination = value;
+ }
+
+ public String getName(){
+ return name;
+ }
+ public String getImageName(){
+ return imageName;
+ }
+ public String getContainerName(){
+ return containerName;
+ }
+
+ public String getHostName(){ return hostName;}
+
+ public void removeAllSameNamedContainers(){
+ logger.debug("Removing containers (imageName={})", imageName);
+ try {
+ removeAllSameNamedContainers(containerName);
+ }
+ catch (Exception e){
+ logger.error("Exception", e);
+ exception = e;
+ }
+ }
+
+ public void removeAllSameNamedImages() throws DockerException, InterruptedException, DockerCertificateException {
+ logger.debug("Removing images (imageName={})", imageName);
+
+ removeAllSameNamedImages(imageName);
+ }
+
+ public void addEnvironmentVariable(String keyValue){
+ this.environmentVariables.add(keyValue);
+ }
+
+ public void prepareImage() throws InterruptedException, DockerException, DockerCertificateException, IOException{
+ prepareImage(imageName);
+ };
+
+ public abstract void prepareImage(String imageName) throws InterruptedException, DockerException, DockerCertificateException, IOException;
+
+
+ public Boolean createContainerIfNotExists() throws DockerException, InterruptedException, DockerCertificateException, IOException {
+ if(containerId!=null)
+ return true;
+
+ Boolean requiresToBeStarted = false;
+ List results = findContainersByName(containerName, DockerClient.ListContainersParam.allContainers());
+ if(results.size()==0){
+ containerId = createContainer();
+ requiresToBeStarted = true;
+ }else{
+ for(Container container : results)
+ if(container.state().equals("running"))
+ containerId = results.get(0).id();
+
+ if(containerId==null) {
+ containerId = results.get(0).id();
+ requiresToBeStarted = true;
+ }
+ }
+ return requiresToBeStarted;
+ }
+
+ public void startContainer() throws Exception {
+ logger.debug("Starting container (imageName={}, containerId={})", imageName, containerId);
+ getDockerClient().restartContainer(containerId);
+ connectContainerToNetworks(networks);
+ //logger.debug("Waiting till container will start (imageName={})", imageName);
+ //awaitRunning(dockerClient, containerId);
+ logger.debug("Container started (imageName={}, containerId={})", imageName, containerId);
+ }
+
+ public void startMonitoringAndLogsReading(int since) throws Exception {
+ logger.debug("Starting monitoring & logs reading for container (imageName={})", imageName);
+
+ ExecutorService threadPool = Executors.newCachedThreadPool();
+
+ Callable callable = () -> {
+ //String ret="";
+ LogStream logStream = null;
+
+ String logs="";
+ String prevLogs="";
+ Boolean running = true;
+ while(running){
+ if (skipLogsReading==null || !skipLogsReading){
+ try {
+ logStream = getDockerClient().logs(containerId,
+ DockerClient.LogsParam.stderr(),
+ DockerClient.LogsParam.stdout(),
+ DockerClient.LogsParam.since(since)
+ );
+ logs = logStream.readFully();
+ } catch (Exception e) {
+ logger.debug(String.format("No logs are available (imageName=%s):", imageName), e);
+ } finally {
+ if (logStream != null) {
+ logStream.close();
+ }
+ }
+
+ if (logs.length() > prevLogs.length()) {
+ String logsToPrint = logs.substring(prevLogs.length());
+ if (logsToPrint.toLowerCase().contains("error"))
+ logger.error(logsToPrint);
+ else
+ logger.debug(logsToPrint);
+ prevLogs = logs;
+ }
+ running = getDockerClient().inspectContainer(containerId).state().running();
+ }
+ Thread.sleep(1000);
+ }
+ if(onTermination!=null)
+ onTermination.call();
+ stop();
+ return "";
+ };
+ //if(interruptable) {
+ Future future = threadPool.submit(callable);
+ try {
+ future.get(3000, TimeUnit.MILLISECONDS);
+ } catch (ExecutionException e) {
+ throw new RuntimeException(e.getCause());
+ } catch (InterruptedException e) {
+ logger.debug("Logs reader was failed to attach");
+ Thread.currentThread().interrupt();
+ //throw new TimeoutException();
+ } catch (TimeoutException e) {
+ //logger.debug("Logs reader was attached");
+ //e.printStackTrace();
+ }
+ //}else
+ //callable.call();
+
+ }
+
+ public void waitForContainerFinish() throws DockerException, InterruptedException, DockerCertificateException {
+ logger.debug("Waiting for container finish (imageName={})", imageName);
+ getDockerClient().waitContainer(containerId);
+
+ }
+
+ public void stopContainer(){
+ logger.debug("Stopping containers (imageName={})", imageName);
+ try{
+ if(containerId==null){
+ List results = findContainersByName(containerName, DockerClient.ListContainersParam.withStatusRunning());
+ if(results.size()>0)
+ containerId = results.get(0).id();
+ }
+ if(containerId!=null)
+ getDockerClient().stopContainer(containerId, 0);
+ }
+ catch (Exception e){
+ logger.error("Exception", e);
+ exception = e;
+ }
+ }
+
+
+ private String createContainer() throws DockerException, InterruptedException, DockerCertificateException, IOException {
+
+ if(findImagesByName(imageName).size()==0)
+ prepareImage(imageName);
+
+ logger.debug("Creating container (imageName={})", imageName);
+ boolean removeContainerWhenItExits = false;
+ HostConfig hostConfig = HostConfig.builder()
+ .autoRemove(removeContainerWhenItExits)
+ .portBindings(portBindings)
+ .dns("1.2.3.4")
+ .dnsSearch("rabbit")
+ .build();
+
+ ContainerConfig.Builder builder = ContainerConfig.builder()
+ .hostConfig(hostConfig)
+ .exposedPorts(getExposedPorts())
+ .image(imageName)
+ .env(getEnvironmentVariables());
+
+ ContainerConfig containerConfig = builder .build();
+ ContainerCreation creation = getDockerClient().createContainer(containerConfig, containerName);
+ String contId = creation.id();
+ if (contId == null) {
+ IllegalStateException exception = new IllegalStateException(format("Unable to create container %s", containerName));
+ logger.error(String.format("Failed to create container (imageName=%s): ",imageName), exception);
+ throw exception;
+ }
+
+ return contId;
+ }
+
+ private static void awaitRunning(final DockerClient client, final String containerId)
+ throws Exception {
+ Boolean running = false;
+ while (!running) {
+ final ContainerInfo containerInfo = client.inspectContainer(containerId);
+ running = containerInfo.state().running() ? true : false;
+ Thread.sleep(300);
+ }
+ }
+
+
+
+ private ContainerInfo getContainerInfo(DockerClient dockerClient) {
+ if (containerId == null) {
+ return null;
+ }
+ ContainerInfo info = null;
+ try {
+ info = getDockerClient().inspectContainer(containerId);
+ } catch (ContainerNotFoundException e) {
+ logger.error("The container " + containerId + " is not known.", e);
+ } catch (Throwable e) {
+ logger.error("Error while checking status of container " + containerId + ".", e);
+ }
+ return info;
+ }
+
+ private void connectContainerToNetworks(Collection networks) throws DockerException, InterruptedException, DockerCertificateException {
+ logger.debug("Connecting container to networks (imageName={})", imageName);
+
+// ContainerInfo info = getContainerInfo(dockerClient);
+// Map prev_networks = info.networkSettings().networks();
+// for (String networkName : prev_networks.keySet()) {
+// getDockerClient().disconnectFromNetwork(containerId, networkName);
+// }
+
+ for (String network : networks) {
+ String networkId = createDockerNetworkIfNeeded(dockerClient, network);
+ getDockerClient().connectToNetwork(containerId, networkId);
+ }
+ }
+
+ public String createDockerNetworkIfNeeded(DockerClient dockerClient, String networkName) throws
+ DockerException, InterruptedException, DockerCertificateException {
+ for (Network network : getDockerClient().listNetworks()) {
+ if (network.name() != null && network.name().equals(networkName)) {
+ return network.id();
+ }
+ }
+ NetworkConfig networkConfig = NetworkConfig.builder()
+ .name(networkName)
+ .build();
+ return getDockerClient().createNetwork(networkConfig).id();
+ }
+
+ private Set getExposedPorts() {
+ return portBindings.keySet();
+ }
+
+ private String[] getEnvironmentVariables() {
+ return environmentVariables.toArray(new String[environmentVariables.size()]);
+ }
+
+ private List findContainersByName(String containerName, DockerClient.ListContainersParam param) throws
+ DockerException, InterruptedException, DockerCertificateException {
+ List ret = new ArrayList<>();
+ for(Container container : getDockerClient().listContainers(param)) {
+ for(String name : container.names()){
+ if (name.equals(dockerizeContainerName(containerName)))
+ ret.add(container);
+ }
+ }
+
+ return ret;
+ }
+
+ private void removeAllSameNamedContainers(String containerName) throws
+ DockerException, InterruptedException, DockerCertificateException {
+ for(Container container : findContainersByName(containerName, DockerClient.ListContainersParam.allContainers())) {
+ boolean removed = false;
+ while (!removed) {
+ try {
+ getDockerClient().removeContainer(container.id(), DockerClient.RemoveContainerParam.forceKill());
+ removed = true;
+ containerId = null;
+ } catch (Exception e) {
+ //if(!e.getMessage().contains("not found"))
+ logger.error("Exception", e);
+ }
+ }
+ }
+ }
+
+ private static String dockerizeContainerName(String intendedContainerName) {
+ return format("/%s", intendedContainerName);
+ }
+
+ private List findImagesByName(String imageName) throws DockerException, InterruptedException, DockerCertificateException {
+ List ret = new ArrayList<>();
+ String imageNameToSearch = (imageName.contains(":")?imageName:imageName+":");
+ for (Image image : getDockerClient().listImages(DockerClient.ListImagesParam.allImages())) {
+ ImmutableList repoTags = image.repoTags();
+ if (repoTags != null) {
+ boolean nameMatch = repoTags.stream().anyMatch(name -> name != null && name.contains(imageNameToSearch));
+ if (nameMatch)
+ ret.add(image.id());
+ }
+ }
+ return ret;
+ }
+
+ private void removeAllSameNamedImages(String imageName) throws DockerException, InterruptedException, DockerCertificateException {
+ boolean force = true;
+ boolean dontDeleteUntaggedParents = false;
+ for (String id : findImagesByName(imageName)){
+ getDockerClient().removeImage(id, force, dontDeleteUntaggedParents);
+ }
+ }
+
+
+ public Exception anyExceptions() {
+ return exception;
+ }
+
+ public static String toEnvironmentEntry(String key, String value) {
+ return format("%s=%s", key, value);
+ }
+
+
+ @Override
+ public void close(){
+ logger.debug("Close() (imageName={})", imageName);
+// try {
+// stop();
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// } catch (DockerException e) {
+// e.printStackTrace();
+// } catch (DockerCertificateException e) {
+// e.printStackTrace();
+// }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/org/hobbit/sdk/docker/BuildBasedDockerizer.java b/src/main/java/org/hobbit/sdk/docker/BuildBasedDockerizer.java
index 1d4f05c6..f9968714 100644
--- a/src/main/java/org/hobbit/sdk/docker/BuildBasedDockerizer.java
+++ b/src/main/java/org/hobbit/sdk/docker/BuildBasedDockerizer.java
@@ -1,117 +1,117 @@
-package org.hobbit.sdk.docker;
-
-import org.hobbit.sdk.docker.builders.common.BuildBasedDockersBuilder;
-import com.spotify.docker.client.exceptions.DockerCertificateException;
-import com.spotify.docker.client.exceptions.DockerException;
-
-import java.io.*;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-
-import static java.lang.String.format;
-
-/**
- * @author Pavel Smirnov
- */
-
-public class BuildBasedDockerizer extends AbstractDockerizer {
-
- private static final Charset charset = Charset.forName("UTF-8");
-
-
- private final String imageName;
- private final String containerName;
- private final Path buildDirectory;
- private final Reader dockerFileReader;
- private final Boolean useCachedImage;
-
-
- private String imageId;
- //private String tempDockerFileName;
-
-
-
- public BuildBasedDockerizer(BuildBasedDockersBuilder builder) {
- super(builder);
- imageName = builder.getImageName();
- containerName = builder.getContainerName();
- buildDirectory = builder.getBuildDirectory();
- dockerFileReader = builder.getDockerFileReader();
- useCachedImage = builder.getUseCachedImage();
-
- }
-
- @Override
- public void prepareImage(String imageName) throws InterruptedException, DockerException, DockerCertificateException, IOException {
- buildImage(imageName);
- }
-
- @Override
- public void stop(Boolean onstart) throws InterruptedException, DockerException, DockerCertificateException {
- if(this.useCachedImage==null || this.useCachedImage==false)
- useCachedContainer=false;
-
- super.stop(onstart);
-
- if(onstart) {
- if (this.useCachedImage == null || this.useCachedImage == false) {
- removeAllSameNamedImages();
- }
- }
- }
-
- private void buildImage(String imageName) throws
- InterruptedException, DockerException, IOException, IllegalStateException, DockerCertificateException {
-
- logger.debug("Building image (imageName={})", imageName);
- Path filePath = createTempDockerFile();
- fillDockerFile(filePath);
-
- imageId = getDockerClient().build(buildDirectory, imageName, filePath.getFileName().toString(), message -> {
-
- });
-
- if (imageId == null) {
- IllegalStateException exception = new IllegalStateException(format("Unable to create image %s", imageName));
- logger.error("Exception", exception);
- throw exception;
- }
- removeTempDockerFile(filePath);
- }
-
- private Path createTempDockerFile() throws IOException {
- File file = File.createTempFile("Dockerfile", ".tmp", buildDirectory.toFile());
- return Paths.get(file.getPath());
- }
-
- private void fillDockerFile(Path filePath) throws IOException {
- try (OutputStream outputStream = Files.newOutputStream(filePath, StandardOpenOption.WRITE)) {
- outputStream.write(readAllFromDockerFileReader());
- }
- }
-
- private byte[] readAllFromDockerFileReader() throws IOException {
- try (BufferedReader reader = new BufferedReader(dockerFileReader)) {
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- String line;
- while ((line = reader.readLine()) != null) {
- buffer.write(line.getBytes(charset));
- buffer.write(format("%n").getBytes(charset));
- }
- return buffer.toByteArray();
- }
- }
-
-
- private void removeTempDockerFile(Path path) throws IOException {
- Files.deleteIfExists(path);
- }
-
-// public void pushImage() throws DockerCertificateException, DockerException, InterruptedException {
-// getDockerClient().push(imageName, RegistryAuth.builder().serverAddress("git.project-hobbit.eu:4567").identityToken("").build());
-// }
-
-}
+package org.hobbit.sdk.docker;
+
+import org.hobbit.sdk.docker.builders.BuildBasedDockersBuilder;
+import com.spotify.docker.client.exceptions.DockerCertificateException;
+import com.spotify.docker.client.exceptions.DockerException;
+
+import java.io.*;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+
+import static java.lang.String.format;
+
+/**
+ * @author Pavel Smirnov
+ */
+
+public class BuildBasedDockerizer extends AbstractDockerizer {
+
+ private static final Charset charset = Charset.forName("UTF-8");
+
+
+ private final String imageName;
+ private final String containerName;
+ private final Path buildDirectory;
+ private final Reader dockerFileReader;
+ private final Boolean useCachedImage;
+
+
+ private String imageId;
+ //private String tempDockerFileName;
+
+
+
+ public BuildBasedDockerizer(BuildBasedDockersBuilder builder) {
+ super(builder);
+ imageName = builder.getImageName();
+ containerName = builder.getContainerName();
+ buildDirectory = builder.getBuildDirectory();
+ dockerFileReader = builder.getDockerFileReader();
+ useCachedImage = builder.getUseCachedImage();
+
+ }
+
+ @Override
+ public void prepareImage(String imageName) throws InterruptedException, DockerException, DockerCertificateException, IOException {
+ buildImage(imageName);
+ }
+
+ @Override
+ public void stop(Boolean onstart) throws InterruptedException, DockerException, DockerCertificateException {
+ if(this.useCachedImage==null || this.useCachedImage==false)
+ useCachedContainer=false;
+
+ super.stop(onstart);
+
+ if(onstart) {
+ if (this.useCachedImage == null || this.useCachedImage == false) {
+ removeAllSameNamedImages();
+ }
+ }
+ }
+
+ private void buildImage(String imageName) throws
+ InterruptedException, DockerException, IOException, IllegalStateException, DockerCertificateException {
+
+ logger.debug("Building image (imageName={})", imageName);
+ Path filePath = createTempDockerFile();
+ fillDockerFile(filePath);
+
+ imageId = getDockerClient().build(buildDirectory, imageName, filePath.getFileName().toString(), message -> {
+
+ });
+
+ if (imageId == null) {
+ IllegalStateException exception = new IllegalStateException(format("Unable to create image %s", imageName));
+ logger.error("Exception", exception);
+ throw exception;
+ }
+ removeTempDockerFile(filePath);
+ }
+
+ private Path createTempDockerFile() throws IOException {
+ File file = File.createTempFile("Dockerfile", ".tmp", buildDirectory.toFile());
+ return Paths.get(file.getPath());
+ }
+
+ private void fillDockerFile(Path filePath) throws IOException {
+ try (OutputStream outputStream = Files.newOutputStream(filePath, StandardOpenOption.WRITE)) {
+ outputStream.write(readAllFromDockerFileReader());
+ }
+ }
+
+ private byte[] readAllFromDockerFileReader() throws IOException {
+ try (BufferedReader reader = new BufferedReader(dockerFileReader)) {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ String line;
+ while ((line = reader.readLine()) != null) {
+ buffer.write(line.getBytes(charset));
+ buffer.write(format("%n").getBytes(charset));
+ }
+ return buffer.toByteArray();
+ }
+ }
+
+
+ private void removeTempDockerFile(Path path) throws IOException {
+ Files.deleteIfExists(path);
+ }
+
+// public void pushImage() throws DockerCertificateException, DockerException, InterruptedException {
+// getDockerClient().push(imageName, RegistryAuth.builder().serverAddress("git.project-hobbit.eu:4567").identityToken("").build());
+// }
+
+}
diff --git a/src/main/java/org/hobbit/sdk/docker/PullBasedDockerizer.java b/src/main/java/org/hobbit/sdk/docker/PullBasedDockerizer.java
index 4ccf3da6..40a791a4 100644
--- a/src/main/java/org/hobbit/sdk/docker/PullBasedDockerizer.java
+++ b/src/main/java/org/hobbit/sdk/docker/PullBasedDockerizer.java
@@ -1,31 +1,31 @@
-package org.hobbit.sdk.docker;
-
-import org.hobbit.sdk.docker.builders.common.PullBasedDockersBuilder;
-import com.spotify.docker.client.exceptions.DockerCertificateException;
-import com.spotify.docker.client.exceptions.DockerException;
-
-import java.io.IOException;
-
-/**
- * @author Pavel Smirnov
- */
-
-public class PullBasedDockerizer extends AbstractDockerizer {
-
- public PullBasedDockerizer(PullBasedDockersBuilder builder) {
- super(builder);
- }
-
-
- @Override
- public void prepareImage(String imageName) throws InterruptedException, DockerException, DockerCertificateException, IOException {
- pullImage(imageName);
- }
-
- public void pullImage(String imageName) throws InterruptedException, DockerException, IOException, DockerCertificateException {
- logger.debug("Pulling image (imageName={})", imageName);
- this.getDockerClient().pull(imageName);
- }
-
-
+package org.hobbit.sdk.docker;
+
+import org.hobbit.sdk.docker.builders.PullBasedDockersBuilder;
+import com.spotify.docker.client.exceptions.DockerCertificateException;
+import com.spotify.docker.client.exceptions.DockerException;
+
+import java.io.IOException;
+
+/**
+ * @author Pavel Smirnov
+ */
+
+public class PullBasedDockerizer extends AbstractDockerizer {
+
+ public PullBasedDockerizer(PullBasedDockersBuilder builder) {
+ super(builder);
+ }
+
+
+ @Override
+ public void prepareImage(String imageName) throws InterruptedException, DockerException, DockerCertificateException, IOException {
+ pullImage(imageName);
+ }
+
+ public void pullImage(String imageName) throws InterruptedException, DockerException, IOException, DockerCertificateException {
+ logger.debug("Pulling image (imageName={})", imageName);
+ this.getDockerClient().pull(imageName);
+ }
+
+
}
\ No newline at end of file
diff --git a/src/main/java/org/hobbit/sdk/docker/RabbitMqDockerizer.java b/src/main/java/org/hobbit/sdk/docker/RabbitMqDockerizer.java
index 0ea91d71..b0bcbbe6 100644
--- a/src/main/java/org/hobbit/sdk/docker/RabbitMqDockerizer.java
+++ b/src/main/java/org/hobbit/sdk/docker/RabbitMqDockerizer.java
@@ -1,92 +1,90 @@
-package org.hobbit.sdk.docker;
-
-import com.spotify.docker.client.exceptions.DockerRequestException;
-import org.hobbit.sdk.CommonConstants;
-import org.hobbit.sdk.docker.builders.common.PullBasedDockersBuilder;
-import com.rabbitmq.client.Connection;
-import com.rabbitmq.client.ConnectionFactory;
-import com.spotify.docker.client.exceptions.DockerCertificateException;
-import com.spotify.docker.client.messages.PortBinding;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.concurrent.TimeoutException;
-
-import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
-
-/**
- * Note! Requires Docker to be installed
- *
- * @author Roman Katerinenko
- */
-public class RabbitMqDockerizer extends PullBasedDockerizer {
- private static final Logger logger = LoggerFactory.getLogger(RabbitMqDockerizer.class);
- private final String hostName;
- private final String imageName;
-
- private RabbitMqDockerizer(Builder builder) {
- super(builder);
- hostName = builder.getHostName();
- imageName = builder.getImageName();
- }
-
- @Override
- public void run() {
- try {
-
- super.run();
- waitUntilRunning();
-
- } catch (Exception e) {
-
- logger.error("Exception", e);
- }
- }
-
-
-
- public void waitUntilRunning() throws DockerCertificateException, InterruptedException, TimeoutException {
- logger.debug("Trying to connect to container at {} (imageName={})", hostName, imageName);
-
- ConnectionFactory factory = new ConnectionFactory();
- factory.setHost(hostName);
- boolean connected = false;
- while (!connected) {
- try {
- Connection connection = factory.newConnection();
- connected = true;
- connection.close();
- } catch (IOException e) {
- // ignore
- }
- if(!connected)
- Thread.sleep(300);
- }
- }
-
-
- public static Builder builder() {
- return new Builder();
-
- }
-
- public static class Builder extends PullBasedDockersBuilder {
-
- public Builder() {
- super("RabbitMqDockerizer");
- hostName("rabbit");
- containerName("rabbit");
- imageName("rabbitmq:latest");
- addPortBindings("5672/tcp", PortBinding.of("0.0.0.0", 5672));
- useCachedContainer(true);
- skipLogsReading(true);
- addNetworks(HOBBIT_NETWORKS);
- }
-
-
- public RabbitMqDockerizer build() {
- return new RabbitMqDockerizer(this);
- }
- }
+package org.hobbit.sdk.docker;
+
+import org.hobbit.sdk.docker.builders.PullBasedDockersBuilder;
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
+import com.spotify.docker.client.exceptions.DockerCertificateException;
+import com.spotify.docker.client.messages.PortBinding;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.concurrent.TimeoutException;
+
+import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
+
+/**
+ * Note! Requires Docker to be installed
+ *
+ * @author Roman Katerinenko
+ */
+public class RabbitMqDockerizer extends PullBasedDockerizer {
+ private static final Logger logger = LoggerFactory.getLogger(RabbitMqDockerizer.class);
+ private final String hostName;
+ private final String imageName;
+
+ private RabbitMqDockerizer(Builder builder) {
+ super(builder);
+ hostName = builder.getHostName();
+ imageName = builder.getImageName();
+ }
+
+ @Override
+ public void run() {
+ try {
+
+ super.run();
+ waitUntilRunning();
+
+ } catch (Exception e) {
+
+ logger.error("Exception", e);
+ }
+ }
+
+
+
+ public void waitUntilRunning() throws DockerCertificateException, InterruptedException, TimeoutException {
+ logger.debug("Trying to connect to container at {} (imageName={})", hostName, imageName);
+
+ ConnectionFactory factory = new ConnectionFactory();
+ factory.setHost(hostName);
+ boolean connected = false;
+ while (!connected) {
+ try {
+ Connection connection = factory.newConnection();
+ connected = true;
+ connection.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ if(!connected)
+ Thread.sleep(300);
+ }
+ }
+
+
+ public static Builder builder() {
+ return new Builder();
+
+ }
+
+ public static class Builder extends PullBasedDockersBuilder {
+
+ public Builder() {
+ super("RabbitMqDockerizer");
+ hostName("rabbit");
+ containerName("rabbit");
+ imageName("rabbitmq:latest");
+ addPortBindings("5672/tcp", PortBinding.of("0.0.0.0", 5672));
+ useCachedContainer(true);
+ skipLogsReading(true);
+ addNetworks(HOBBIT_NETWORKS);
+ }
+
+
+ public RabbitMqDockerizer build() {
+ return new RabbitMqDockerizer(this);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/common/AbstractDockersBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/AbstractDockersBuilder.java
similarity index 98%
rename from src/main/java/org/hobbit/sdk/docker/builders/common/AbstractDockersBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/AbstractDockersBuilder.java
index 40f9d9d3..388f2aa0 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/common/AbstractDockersBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/AbstractDockersBuilder.java
@@ -1,4 +1,4 @@
-package org.hobbit.sdk.docker.builders.common;
+package org.hobbit.sdk.docker.builders;
import org.hobbit.sdk.docker.AbstractDockerizer;
import com.spotify.docker.client.messages.PortBinding;
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/common/BothTypesDockersBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/BothTypesDockersBuilder.java
similarity index 95%
rename from src/main/java/org/hobbit/sdk/docker/builders/common/BothTypesDockersBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/BothTypesDockersBuilder.java
index 0f5e5d2c..8b7e2b99 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/common/BothTypesDockersBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/BothTypesDockersBuilder.java
@@ -1,4 +1,4 @@
-package org.hobbit.sdk.docker.builders.common;
+package org.hobbit.sdk.docker.builders;
import org.hobbit.sdk.docker.AbstractDockerizer;
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/common/BuildBasedDockersBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/BuildBasedDockersBuilder.java
similarity index 97%
rename from src/main/java/org/hobbit/sdk/docker/builders/common/BuildBasedDockersBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/BuildBasedDockersBuilder.java
index b6577ad1..81ececd6 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/common/BuildBasedDockersBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/BuildBasedDockersBuilder.java
@@ -1,4 +1,4 @@
-package org.hobbit.sdk.docker.builders.common;
+package org.hobbit.sdk.docker.builders;
import org.hobbit.sdk.docker.BuildBasedDockerizer;
import com.spotify.docker.client.messages.PortBinding;
@@ -103,12 +103,11 @@ public BuildBasedDockersBuilder addNetworks(String... nets){
@Override
public BuildBasedDockerizer build() throws Exception {
-
if(buildDirectory==null)
throw new Exception("Build directory is not specified for "+this.getClass().getSimpleName());
if(dockerFileReader==null)
- throw new Exception("dockerFile reader is not specified for "+this.getClass().getSimpleName()+". You can initialize it by the calling the init()");
+ throw new Exception("dockerFile reader is not specified for "+this.getClass().getSimpleName()+". You can initialize it by the calling the initFileReader()");
BuildBasedDockerizer ret = new BuildBasedDockerizer(this);
return ret;
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/common/DynamicDockerFileBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/DynamicDockerFileBuilder.java
similarity index 93%
rename from src/main/java/org/hobbit/sdk/docker/builders/common/DynamicDockerFileBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/DynamicDockerFileBuilder.java
index 333118a2..b150d9d1 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/common/DynamicDockerFileBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/DynamicDockerFileBuilder.java
@@ -1,146 +1,144 @@
-package org.hobbit.sdk.docker.builders.common;
-
-import org.hobbit.sdk.docker.BuildBasedDockerizer;
-
-import java.io.Reader;
-import java.io.StringReader;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author Pavel Smirnov
- */
-
-public class DynamicDockerFileBuilder extends BuildBasedDockersBuilder {
-
- private Class[] runnerClass;
- private Path dockerWorkDir;
- private Path jarFilePath;
- private List filesToAdd;
-
- public DynamicDockerFileBuilder(String dockerizerName){
- super(dockerizerName);
- filesToAdd = new ArrayList<>();
- }
-
- public DynamicDockerFileBuilder runnerClass(Class... values) {
- this.runnerClass = values;
- return this;
- }
-
- public DynamicDockerFileBuilder dockerWorkDir(String value) {
- this.dockerWorkDir = Paths.get(value);
- return this;
- }
-
- public DynamicDockerFileBuilder jarFilePath(String value) {
- this.jarFilePath = Paths.get(value).toAbsolutePath();
- return this;
- }
-
- public DynamicDockerFileBuilder useCachedImage(Boolean value) {
- super.useCachedImage(value);
- return this;
- }
-
- public DynamicDockerFileBuilder useCachedContainer(Boolean value) {
- super.useCachedContainer(value);
- return this;
- }
-
- public DynamicDockerFileBuilder customDockerFileReader(Reader value) {
- super.dockerFileReader(value);
- return this;
- }
-
- public DynamicDockerFileBuilder imageName(String value) {
- super.imageName(value);
- return this;
- }
-
- public DynamicDockerFileBuilder addFileOrFolder(String path) {
- filesToAdd.add(path);
- return this;
- }
-
- public DynamicDockerFileBuilder init() throws Exception {
- if(runnerClass==null)
- throw new Exception("Runner class is not specified for "+this.getClass().getSimpleName());
-
- if(dockerWorkDir ==null)
- throw new Exception("WorkingDirName class is not specified for "+this.getClass().getSimpleName());
-
- if(jarFilePath ==null)
- throw new Exception("JarFileName class is not specified for "+this.getClass().getSimpleName());
-
- if(!jarFilePath.toFile().exists())
- throw new Exception(jarFilePath +" not found. May be you did not packaged it by 'mvn package -DskipTests=true' first");
-
- List classNames = Arrays.stream(runnerClass).map(c->"\""+c.getCanonicalName()+"\"").collect(Collectors.toList());
- String datasetsStr = "";
-
- for(String dataSetPathStr : filesToAdd){
-
- Path destPathRel = Paths.get(dataSetPathStr);
- if(destPathRel.isAbsolute())
- destPathRel = getBuildDirectory().relativize(destPathRel);
-
- Path parent = destPathRel.getParent();
- List dirsToCreate = new ArrayList<>();
- if(Files.isDirectory(destPathRel))
- dirsToCreate.add(destPathRel.toString());
- while(parent!=null){
- dirsToCreate.add(parent.toString());
- parent=parent.getParent();
- }
-
- for(int i=dirsToCreate.size()-1; i>=0; i--){
- datasetsStr += "RUN mkdir -p "+dockerWorkDir.resolve(dirsToCreate.get(i))+"\n";
- }
-
- Path sourcePath = destPathRel;
- String destPath = dockerWorkDir.resolve(destPathRel).toString();
-
- if(sourcePath.toFile().isDirectory()){
- sourcePath = sourcePath.resolve("*");
- destPath+="/";
- }else {
- if(sourcePath.getParent()!=null)
- destPath = dockerWorkDir.resolve(sourcePath.getParent()).toString();
- else
- destPath = dockerWorkDir.toString();
- }
- datasetsStr += "ADD ./" + sourcePath + " " + destPath + "\n";
- }
-
- Path jarPathRel = jarFilePath;
- if(jarPathRel.isAbsolute())
- jarPathRel = getBuildDirectory().relativize(jarFilePath);
-
- String content =
- "FROM java\n" +
- "RUN mkdir -p "+ dockerWorkDir +"\n" +
- "WORKDIR "+ dockerWorkDir +"\n" +
- datasetsStr+
- "ADD ./"+ jarPathRel +" "+ dockerWorkDir +"\n" +
- "CMD [\"java\", \"-cp\", \""+ jarPathRel.getFileName() +"\", "+ String.join(",", classNames) +"]\n"
- //"CMD [\"java\", \"-cp\", \""+ jarFilePath +"\", \""+runnerClass.getCanonicalName()+"\"]\n"
- ;
- dockerFileReader(new StringReader(content));
- return this;
- }
-
-
-
- @Override
- public BuildBasedDockerizer build() throws Exception {
-// if(getDockerFileReader()==null)
-// createDefaultReader();
- return super.build();
- }
-}
+package org.hobbit.sdk.docker.builders;
+
+import org.hobbit.sdk.docker.BuildBasedDockerizer;
+
+import java.io.Reader;
+import java.io.StringReader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author Pavel Smirnov
+ */
+
+public class DynamicDockerFileBuilder extends BuildBasedDockersBuilder {
+
+ private Class[] runnerClass;
+ private Path dockerWorkDir;
+ private Path jarFilePath;
+ private List filesToAdd;
+
+ public DynamicDockerFileBuilder(String dockerizerName){
+ super(dockerizerName);
+ filesToAdd = new ArrayList<>();
+ }
+
+ public DynamicDockerFileBuilder runnerClass(Class... values) {
+ this.runnerClass = values;
+ return this;
+ }
+
+ public DynamicDockerFileBuilder dockerWorkDir(String value) {
+ this.dockerWorkDir = Paths.get(value);
+ return this;
+ }
+
+ public DynamicDockerFileBuilder jarFilePath(String value) {
+ this.jarFilePath = Paths.get(value).toAbsolutePath();
+ return this;
+ }
+
+ public DynamicDockerFileBuilder useCachedImage(Boolean value) {
+ super.useCachedImage(value);
+ return this;
+ }
+
+ public DynamicDockerFileBuilder useCachedContainer(Boolean value) {
+ super.useCachedContainer(value);
+ return this;
+ }
+
+ public DynamicDockerFileBuilder customDockerFileReader(Reader value) {
+ super.dockerFileReader(value);
+ return this;
+ }
+
+ public DynamicDockerFileBuilder imageName(String value) {
+ super.imageName(value);
+ return this;
+ }
+
+ public DynamicDockerFileBuilder addFileOrFolder(String path) {
+ filesToAdd.add(path);
+ return this;
+ }
+
+ private DynamicDockerFileBuilder initFileReader() throws Exception {
+ if(runnerClass==null)
+ throw new Exception("Runner class is not specified for "+this.getClass().getSimpleName());
+
+ if(dockerWorkDir ==null)
+ throw new Exception("WorkingDirName class is not specified for "+this.getClass().getSimpleName());
+
+ if(jarFilePath ==null)
+ throw new Exception("JarFileName class is not specified for "+this.getClass().getSimpleName());
+
+ if(!jarFilePath.toFile().exists())
+ throw new Exception(jarFilePath +" not found. May be you did not packaged it by 'mvn package -DskipTests=true' first");
+
+ List classNames = Arrays.stream(runnerClass).map(c->"\""+c.getCanonicalName()+"\"").collect(Collectors.toList());
+ String datasetsStr = "";
+
+ for(String dataSetPathStr : filesToAdd){
+
+ Path destPathRel = Paths.get(dataSetPathStr);
+ if(destPathRel.isAbsolute())
+ destPathRel = getBuildDirectory().relativize(destPathRel);
+
+ Path parent = destPathRel.getParent();
+ List dirsToCreate = new ArrayList<>();
+ if(Files.isDirectory(destPathRel))
+ dirsToCreate.add(destPathRel.toString());
+ while(parent!=null){
+ dirsToCreate.add(parent.toString());
+ parent=parent.getParent();
+ }
+
+ for(int i=dirsToCreate.size()-1; i>=0; i--){
+ datasetsStr += "RUN mkdir -p "+dockerWorkDir.resolve(dirsToCreate.get(i))+"\n";
+ }
+
+ Path sourcePath = destPathRel;
+ String destPath = dockerWorkDir.resolve(destPathRel).toString();
+
+ if(sourcePath.toFile().isDirectory()){
+ sourcePath = sourcePath.resolve("*");
+ destPath+="/";
+ }else {
+ if(sourcePath.getParent()!=null)
+ destPath = dockerWorkDir.resolve(sourcePath.getParent()).toString();
+ else
+ destPath = dockerWorkDir.toString();
+ }
+ datasetsStr += "ADD ./" + sourcePath + " " + destPath + "\n";
+ }
+
+ Path jarPathRel = jarFilePath;
+ if(jarPathRel.isAbsolute())
+ jarPathRel = getBuildDirectory().relativize(jarFilePath);
+
+ String content =
+ "FROM java\n" +
+ "RUN mkdir -p "+ dockerWorkDir +"\n" +
+ "WORKDIR "+ dockerWorkDir +"\n" +
+ datasetsStr+
+ "ADD ./"+ jarPathRel +" "+ dockerWorkDir +"\n" +
+ "CMD [\"java\", \"-cp\", \""+ jarPathRel.getFileName() +"\", "+ String.join(",", classNames) +"]\n"
+ //"CMD [\"java\", \"-cp\", \""+ jarFilePath +"\", \""+runnerClass.getCanonicalName()+"\"]\n"
+ ;
+ dockerFileReader(new StringReader(content));
+ return this;
+ }
+
+ @Override
+ public BuildBasedDockerizer build() throws Exception {
+ if(getDockerFileReader()==null)
+ initFileReader();
+ return super.build();
+ }
+}
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/common/PullBasedDockersBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/PullBasedDockersBuilder.java
similarity index 88%
rename from src/main/java/org/hobbit/sdk/docker/builders/common/PullBasedDockersBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/PullBasedDockersBuilder.java
index fc0c5e2b..1381f022 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/common/PullBasedDockersBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/PullBasedDockersBuilder.java
@@ -1,4 +1,4 @@
-package org.hobbit.sdk.docker.builders.common;
+package org.hobbit.sdk.docker.builders;
import org.hobbit.sdk.docker.PullBasedDockerizer;
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/BenchmarkDockerBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/BenchmarkDockerBuilder.java
similarity index 73%
rename from src/main/java/org/hobbit/sdk/docker/builders/BenchmarkDockerBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/hobbit/BenchmarkDockerBuilder.java
index b82bb4f2..106dce8e 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/BenchmarkDockerBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/BenchmarkDockerBuilder.java
@@ -1,11 +1,7 @@
-package org.hobbit.sdk.docker.builders;
-
-import org.hobbit.sdk.JenaKeyValue;
-import org.hobbit.sdk.docker.AbstractDockerizer;
-import org.hobbit.sdk.docker.builders.common.AbstractDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.BothTypesDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.DynamicDockerFileBuilder;
-import org.hobbit.sdk.docker.builders.common.PullBasedDockersBuilder;
+package org.hobbit.sdk.docker.builders.hobbit;
+
+import org.hobbit.sdk.docker.builders.AbstractDockersBuilder;
+import org.hobbit.sdk.docker.builders.BothTypesDockersBuilder;
import static org.hobbit.core.Constants.*;
import static org.hobbit.sdk.CommonConstants.*;
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/DataGenDockerBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/DataGenDockerBuilder.java
similarity index 77%
rename from src/main/java/org/hobbit/sdk/docker/builders/DataGenDockerBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/hobbit/DataGenDockerBuilder.java
index 9134adc1..26b817cf 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/DataGenDockerBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/DataGenDockerBuilder.java
@@ -1,9 +1,7 @@
-package org.hobbit.sdk.docker.builders;
+package org.hobbit.sdk.docker.builders.hobbit;
-import org.hobbit.sdk.docker.builders.common.AbstractDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.BothTypesDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.DynamicDockerFileBuilder;
-import org.hobbit.sdk.docker.builders.common.PullBasedDockersBuilder;
+import org.hobbit.sdk.docker.builders.AbstractDockersBuilder;
+import org.hobbit.sdk.docker.builders.BothTypesDockersBuilder;
import static org.hobbit.core.Constants.*;
import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/EvalModuleDockerBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/EvalModuleDockerBuilder.java
similarity index 73%
rename from src/main/java/org/hobbit/sdk/docker/builders/EvalModuleDockerBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/hobbit/EvalModuleDockerBuilder.java
index 9d70c047..d6c54408 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/EvalModuleDockerBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/EvalModuleDockerBuilder.java
@@ -1,40 +1,37 @@
-package org.hobbit.sdk.docker.builders;
-
-import org.hobbit.sdk.CommonConstants;
-import org.hobbit.sdk.docker.builders.common.AbstractDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.BothTypesDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.BuildBasedDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.DynamicDockerFileBuilder;
-
-import static org.hobbit.core.Constants.*;
-import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
-
-
-/**
- * @author Pavel Smirnov
- */
-
-public class EvalModuleDockerBuilder extends BothTypesDockersBuilder {
- private static final String name = "eval-module";
-
- public EvalModuleDockerBuilder(AbstractDockersBuilder builder) {
- super(builder);
- }
-
-
- @Override
- public void addEnvVars(AbstractDockersBuilder ret) {
- ret.addEnvironmentVariable(RABBIT_MQ_HOST_NAME_KEY, (String)System.getenv().get(RABBIT_MQ_HOST_NAME_KEY));
- ret.addEnvironmentVariable(HOBBIT_SESSION_ID_KEY, (String)System.getenv().get(HOBBIT_SESSION_ID_KEY));
- ret.addNetworks(HOBBIT_NETWORKS);
-
- ret.addEnvironmentVariable(HOBBIT_EXPERIMENT_URI_KEY, (String)System.getenv().get(HOBBIT_EXPERIMENT_URI_KEY));
- ret.addEnvironmentVariable(CONTAINER_NAME_KEY, ret.getContainerName());
- }
-
- @Override
- public String getName() {
- return name;
- }
-
-}
+package org.hobbit.sdk.docker.builders.hobbit;
+
+import org.hobbit.sdk.docker.builders.AbstractDockersBuilder;
+import org.hobbit.sdk.docker.builders.BothTypesDockersBuilder;
+
+import static org.hobbit.core.Constants.*;
+import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
+
+
+/**
+ * @author Pavel Smirnov
+ */
+
+public class EvalModuleDockerBuilder extends BothTypesDockersBuilder {
+ private static final String name = "eval-module";
+
+ public EvalModuleDockerBuilder(AbstractDockersBuilder builder) {
+ super(builder);
+ }
+
+
+ @Override
+ public void addEnvVars(AbstractDockersBuilder ret) {
+ ret.addEnvironmentVariable(RABBIT_MQ_HOST_NAME_KEY, (String)System.getenv().get(RABBIT_MQ_HOST_NAME_KEY));
+ ret.addEnvironmentVariable(HOBBIT_SESSION_ID_KEY, (String)System.getenv().get(HOBBIT_SESSION_ID_KEY));
+ ret.addNetworks(HOBBIT_NETWORKS);
+
+ ret.addEnvironmentVariable(HOBBIT_EXPERIMENT_URI_KEY, (String)System.getenv().get(HOBBIT_EXPERIMENT_URI_KEY));
+ ret.addEnvironmentVariable(CONTAINER_NAME_KEY, ret.getContainerName());
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+}
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/EvalStorageDockerBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/EvalStorageDockerBuilder.java
similarity index 77%
rename from src/main/java/org/hobbit/sdk/docker/builders/EvalStorageDockerBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/hobbit/EvalStorageDockerBuilder.java
index 48c1fc14..44dd4700 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/EvalStorageDockerBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/EvalStorageDockerBuilder.java
@@ -1,9 +1,7 @@
-package org.hobbit.sdk.docker.builders;
+package org.hobbit.sdk.docker.builders.hobbit;
-import org.hobbit.sdk.docker.builders.common.AbstractDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.BothTypesDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.BuildBasedDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.DynamicDockerFileBuilder;
+import org.hobbit.sdk.docker.builders.AbstractDockersBuilder;
+import org.hobbit.sdk.docker.builders.BothTypesDockersBuilder;
import static org.hobbit.core.Constants.*;
import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/SystemAdapterDockerBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/SystemAdapterDockerBuilder.java
similarity index 77%
rename from src/main/java/org/hobbit/sdk/docker/builders/SystemAdapterDockerBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/hobbit/SystemAdapterDockerBuilder.java
index 5f2c474f..c4352c13 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/SystemAdapterDockerBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/SystemAdapterDockerBuilder.java
@@ -1,51 +1,47 @@
-package org.hobbit.sdk.docker.builders;
-
-import org.hobbit.sdk.CommonConstants;
-import org.hobbit.sdk.JenaKeyValue;
-import org.hobbit.sdk.docker.builders.common.AbstractDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.BothTypesDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.BuildBasedDockersBuilder;
-import org.hobbit.sdk.docker.builders.common.DynamicDockerFileBuilder;
-
-import static org.hobbit.core.Constants.*;
-import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
-
-
-/**
- * @author Pavel Smirnov
- */
-
-public class SystemAdapterDockerBuilder extends BothTypesDockersBuilder {
- private static final String name = "system-adapter";
-// private String parameters = new JenaKeyValue().encodeToString();
-
- public SystemAdapterDockerBuilder(AbstractDockersBuilder builder) {
- super(builder);
-
- }
-
-// public SystemAdapterDockerBuilder parameters(String parameters){
-// this.parameters = parameters;
-// return this;
-// }
-//
-// public SystemAdapterDockerBuilder parameters(JenaKeyValue parameters){
-// this.parameters = parameters.encodeToString();
-// return this;
-// }
-
- @Override
- public void addEnvVars(AbstractDockersBuilder ret) {
- ret.addEnvironmentVariable(RABBIT_MQ_HOST_NAME_KEY, (String)System.getenv().get(RABBIT_MQ_HOST_NAME_KEY));
- ret.addEnvironmentVariable(HOBBIT_SESSION_ID_KEY, (String)System.getenv().get(HOBBIT_SESSION_ID_KEY));
- ret.addNetworks(HOBBIT_NETWORKS);
-
- ret.addEnvironmentVariable(SYSTEM_PARAMETERS_MODEL_KEY, (String)System.getenv().get(SYSTEM_PARAMETERS_MODEL_KEY));
- ret.addEnvironmentVariable(CONTAINER_NAME_KEY, ret.getContainerName());
- }
-
- @Override
- public String getName() {
- return name;
- }
-}
+package org.hobbit.sdk.docker.builders.hobbit;
+
+import org.hobbit.sdk.docker.builders.AbstractDockersBuilder;
+import org.hobbit.sdk.docker.builders.BothTypesDockersBuilder;
+
+import static org.hobbit.core.Constants.*;
+import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
+
+
+/**
+ * @author Pavel Smirnov
+ */
+
+public class SystemAdapterDockerBuilder extends BothTypesDockersBuilder {
+ private static final String name = "system-adapter";
+// private String parameters = new JenaKeyValue().encodeToString();
+
+ public SystemAdapterDockerBuilder(AbstractDockersBuilder builder) {
+ super(builder);
+
+ }
+
+// public SystemAdapterDockerBuilder parameters(String parameters){
+// this.parameters = parameters;
+// return this;
+// }
+//
+// public SystemAdapterDockerBuilder parameters(JenaKeyValue parameters){
+// this.parameters = parameters.encodeToString();
+// return this;
+// }
+
+ @Override
+ public void addEnvVars(AbstractDockersBuilder ret) {
+ ret.addEnvironmentVariable(RABBIT_MQ_HOST_NAME_KEY, (String)System.getenv().get(RABBIT_MQ_HOST_NAME_KEY));
+ ret.addEnvironmentVariable(HOBBIT_SESSION_ID_KEY, (String)System.getenv().get(HOBBIT_SESSION_ID_KEY));
+ ret.addNetworks(HOBBIT_NETWORKS);
+
+ ret.addEnvironmentVariable(SYSTEM_PARAMETERS_MODEL_KEY, (String)System.getenv().get(SYSTEM_PARAMETERS_MODEL_KEY));
+ ret.addEnvironmentVariable(CONTAINER_NAME_KEY, ret.getContainerName());
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+}
diff --git a/src/main/java/org/hobbit/sdk/docker/builders/TaskGenDockerBuilder.java b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/TaskGenDockerBuilder.java
similarity index 83%
rename from src/main/java/org/hobbit/sdk/docker/builders/TaskGenDockerBuilder.java
rename to src/main/java/org/hobbit/sdk/docker/builders/hobbit/TaskGenDockerBuilder.java
index 738a5ab0..b0253096 100644
--- a/src/main/java/org/hobbit/sdk/docker/builders/TaskGenDockerBuilder.java
+++ b/src/main/java/org/hobbit/sdk/docker/builders/hobbit/TaskGenDockerBuilder.java
@@ -1,39 +1,39 @@
-package org.hobbit.sdk.docker.builders;
-
-import org.hobbit.sdk.CommonConstants;
-import org.hobbit.sdk.docker.builders.common.*;
-
-import static org.hobbit.core.Constants.*;
-import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
-
-
-/**
- * @author Pavel Smirnov
- */
-
-public class TaskGenDockerBuilder extends BothTypesDockersBuilder {
- private static final String name = "task-generator";
-
- public TaskGenDockerBuilder(AbstractDockersBuilder builder) {
- super(builder);
- }
-
- @Override
- public void addEnvVars(AbstractDockersBuilder ret) {
- ret.addEnvironmentVariable(RABBIT_MQ_HOST_NAME_KEY, (String)System.getenv().get(RABBIT_MQ_HOST_NAME_KEY));
- ret.addEnvironmentVariable(HOBBIT_SESSION_ID_KEY, (String)System.getenv().get(HOBBIT_SESSION_ID_KEY));
- ret.addNetworks(HOBBIT_NETWORKS);
-
- ret.addEnvironmentVariable(GENERATOR_ID_KEY, (String)System.getenv().get(GENERATOR_ID_KEY));
- ret.addEnvironmentVariable(GENERATOR_COUNT_KEY, (String)System.getenv().get(GENERATOR_COUNT_KEY));
- ret.addEnvironmentVariable(CONTAINER_NAME_KEY, ret.getContainerName());
- }
-
- @Override
- public String getName() {
- return name;
- }
-}
-
-
-
+package org.hobbit.sdk.docker.builders.hobbit;
+
+import org.hobbit.sdk.docker.builders.AbstractDockersBuilder;
+import org.hobbit.sdk.docker.builders.BothTypesDockersBuilder;
+
+import static org.hobbit.core.Constants.*;
+import static org.hobbit.sdk.CommonConstants.HOBBIT_NETWORKS;
+
+
+/**
+ * @author Pavel Smirnov
+ */
+
+public class TaskGenDockerBuilder extends BothTypesDockersBuilder {
+ private static final String name = "task-generator";
+
+ public TaskGenDockerBuilder(AbstractDockersBuilder builder) {
+ super(builder);
+ }
+
+ @Override
+ public void addEnvVars(AbstractDockersBuilder ret) {
+ ret.addEnvironmentVariable(RABBIT_MQ_HOST_NAME_KEY, (String)System.getenv().get(RABBIT_MQ_HOST_NAME_KEY));
+ ret.addEnvironmentVariable(HOBBIT_SESSION_ID_KEY, (String)System.getenv().get(HOBBIT_SESSION_ID_KEY));
+ ret.addNetworks(HOBBIT_NETWORKS);
+
+ ret.addEnvironmentVariable(GENERATOR_ID_KEY, (String)System.getenv().get(GENERATOR_ID_KEY));
+ ret.addEnvironmentVariable(GENERATOR_COUNT_KEY, (String)System.getenv().get(GENERATOR_COUNT_KEY));
+ ret.addEnvironmentVariable(CONTAINER_NAME_KEY, ret.getContainerName());
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+}
+
+
+
diff --git a/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyBenchmarkController.java b/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyBenchmarkController.java
index 6aded81a..c799874f 100644
--- a/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyBenchmarkController.java
+++ b/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyBenchmarkController.java
@@ -11,6 +11,7 @@
import static org.hobbit.sdk.examples.dummybenchmark.docker.DummyDockersBuilder.*;
+
/**
* This code is here just for testing and debugging the SDK.
* For your projects please use code from the https://github.com/hobbit-project/java-sdk-example
diff --git a/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyDataGenerator.java b/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyDataGenerator.java
index 92ae7384..e78039a6 100644
--- a/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyDataGenerator.java
+++ b/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyDataGenerator.java
@@ -18,7 +18,7 @@ public class DummyDataGenerator extends AbstractDataGenerator {
@Override
public void init() throws Exception {
- // Always init the super class first!
+ // Always initFileReader the super class first!
super.init();
logger.debug("Init()");
diff --git a/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyTaskGenerator.java b/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyTaskGenerator.java
index 7c7989ca..624507ce 100644
--- a/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyTaskGenerator.java
+++ b/src/main/java/org/hobbit/sdk/examples/dummybenchmark/DummyTaskGenerator.java
@@ -18,7 +18,7 @@ public class DummyTaskGenerator extends AbstractTaskGenerator {
@Override
public void init() throws Exception {
- // Always init the super class first!
+ // Always initFileReader the super class first!
super.init();
logger.debug("Init()");
if(System.getenv().containsKey(EXPERIMENT_URI+"/benchmarkParam1")){
diff --git a/src/test/java/org/hobbit/sdk/BuildBasedDockerizerTest.java b/src/test/java/org/hobbit/sdk/BuildBasedDockerizerTest.java
index b5de26c5..e258527b 100644
--- a/src/test/java/org/hobbit/sdk/BuildBasedDockerizerTest.java
+++ b/src/test/java/org/hobbit/sdk/BuildBasedDockerizerTest.java
@@ -2,7 +2,7 @@
import org.hobbit.sdk.docker.AbstractDockerizer;
import org.hobbit.sdk.docker.BuildBasedDockerizer;
-import org.hobbit.sdk.docker.builders.common.BuildBasedDockersBuilder;
+import org.hobbit.sdk.docker.builders.BuildBasedDockersBuilder;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
diff --git a/src/test/java/org/hobbit/sdk/DummyBenchmarkDockerizedTest.java b/src/test/java/org/hobbit/sdk/DummyBenchmarkDockerizedTest.java
deleted file mode 100644
index 6ca5ba6d..00000000
--- a/src/test/java/org/hobbit/sdk/DummyBenchmarkDockerizedTest.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.hobbit.sdk;
-
-import org.hobbit.core.components.Component;
-import org.hobbit.sdk.docker.AbstractDockerizer;
-import org.hobbit.sdk.docker.RabbitMqDockerizer;
-import org.hobbit.sdk.docker.builders.*;
-import org.hobbit.sdk.examples.dummybenchmark.*;
-import org.hobbit.sdk.examples.dummybenchmark.docker.DummyDockersBuilder;
-import org.hobbit.sdk.utils.CommandQueueListener;
-import org.hobbit.sdk.utils.commandreactions.MultipleCommandsReaction;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.Date;
-
-import static org.hobbit.sdk.CommonConstants.EXPERIMENT_URI;
-import static org.hobbit.sdk.examples.dummybenchmark.docker.DummyDockersBuilder.*;
-
-/**
- * @author Pavel Smirnov
- * This code here is just for testing and debugging SDK.
- * For your projects please use code from the https://github.com/hobbit-project/java-sdk-example
- */
-
-public class DummyBenchmarkDockerizedTest extends EnvironmentVariablesWrapper {
-
- private RabbitMqDockerizer rabbitMqDockerizer;
- private ComponentsExecutor componentsExecutor;
- private CommandQueueListener commandQueueListener;
-
- BenchmarkDockerBuilder benchmarkBuilder;
- DataGenDockerBuilder dataGeneratorBuilder;
- TaskGenDockerBuilder taskGeneratorBuilder;
- EvalStorageDockerBuilder evalStorageBuilder;
- SystemAdapterDockerBuilder systemAdapterBuilder;
- EvalModuleDockerBuilder evalModuleBuilder;
-
- Component benchmarkController;
- Component dataGen;
- Component taskGen;
- Component evalStorage;
- Component evalModule;
- Component systemAdapter;
-
- public void init(Boolean useCachedImages) throws Exception {
-
- rabbitMqDockerizer = RabbitMqDockerizer.builder().build();
-
- setupCommunicationEnvironmentVariables(rabbitMqDockerizer.getHostName(), "session_"+String.valueOf(new Date().getTime()));
- setupBenchmarkEnvironmentVariables(EXPERIMENT_URI, createBenchmarkParameters());
- setupGeneratorEnvironmentVariables(1,1);
- setupSystemEnvironmentVariables(SYSTEM_URI, createSystemParameters());
-
- benchmarkBuilder = new BenchmarkDockerBuilder(new DummyDockersBuilder(DummyBenchmarkController.class, DUMMY_BENCHMARK_IMAGE_NAME).useCachedImage(useCachedImages).init());
- dataGeneratorBuilder = new DataGenDockerBuilder(new DummyDockersBuilder(DummyDataGenerator.class, DUMMY_DATAGEN_IMAGE_NAME).useCachedImage(useCachedImages).addFileOrFolder("data").init());
- taskGeneratorBuilder = new TaskGenDockerBuilder(new DummyDockersBuilder(DummyTaskGenerator.class, DUMMY_TASKGEN_IMAGE_NAME).useCachedImage(useCachedImages).init());
-
- evalStorageBuilder = new EvalStorageDockerBuilder(new DummyDockersBuilder(InMemoryEvalStorage.class, DUMMY_EVAL_STORAGE_IMAGE_NAME).useCachedImage(useCachedImages).init());
-
- systemAdapterBuilder = new SystemAdapterDockerBuilder(new DummyDockersBuilder(DummySystemAdapter.class, DUMMY_SYSTEM_IMAGE_NAME).useCachedImage(useCachedImages).init());
- evalModuleBuilder = new EvalModuleDockerBuilder(new DummyDockersBuilder(DummyEvalModule.class, DUMMY_EVALMODULE_IMAGE_NAME).useCachedImage(useCachedImages).init());
-
- benchmarkController = benchmarkBuilder.build();
- dataGen = new DummyDataGenerator();
- //dataGen = dataGeneratorBuilder.build();
- taskGen = taskGeneratorBuilder.build();
- evalStorage = evalStorageBuilder.build();
- evalModule = evalModuleBuilder.build();
- systemAdapter = systemAdapterBuilder.build();
- }
-
- @Test
- @Ignore
- public void buildImages() throws Exception {
-
- init(false);
-
- ((AbstractDockerizer)benchmarkController).prepareImage();
- ((AbstractDockerizer)dataGen).prepareImage();
- ((AbstractDockerizer)taskGen).prepareImage();
- ((AbstractDockerizer)evalStorage).prepareImage();
- ((AbstractDockerizer)systemAdapter).prepareImage();
- ((AbstractDockerizer)evalModule).prepareImage();
- }
-
- @Test
- public void checkHealth() throws Exception {
-
- Boolean useCachedImages = true;
-
- init(useCachedImages);
-
- commandQueueListener = new CommandQueueListener();
- componentsExecutor = new ComponentsExecutor(commandQueueListener, environmentVariables);
-
- rabbitMqDockerizer.run();
-
-
- commandQueueListener.setCommandReactions(
- new MultipleCommandsReaction(componentsExecutor, commandQueueListener)
- .dataGenerator(dataGen).dataGeneratorImageName(dataGeneratorBuilder.getImageName())
- .taskGenerator(taskGen).taskGeneratorImageName(taskGeneratorBuilder.getImageName())
- .evalStorage(evalStorage).evalStorageImageName(evalStorageBuilder.getImageName())
- .evalModule(evalModule).evalModuleImageName(evalModuleBuilder.getImageName())
- .systemContainerId(systemAdapterBuilder.getImageName())
- );
-
- componentsExecutor.submit(commandQueueListener);
- commandQueueListener.waitForInitialisation();
-
- //you can run clear java-code instead of dockerized one
-
- //benchmarkController = new DummyBenchmarkController();
- //systemAdapter = new DummySystemAdapter();
-
- componentsExecutor.submit(benchmarkController);
- componentsExecutor.submit(systemAdapter, systemAdapterBuilder.getImageName());
-
- commandQueueListener.waitForTermination();
- commandQueueListener.terminate();
- componentsExecutor.shutdown();
-
- rabbitMqDockerizer.stop();
-
- Assert.assertFalse(componentsExecutor.anyExceptions());
- }
-
-
- public JenaKeyValue createBenchmarkParameters(){
- JenaKeyValue kv = new JenaKeyValue();
- kv.setValue(BENCHMARK_URI+"benchmarkParam1", 123);
- kv.setValue(BENCHMARK_URI+"benchmarkParam2", 456);
- return kv;
- }
-
- public JenaKeyValue createSystemParameters(){
- JenaKeyValue kv = new JenaKeyValue();
- kv.setValue(SYSTEM_URI+"systemParam1", 123);
- return kv;
- }
-
-
-}
diff --git a/src/test/java/org/hobbit/sdk/DummyBenchmarkTest.java b/src/test/java/org/hobbit/sdk/DummyBenchmarkTest.java
index 2c6053bb..818615ca 100644
--- a/src/test/java/org/hobbit/sdk/DummyBenchmarkTest.java
+++ b/src/test/java/org/hobbit/sdk/DummyBenchmarkTest.java
@@ -1,22 +1,20 @@
package org.hobbit.sdk;
-import org.hobbit.core.Constants;
import org.hobbit.core.components.Component;
import org.hobbit.sdk.docker.AbstractDockerizer;
import org.hobbit.sdk.docker.RabbitMqDockerizer;
+import org.hobbit.sdk.docker.builders.hobbit.*;
import org.hobbit.sdk.examples.dummybenchmark.*;
+import org.hobbit.sdk.examples.dummybenchmark.docker.*;
import org.hobbit.sdk.utils.CommandQueueListener;
import org.hobbit.sdk.utils.commandreactions.MultipleCommandsReaction;
-
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import java.util.Date;
-import static org.hobbit.core.Constants.BENCHMARK_PARAMETERS_MODEL_KEY;
-import static org.hobbit.core.Constants.EXPERIMENT_URI_NS;
-import static org.hobbit.core.Constants.SYSTEM_PARAMETERS_MODEL_KEY;
-import static org.hobbit.sdk.CommonConstants.*;
+import static org.hobbit.sdk.CommonConstants.EXPERIMENT_URI;
import static org.hobbit.sdk.examples.dummybenchmark.docker.DummyDockersBuilder.*;
/**
@@ -27,67 +25,122 @@
public class DummyBenchmarkTest extends EnvironmentVariablesWrapper {
- private AbstractDockerizer rabbitMqDockerizer;
+ private RabbitMqDockerizer rabbitMqDockerizer;
private ComponentsExecutor componentsExecutor;
private CommandQueueListener commandQueueListener;
- Component benchmark = new DummyBenchmarkController();
- Component datagen = new DummyDataGenerator();
- Component taskgen = new DummyTaskGenerator();
- Component evalstorage = new InMemoryEvalStorage();
- Component system = new DummySystemAdapter();
- Component evalmodule = new DummyEvalModule();
+ BenchmarkDockerBuilder benchmarkBuilder;
+ DataGenDockerBuilder dataGeneratorBuilder;
+ TaskGenDockerBuilder taskGeneratorBuilder;
+ EvalStorageDockerBuilder evalStorageBuilder;
+ SystemAdapterDockerBuilder systemAdapterBuilder;
+ EvalModuleDockerBuilder evalModuleBuilder;
+
+ public void init(Boolean useCachedImages) throws Exception {
+
+ benchmarkBuilder = new BenchmarkDockerBuilder(new DummyDockersBuilder(DummyBenchmarkController.class, DUMMY_BENCHMARK_IMAGE_NAME).useCachedImage(useCachedImages));
+ dataGeneratorBuilder = new DataGenDockerBuilder(new DummyDockersBuilder(DummyDataGenerator.class, DUMMY_DATAGEN_IMAGE_NAME).useCachedImage(useCachedImages).addFileOrFolder("data"));
+ taskGeneratorBuilder = new TaskGenDockerBuilder(new DummyDockersBuilder(DummyTaskGenerator.class, DUMMY_TASKGEN_IMAGE_NAME).useCachedImage(useCachedImages));
+ evalStorageBuilder = new EvalStorageDockerBuilder(new DummyDockersBuilder(InMemoryEvalStorage.class, DUMMY_EVAL_STORAGE_IMAGE_NAME).useCachedImage(useCachedImages));
+ systemAdapterBuilder = new SystemAdapterDockerBuilder(new DummyDockersBuilder(DummySystemAdapter.class, DUMMY_SYSTEM_IMAGE_NAME).useCachedImage(useCachedImages));
+ evalModuleBuilder = new EvalModuleDockerBuilder(new DummyDockersBuilder(DummyEvalModule.class, DUMMY_EVALMODULE_IMAGE_NAME).useCachedImage(useCachedImages));
+ }
@Test
- public void checkHealth() throws Exception {
+ @Ignore
+ public void buildImages() throws Exception {
+
+ init(false);
+ ((AbstractDockerizer)benchmarkBuilder.build()).prepareImage();
+ ((AbstractDockerizer)dataGeneratorBuilder.build()).prepareImage();
+ ((AbstractDockerizer)taskGeneratorBuilder.build()).prepareImage();
+ ((AbstractDockerizer)evalStorageBuilder.build()).prepareImage();
+ ((AbstractDockerizer)evalModuleBuilder.build()).prepareImage();
+ ((AbstractDockerizer)systemAdapterBuilder.build()).prepareImage();
+ }
- commandQueueListener = new CommandQueueListener();
- componentsExecutor = new ComponentsExecutor(commandQueueListener, environmentVariables);
+ @Test
+ public void checkHealth() throws Exception{
+ checkHealth(false);
+ }
- rabbitMqDockerizer = RabbitMqDockerizer.builder()
- .build();
- rabbitMqDockerizer.run();
+ @Test
+ public void checkHealthDockerized() throws Exception{
+ checkHealth(true);
+ }
+
+ private void checkHealth(Boolean dockerize) throws Exception {
+
+ Boolean useCachedImages = true;
+
+ init(useCachedImages);
+
+ rabbitMqDockerizer = RabbitMqDockerizer.builder().build();
- String systemContainerId = "exampleSystem";
setupCommunicationEnvironmentVariables(rabbitMqDockerizer.getHostName(), "session_"+String.valueOf(new Date().getTime()));
setupBenchmarkEnvironmentVariables(EXPERIMENT_URI, createBenchmarkParameters());
+ setupGeneratorEnvironmentVariables(1,1);
setupSystemEnvironmentVariables(SYSTEM_URI, createSystemParameters());
+ commandQueueListener = new CommandQueueListener();
+ componentsExecutor = new ComponentsExecutor(commandQueueListener, environmentVariables);
+
+ rabbitMqDockerizer.run();
+
+ Component benchmarkController = new DummyBenchmarkController();
+ Component dataGen = new DummyDataGenerator();
+ Component taskGen = new DummyTaskGenerator();
+ Component evalStorage = new InMemoryEvalStorage();
+ Component evalModule = new DummyEvalModule();
+ Component systemAdapter = new DummySystemAdapter();
+
+ if(dockerize) {
+ benchmarkController = benchmarkBuilder.build();
+ dataGen = dataGeneratorBuilder.build();
+ taskGen = taskGeneratorBuilder.build();
+ evalStorage = evalStorageBuilder.build();
+ evalModule = evalModuleBuilder.build();
+ systemAdapter = systemAdapterBuilder.build();
+ }
+
commandQueueListener.setCommandReactions(
new MultipleCommandsReaction(componentsExecutor, commandQueueListener)
- .dataGenerator(datagen).dataGeneratorImageName(DUMMY_DATAGEN_IMAGE_NAME)
- .taskGenerator(taskgen).taskGeneratorImageName(DUMMY_TASKGEN_IMAGE_NAME)
- .evalStorage(evalstorage).evalStorageImageName(DUMMY_EVAL_STORAGE_IMAGE_NAME)
- .evalModule(evalmodule).evalModuleImageName(DUMMY_EVALMODULE_IMAGE_NAME)
- .systemContainerId(systemContainerId)
+ .dataGenerator(dataGen).dataGeneratorImageName(dataGeneratorBuilder.getImageName())
+ .taskGenerator(taskGen).taskGeneratorImageName(taskGeneratorBuilder.getImageName())
+ .evalStorage(evalStorage).evalStorageImageName(evalStorageBuilder.getImageName())
+ .evalModule(evalModule).evalModuleImageName(evalModuleBuilder.getImageName())
+ .systemContainerId(systemAdapterBuilder.getImageName())
);
componentsExecutor.submit(commandQueueListener);
commandQueueListener.waitForInitialisation();
- componentsExecutor.submit(benchmark);
- componentsExecutor.submit(system, systemContainerId);
+ componentsExecutor.submit(benchmarkController);
+ componentsExecutor.submit(systemAdapter, systemAdapterBuilder.getImageName());
commandQueueListener.waitForTermination();
commandQueueListener.terminate();
componentsExecutor.shutdown();
- Assert.assertFalse(componentsExecutor.anyExceptions());
rabbitMqDockerizer.stop();
+
+ Assert.assertFalse(componentsExecutor.anyExceptions());
}
public JenaKeyValue createBenchmarkParameters(){
- JenaKeyValue kv = new JenaKeyValue(EXPERIMENT_URI);
- kv.setValue(BENCHMARK_URI+"/benchmarkParam1", 123);
- kv.setValue(BENCHMARK_URI+"/benchmarkParam2", 456);
+ JenaKeyValue kv = new JenaKeyValue();
+ kv.setValue(BENCHMARK_URI+"benchmarkParam1", 123);
+ kv.setValue(BENCHMARK_URI+"benchmarkParam2", 456);
return kv;
}
public JenaKeyValue createSystemParameters(){
JenaKeyValue kv = new JenaKeyValue();
- kv.setValue(SYSTEM_URI+"/systemParam1", 123);
+ kv.setValue(SYSTEM_URI+"systemParam1", 123);
return kv;
}
+
+
}
diff --git a/src/test/java/org/hobbit/sdk/DummySystemTest.java b/src/test/java/org/hobbit/sdk/DummySystemTest.java
deleted file mode 100644
index 7a616bc9..00000000
--- a/src/test/java/org/hobbit/sdk/DummySystemTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package org.hobbit.sdk;
-
-import org.hobbit.core.components.Component;
-import org.hobbit.sdk.docker.AbstractDockerizer;
-import org.hobbit.sdk.docker.RabbitMqDockerizer;
-import org.hobbit.sdk.docker.builders.*;
-import org.hobbit.sdk.docker.builders.common.PullBasedDockersBuilder;
-import org.hobbit.sdk.examples.dummybenchmark.DummySystemAdapter;
-import org.hobbit.sdk.examples.dummybenchmark.docker.DummyDockersBuilder;
-import org.hobbit.sdk.utils.CommandQueueListener;
-import org.hobbit.sdk.utils.commandreactions.MultipleCommandsReaction;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.Date;
-
-import static org.hobbit.sdk.CommonConstants.*;
-import static org.hobbit.sdk.examples.dummybenchmark.docker.DummyDockersBuilder.*;
-
-
-/**
- * @author Pavel Smirnov
- * This code here is just for testing and debugging SDK.
- * For your projects please use code from the https://github.com/hobbit-project/java-sdk-example
- *
- *
- * This test shows how to debug your system under already published benchmark images (sml-v2 benchmark)
- * if docker images of benchmarkController components are available online
- *
- *
- */
-
-
-public class DummySystemTest extends EnvironmentVariablesWrapper {
-
- private RabbitMqDockerizer rabbitMqDockerizer;
- private ComponentsExecutor componentsExecutor;
- private CommandQueueListener commandQueueListener;
-
-
- String benchmarkImageName = "git.project-hobbit.eu:4567/smirnp/sml-v2/benchmark-controller";
- String dataGeneratorImageName = "git.project-hobbit.eu:4567/smirnp/sml-v2/data-generator";
- String taskGeneratorImageName = "git.project-hobbit.eu:4567/smirnp/sml-v2/task-generator";
- String evalStorageImageName = "git.project-hobbit.eu:4567/smirnp/sml-v2/eval-storage";
- String evalModuleImageName = "git.project-hobbit.eu:4567/smirnp/sml-v2/eval-module";
-
- BenchmarkDockerBuilder benchmarkBuilder;
- DataGenDockerBuilder dataGeneratorBuilder;
- TaskGenDockerBuilder taskGeneratorBuilder;
- EvalStorageDockerBuilder evalStorageBuilder;
- SystemAdapterDockerBuilder systemAdapterBuilder;
- EvalModuleDockerBuilder evalModuleBuilder;
-
- Component benchmarkController;
- Component dataGen;
- Component taskGen;
- Component evalStorage;
- Component evalModule;
- Component systemAdapter;
-
-
- public void init(boolean useCachedImages) throws Exception {
-
- rabbitMqDockerizer = RabbitMqDockerizer.builder().build();
-
- setupCommunicationEnvironmentVariables(rabbitMqDockerizer.getHostName(), "session_"+String.valueOf(new Date().getTime()));
- setupBenchmarkEnvironmentVariables(EXPERIMENT_URI, createBenchmarkParameters());
- setupSystemEnvironmentVariables(SYSTEM_URI, createSystemParameters());
-
- benchmarkBuilder = new BenchmarkDockerBuilder(new PullBasedDockersBuilder(benchmarkImageName));
- dataGeneratorBuilder = new DataGenDockerBuilder(new PullBasedDockersBuilder(dataGeneratorImageName));
- taskGeneratorBuilder = new TaskGenDockerBuilder(new PullBasedDockersBuilder(taskGeneratorImageName));
- evalStorageBuilder = new EvalStorageDockerBuilder(new PullBasedDockersBuilder(evalStorageImageName));
- evalModuleBuilder = new EvalModuleDockerBuilder(new PullBasedDockersBuilder(evalModuleImageName));
-
- systemAdapterBuilder = new SystemAdapterDockerBuilder(new DummyDockersBuilder(DummySystemAdapter.class, DUMMY_SYSTEM_IMAGE_NAME).useCachedImage(useCachedImages).init());
-
- benchmarkController = benchmarkBuilder.build();
- dataGen = dataGeneratorBuilder.build();
- taskGen = taskGeneratorBuilder.build();
- evalStorage = evalStorageBuilder.build();
- evalModule = evalModuleBuilder.build();
- systemAdapter = systemAdapterBuilder.build();
- }
-
- @Test
- @Ignore
- public void buildImages() throws Exception {
-
- init(false);
- ((AbstractDockerizer)systemAdapter).prepareImage();
- }
-
- @Test
- public void checkHealth() throws Exception {
-
- Boolean useCachedImages = true;
-
- init(useCachedImages);
-
- commandQueueListener = new CommandQueueListener();
- componentsExecutor = new ComponentsExecutor(commandQueueListener, environmentVariables);
-
- rabbitMqDockerizer.run();
-
- commandQueueListener.setCommandReactions(
- new MultipleCommandsReaction(componentsExecutor, commandQueueListener)
- .dataGenerator(dataGen).dataGeneratorImageName(dataGeneratorBuilder.getImageName())
- .taskGenerator(taskGen).taskGeneratorImageName(taskGeneratorBuilder.getImageName())
- .evalStorage(evalStorage).evalStorageImageName(evalStorageBuilder.getImageName())
- .evalModule(evalModule).evalModuleImageName(evalModuleBuilder.getImageName())
- .systemContainerId(systemAdapterBuilder.getImageName())
- );
-
- componentsExecutor.submit(commandQueueListener);
- commandQueueListener.waitForInitialisation();
-
- //Here you can switch between dockerized (by default) and pure java code of your system
- //systemAdapter = new DummySystemAdapter();
-
- componentsExecutor.submit(benchmarkController);
- componentsExecutor.submit(systemAdapter, systemAdapterBuilder.getImageName());
-
- commandQueueListener.waitForTermination();
- commandQueueListener.terminate();
- componentsExecutor.shutdown();
-
- rabbitMqDockerizer.stop();
-
- Assert.assertFalse(componentsExecutor.anyExceptions());
- }
-
- public JenaKeyValue createBenchmarkParameters(){
- JenaKeyValue kv = new JenaKeyValue(EXPERIMENT_URI);
- kv.setValue(BENCHMARK_URI+"/benchmarkParam1", 123);
- kv.setValue(BENCHMARK_URI+"/benchmarkParam2", 456);
- return kv;
- }
-
- public JenaKeyValue createSystemParameters(){
- JenaKeyValue kv = new JenaKeyValue();
- kv.setValue(SYSTEM_URI+"/systemParam1", 123);
- return kv;
- }
-
-}
diff --git a/src/test/java/org/hobbit/sdk/RequiredArgumentsTest.java b/src/test/java/org/hobbit/sdk/RequiredArgumentsTest.java
index a77333a9..e664ec06 100644
--- a/src/test/java/org/hobbit/sdk/RequiredArgumentsTest.java
+++ b/src/test/java/org/hobbit/sdk/RequiredArgumentsTest.java
@@ -2,7 +2,7 @@
import org.hobbit.sdk.docker.AbstractDockerizer;
-import org.hobbit.sdk.docker.builders.common.BuildBasedDockersBuilder;
+import org.hobbit.sdk.docker.builders.BuildBasedDockersBuilder;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/src/main/java/org/hobbit/sdk/examples/dummybenchmark/docker/DummyDockersBuilder.java b/src/test/java/org/hobbit/sdk/docker/DummyDockersBuilder.java
similarity index 86%
rename from src/main/java/org/hobbit/sdk/examples/dummybenchmark/docker/DummyDockersBuilder.java
rename to src/test/java/org/hobbit/sdk/docker/DummyDockersBuilder.java
index 4aa31cf8..1577906b 100644
--- a/src/main/java/org/hobbit/sdk/examples/dummybenchmark/docker/DummyDockersBuilder.java
+++ b/src/test/java/org/hobbit/sdk/docker/DummyDockersBuilder.java
@@ -1,45 +1,42 @@
-package org.hobbit.sdk.examples.dummybenchmark.docker;
-
-import org.hobbit.sdk.docker.builders.common.DynamicDockerFileBuilder;
-
-
-/**
- * @author Pavel Smirnov
- * This code is here just for testing and debugging the SDK.
- * For your projects please use code from the https://github.com/hobbit-project/java-sdk-example
- */
-
-//Common dockerizers builder for all components of your project
-public class DummyDockersBuilder extends DynamicDockerFileBuilder {
-
- //public static final String GIT_REPO_PATH = "git.project-hobbit.eu:4567/smirnp/";
- public static final String GIT_REPO_PATH = "";
- public static final String PROJECT_NAME = "dummybenchmark/";
-
- public static final String DUMMY_BENCHMARK_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"benchmark-controller";
- public static final String DUMMY_SYSTEM_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"system-adapter";
-
- //use these constants within BenchmarkController
- public static final String DUMMY_DATAGEN_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"datagen";
- public static final String DUMMY_TASKGEN_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"taskgen";
- public static final String DUMMY_EVAL_STORAGE_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"eval-storage";
- public static final String DUMMY_EVALMODULE_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"eval-module";
-
- public static final String BENCHMARK_URI = "http://project-hobbit.eu/"+PROJECT_NAME;
- public static final String SYSTEM_URI = "http://project-hobbit.eu/"+PROJECT_NAME+"system";
-
- public DummyDockersBuilder(Class runnerClass, String imageName) {
- super("DummyDockersBuilder");
- imageName(imageName);
- buildDirectory(".");
- jarFilePath("target/hobbit-java-sdk-1.1.0.jar");
- dockerWorkDir("/usr/src/"+PROJECT_NAME);
- containerName(runnerClass.getSimpleName());
- runnerClass(org.hobbit.core.run.ComponentStarter.class, runnerClass);
- }
-
- public DynamicDockerFileBuilder init() throws Exception {
- return super.init();
- }
-
-}
+package org.hobbit.sdk;
+
+import org.hobbit.sdk.docker.builders.DynamicDockerFileBuilder;
+
+
+/**
+ * @author Pavel Smirnov
+ * This code is here just for testing and debugging the SDK.
+ * For your projects please use code from the https://github.com/hobbit-project/java-sdk-example
+ */
+
+//Common dockerizers builder for all components of your project
+public class DummyDockersBuilder extends DynamicDockerFileBuilder {
+
+ //public static final String GIT_REPO_PATH = "git.project-hobbit.eu:4567/smirnp/";
+ public static final String GIT_REPO_PATH = "";
+ public static final String PROJECT_NAME = "dummybenchmark/";
+
+ public static final String DUMMY_BENCHMARK_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"benchmark-controller";
+ public static final String DUMMY_SYSTEM_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"system-adapter";
+
+ //use these constants within BenchmarkController
+ public static final String DUMMY_DATAGEN_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"datagen";
+ public static final String DUMMY_TASKGEN_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"taskgen";
+ public static final String DUMMY_EVAL_STORAGE_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"eval-storage";
+ public static final String DUMMY_EVALMODULE_IMAGE_NAME = GIT_REPO_PATH+PROJECT_NAME +"eval-module";
+
+ public static final String BENCHMARK_URI = "http://project-hobbit.eu/"+PROJECT_NAME;
+ public static final String SYSTEM_URI = "http://project-hobbit.eu/"+PROJECT_NAME+"system";
+
+ public DummyDockersBuilder(Class runnerClass, String imageName) {
+ super("DummyDockersBuilder");
+ imageName(imageName);
+ buildDirectory(".");
+ jarFilePath("target/hobbit-java-sdk-1.1.1.jar");
+ dockerWorkDir("/usr/src/"+PROJECT_NAME);
+ containerName(runnerClass.getSimpleName());
+ runnerClass(org.hobbit.core.run.ComponentStarter.class, runnerClass);
+ }
+
+
+}