public void testDockerContainerLifeCycle() throws URISyntaxException {
// the name of our docker container
String containerName = "lifecycle";
URI dockerLocationURI = new URI(dockerLocation);
DockerServer dockerServer = new DockerServer(dockerLocationURI, dockerLocationURI, dockerPortStart, dockerPortEnd, dockerUserId, dockerGroupId);
// make sure docker is running
DockerVersion dockerVersion = dockerServer.getDockerVersion();
assertEquals(dockerVersion.getStatusMessage(), DockerResponse.StatusCode.OK, dockerVersion.getStatusCode());
System.out.println("Docker Server " + dockerLocation + " is running version " + dockerVersion.getVersion());
// make sure the container does not exist
DockerContainer dockerContainer = dockerServer.getDockerContainer(containerName);
assertEquals(dockerContainer.getStatusMessage(), DockerResponse.StatusCode.NO_SUCH_CONTAINER, dockerContainer.getStatusCode());
System.out.println("Docker Container " + containerName + " does not exist");
// create the container
dockerContainer = dockerServer.createDockerContainer("orion-base", containerName, null);
assertEquals(dockerContainer.getStatusMessage(), DockerResponse.StatusCode.CREATED, dockerContainer.getStatusCode());
System.out.println("Docker Container " + containerName + " status is " + dockerContainer.getStatus());
// start the container
dockerContainer = dockerServer.startDockerContainer(dockerContainer.getId(), null, null);
assertEquals(dockerContainer.getStatusMessage(), DockerResponse.StatusCode.STARTED, dockerContainer.getStatusCode());
System.out.println("Docker Container " + containerName + " status is " + dockerContainer.getStatus());
// attach to the container and run some commands
String command = "cat /etc/lsb-release\n";
DockerResponse dockerResponse = dockerServer.attachDockerContainer(dockerContainer.getId(), command);
assertEquals(dockerVersion.getStatusMessage(), DockerResponse.StatusCode.OK, dockerVersion.getStatusCode());
System.out.println(dockerResponse.getStatusMessage());
command = "ls\n";
dockerResponse = dockerServer.attachDockerContainer(dockerContainer.getId(), command);
assertEquals(dockerVersion.getStatusMessage(), DockerResponse.StatusCode.OK, dockerVersion.getStatusCode());
System.out.println(dockerResponse.getStatusMessage());
command = "ls OrionContent\n";
dockerResponse = dockerServer.attachDockerContainer(dockerContainer.getId(), command);
assertEquals(dockerVersion.getStatusMessage(), DockerResponse.StatusCode.OK, dockerVersion.getStatusCode());
System.out.println(dockerResponse.getStatusMessage());
// stop the container
dockerContainer = dockerServer.stopDockerContainer(dockerContainer.getId());
assertEquals(dockerContainer.getStatusMessage(), DockerResponse.StatusCode.STOPPED, dockerContainer.getStatusCode());
System.out.println("Docker Container " + containerName + " status is " + dockerContainer.getStatus());
// delete the container
dockerResponse = dockerServer.deleteDockerContainer(containerName);
assertEquals(dockerResponse.getStatusMessage(), DockerResponse.StatusCode.DELETED, dockerResponse.getStatusCode());
System.out.println("Docker Container " + containerName + " status is deleted");
}