Skip to content

Commit

Permalink
support all task ID fields, and task IDs themselves
Browse files Browse the repository at this point in the history
  • Loading branch information
tpetr committed Mar 31, 2015
1 parent 7c62f42 commit 5fa27c8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
Expand Up @@ -25,6 +25,7 @@
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import com.google.inject.Inject; import com.google.inject.Inject;
Expand All @@ -37,7 +38,6 @@
import com.hubspot.mesos.SingularityDockerInfo; import com.hubspot.mesos.SingularityDockerInfo;
import com.hubspot.mesos.SingularityDockerPortMapping; import com.hubspot.mesos.SingularityDockerPortMapping;
import com.hubspot.mesos.SingularityVolume; import com.hubspot.mesos.SingularityVolume;
import com.hubspot.singularity.SingularityDeploy;
import com.hubspot.singularity.SingularityTask; import com.hubspot.singularity.SingularityTask;
import com.hubspot.singularity.SingularityTaskId; import com.hubspot.singularity.SingularityTaskId;
import com.hubspot.singularity.SingularityTaskRequest; import com.hubspot.singularity.SingularityTaskRequest;
Expand Down Expand Up @@ -172,8 +172,17 @@ private Optional<DockerInfo.PortMapping> buildPortMapping(final SingularityDocke
} }


private String fillInTaskIdValues(String string, SingularityTaskId taskId) { private String fillInTaskIdValues(String string, SingularityTaskId taskId) {
return string.replace("${TASK_DEPLOY_ID}", taskId.getDeployId()) if (!Strings.isNullOrEmpty(string)) {
.replace("${TASK_REQUEST_ID}", taskId.getRequestId()); string = string.replace("${TASK_REQUEST_ID}", taskId.getRequestId())
.replace("${TASK_DEPLOY_ID}", taskId.getDeployId())
.replace("${TASK_STARTED_AT}", Long.toString(taskId.getStartedAt()))
.replace("${TASK_INSTANCE_NO}", Integer.toString(taskId.getInstanceNo()))
.replace("${TASK_HOST}", taskId.getHost())
.replace("${TASK_RACK_ID}", taskId.getRackId())
.replace("${TASK_ID}", taskId.toString());
}

return string;
} }


