package com.hubspot.singularity; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.jukito.JukitoModule; import org.jukito.JukitoRunner; import org.junit.Test; import org.junit.runner.RunWith; import com.google.common.base.Optional; import com.hubspot.singularity.client.SingularityClient; @RunWith(JukitoRunner.class) public class SingularityDeployIT { private static final String REQUEST_ID = "deploy-it-request-run-once"; public static class Module extends JukitoModule { @Override protected void configureTest() { install(new DockerTestModule()); } } @Test public void testDeploy(SingularityClient singularityClient) throws Exception { final SingularityRequest request = new SingularityRequestBuilder(REQUEST_ID, RequestType.RUN_ONCE) .setInstances(Optional.of(2)) .build(); final String deployId = Long.toString(System.currentTimeMillis()); singularityClient.createOrUpdateSingularityRequest(request); final Optional<SingularityRequestParent> requestParent = singularityClient.getSingularityRequest(REQUEST_ID); assertTrue(requestParent.isPresent()); assertEquals(request, requestParent.get().getRequest()); final SingularityDeploy deploy = new SingularityDeployBuilder(REQUEST_ID, deployId) .setCommand(Optional.of("sleep 10")) .build(); singularityClient.createDeployForSingularityRequest(REQUEST_ID, deploy, Optional.<Boolean>absent(), Optional.<String> absent()); Optional<DeployState> deployState = Optional.absent(); for (int i = 0; i < 10; i++) { final Optional<SingularityDeployHistory> deployHistory = singularityClient.getHistoryForRequestDeploy(REQUEST_ID, deployId); if (deployHistory.isPresent() && deployHistory.get().getDeployResult().isPresent()) { deployState = Optional.fromNullable(deployHistory.get().getDeployResult().get().getDeployState()); if (deployState.get().isDeployFinished()) { break; } } Thread.sleep(2000); // ghetto, i know. } assertEquals(Optional.of(DeployState.SUCCEEDED), deployState); } }