private void prepareContainerInfo(final SingularityTaskId taskId, final TaskInfo.Builder bldr, final SingularityContainerInfo containerInfo, final Optional<long[]> ports) { private void prepareContainerInfo(final SingularityTaskId taskId, final TaskInfo.Builder bldr, final SingularityContainerInfo containerInfo, final Optional<long[]> ports) {
Expand Down
Expand Up @@ -52,14 +52,14 @@ public class SingularityMesosTaskBuilderTest {


@Before @Before
public void createMocks() { public void createMocks() {
pendingTask = new SingularityPendingTask(new SingularityPendingTaskId("test", "1", 0, 0, PendingType.IMMEDIATE, 0), Collections.<String> emptyList(), Optional.<String> absent()); pendingTask = new SingularityPendingTask(new SingularityPendingTaskId("test", "1", 0, 1, PendingType.IMMEDIATE, 0), Collections.<String> emptyList(), Optional.<String> absent());


final SingularitySlaveAndRackManager rackManager = mock(SingularitySlaveAndRackManager.class); final SingularitySlaveAndRackManager slaveAndRackManager = mock(SingularitySlaveAndRackManager.class);
final ExecutorIdGenerator idGenerator = mock(ExecutorIdGenerator.class); final ExecutorIdGenerator idGenerator = mock(ExecutorIdGenerator.class);


when(idGenerator.getNextExecutorId()).then(new CreateFakeId()); when(idGenerator.getNextExecutorId()).then(new CreateFakeId());


builder = new SingularityMesosTaskBuilder(new ObjectMapper(), rackManager, idGenerator, new SingularityConfiguration()); builder = new SingularityMesosTaskBuilder(new ObjectMapper(), slaveAndRackManager, idGenerator, new SingularityConfiguration());


taskResources = new Resources(1, 1, 0); taskResources = new Resources(1, 1, 0);
executorResources = new Resources(0.1, 1, 0); executorResources = new Resources(0.1, 1, 0);
Expand All @@ -70,6 +70,9 @@ public void createMocks() {
.setFrameworkId(FrameworkID.newBuilder().setValue("1")) .setFrameworkId(FrameworkID.newBuilder().setValue("1"))
.setHostname("test") .setHostname("test")
.build(); .build();

when(slaveAndRackManager.getSlaveHost(offer)).thenReturn("host");
when(slaveAndRackManager.getRackId(offer)).thenReturn("DEFAULT");
} }


@Test @Test
Expand Down Expand Up @@ -122,7 +125,7 @@ public void testDockerTask() {
Type.DOCKER, Type.DOCKER,
Optional.of(Arrays.asList( Optional.of(Arrays.asList(
new SingularityVolume("/container", Optional.of("/host"), Mode.RW), new SingularityVolume("/container", Optional.of("/host"), Mode.RW),
new SingularityVolume("/container/${TASK_REQUEST_ID}/${TASK_DEPLOY_ID}", Optional.of("/host/${TASK_REQUEST_ID}/${TASK_DEPLOY_ID}"), Mode.RO))), new SingularityVolume("/container/${TASK_REQUEST_ID}/${TASK_DEPLOY_ID}", Optional.of("/host/${TASK_ID}"), Mode.RO))),
Optional.of(new SingularityDockerInfo("docker-image", true, Optional.of(Protos.ContainerInfo.DockerInfo.Network.BRIDGE), Optional.of(Arrays.asList(literalMapping, offerMapping))))); Optional.of(new SingularityDockerInfo("docker-image", true, Optional.of(Protos.ContainerInfo.DockerInfo.Network.BRIDGE), Optional.of(Arrays.asList(literalMapping, offerMapping)))));
final SingularityDeploy deploy = new SingularityDeployBuilder("test", "1") final SingularityDeploy deploy = new SingularityDeployBuilder("test", "1")
.setContainerInfo(Optional.of(containerInfo)) .setContainerInfo(Optional.of(containerInfo))
Expand All @@ -146,7 +149,7 @@ public void testDockerTask() {
assertEquals(Mode.RW, task.getMesosTask().getContainer().getVolumes(0).getMode()); assertEquals(Mode.RW, task.getMesosTask().getContainer().getVolumes(0).getMode());


assertEquals(String.format("/container/%s/%s", task.getTaskRequest().getDeploy().getRequestId(), task.getTaskRequest().getDeploy().getId()), task.getMesosTask().getContainer().getVolumes(1).getContainerPath()); assertEquals(String.format("/container/%s/%s", task.getTaskRequest().getDeploy().getRequestId(), task.getTaskRequest().getDeploy().getId()), task.getMesosTask().getContainer().getVolumes(1).getContainerPath());
assertEquals(String.format("/host/%s/%s", task.getTaskRequest().getDeploy().getRequestId(), task.getTaskRequest().getDeploy().getId()), task.getMesosTask().getContainer().getVolumes(1).getHostPath()); assertEquals(String.format("/host/%s", task.getMesosTask().getTaskId().getValue()), task.getMesosTask().getContainer().getVolumes(1).getHostPath());
assertEquals(Mode.RO, task.getMesosTask().getContainer().getVolumes(1).getMode()); assertEquals(Mode.RO, task.getMesosTask().getContainer().getVolumes(1).getMode());


assertEquals(80, task.getMesosTask().getContainer().getDocker().getPortMappings(0).getContainerPort()); assertEquals(80, task.getMesosTask().getContainer().getDocker().getPortMappings(0).getContainerPort());
Expand Down

0 comments on commit 5fa27c8

Please sign in to comment.