Search in sources :

Example 11 with RollingUpdateResponse

use of com.spotify.helios.common.protocol.RollingUpdateResponse in project helios by spotify.

the class RollingUpdateCommandTest method testRollingUpdateFailureOutput.

@Test
public void testRollingUpdateFailureOutput() throws Exception {
    when(client.rollingUpdate(anyString(), any(JobId.class), any(RolloutOptions.class))).thenReturn(immediateFuture(new RollingUpdateResponse(RollingUpdateResponse.Status.OK)));
    when(client.deploymentGroupStatus(GROUP_NAME)).then(new ResponseAnswer(statusResponse(DeploymentGroupStatusResponse.Status.FAILED, "mock failure", makeHostStatus("host1", JOB_ID, TaskStatus.State.RUNNING))));
    when(options.getBoolean("overlap")).thenReturn(true);
    final String expectedSubstring = "Failed: mock failure\n";
    command.runWithJob(options, client, out, false, JOB, null);
    assertThat(baos.toString(), containsString(expectedSubstring));
}
Also used : RolloutOptions(com.spotify.helios.common.descriptors.RolloutOptions) RollingUpdateResponse(com.spotify.helios.common.protocol.RollingUpdateResponse) Matchers.anyString(org.mockito.Matchers.anyString) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) JobId(com.spotify.helios.common.descriptors.JobId) Test(org.junit.Test)

Example 12 with RollingUpdateResponse

use of com.spotify.helios.common.protocol.RollingUpdateResponse in project helios by spotify.

the class RollingUpdateCommandTest method testRollingUpdateFailsOnRolloutTimeoutJson.

@Test
public void testRollingUpdateFailsOnRolloutTimeoutJson() throws Exception {
    when(client.rollingUpdate(anyString(), any(JobId.class), any(RolloutOptions.class))).thenReturn(immediateFuture(new RollingUpdateResponse(RollingUpdateResponse.Status.OK)));
    when(client.deploymentGroupStatus(GROUP_NAME)).then(new ResponseAnswer(statusResponse(DeploymentGroupStatusResponse.Status.ROLLING_OUT, null, makeHostStatus("host1", null, null), makeHostStatus("host2", null, null)), statusResponse(DeploymentGroupStatusResponse.Status.ROLLING_OUT, null, makeHostStatus("host1", JOB_ID, TaskStatus.State.PULLING_IMAGE), makeHostStatus("host2", null, null))));
    final int ret = command.runWithJob(options, client, out, true, JOB, null);
    final String output = baos.toString();
    verify(client).rollingUpdate(GROUP_NAME, JOB_ID, OPTIONS);
    assertEquals(1, ret);
    assertJsonOutputEquals(output, ImmutableMap.<String, Object>builder().put("status", "TIMEOUT").put("duration", 601.00).put("parallelism", PARALLELISM).put("timeout", TIMEOUT).put("overlap", false).put("token", TOKEN).put("ignoreFailures", false).put("migrate", false).build());
}
Also used : RolloutOptions(com.spotify.helios.common.descriptors.RolloutOptions) RollingUpdateResponse(com.spotify.helios.common.protocol.RollingUpdateResponse) Matchers.anyString(org.mockito.Matchers.anyString) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) JobId(com.spotify.helios.common.descriptors.JobId) Test(org.junit.Test)

Example 13 with RollingUpdateResponse

use of com.spotify.helios.common.protocol.RollingUpdateResponse in project helios by spotify.

the class RollingUpdateCommandTest method testRollingUpdate.

@Test
public void testRollingUpdate() throws Exception {
    when(client.rollingUpdate(anyString(), any(JobId.class), any(RolloutOptions.class))).thenReturn(immediateFuture(new RollingUpdateResponse(RollingUpdateResponse.Status.OK)));
    when(client.deploymentGroupStatus(GROUP_NAME)).then(new ResponseAnswer(statusResponse(DeploymentGroupStatusResponse.Status.ROLLING_OUT, null), statusResponse(DeploymentGroupStatusResponse.Status.ROLLING_OUT, null, makeHostStatus("host1", null, null), makeHostStatus("host2", OLD_JOB_ID, TaskStatus.State.RUNNING), makeHostStatus("host3", OLD_JOB_ID, TaskStatus.State.RUNNING)), statusResponse(DeploymentGroupStatusResponse.Status.ROLLING_OUT, null, makeHostStatus("host1", JOB_ID, TaskStatus.State.RUNNING), makeHostStatus("host2", JOB_ID, TaskStatus.State.PULLING_IMAGE), makeHostStatus("host3", OLD_JOB_ID, TaskStatus.State.RUNNING)), statusResponse(DeploymentGroupStatusResponse.Status.ROLLING_OUT, null, makeHostStatus("host1", JOB_ID, TaskStatus.State.RUNNING), makeHostStatus("host2", JOB_ID, TaskStatus.State.RUNNING), makeHostStatus("host3", JOB_ID, TaskStatus.State.CREATING)), statusResponse(DeploymentGroupStatusResponse.Status.ACTIVE, null, makeHostStatus("host1", JOB_ID, TaskStatus.State.RUNNING), makeHostStatus("host2", JOB_ID, TaskStatus.State.RUNNING), makeHostStatus("host3", JOB_ID, TaskStatus.State.RUNNING))));
    final int ret = command.runWithJob(options, client, out, false, JOB, null);
    final String output = baos.toString();
    verify(client).rollingUpdate(GROUP_NAME, JOB_ID, OPTIONS);
    assertEquals(0, ret);
}
Also used : RolloutOptions(com.spotify.helios.common.descriptors.RolloutOptions) RollingUpdateResponse(com.spotify.helios.common.protocol.RollingUpdateResponse) Matchers.anyString(org.mockito.Matchers.anyString) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) JobId(com.spotify.helios.common.descriptors.JobId) Test(org.junit.Test)

Example 14 with RollingUpdateResponse

use of com.spotify.helios.common.protocol.RollingUpdateResponse in project helios by spotify.

the class RollingUpdateCommandTest method testRollingUpdateAsync.

@Test
public void testRollingUpdateAsync() throws Exception {
    when(client.rollingUpdate(anyString(), any(JobId.class), any(RolloutOptions.class))).thenReturn(immediateFuture(new RollingUpdateResponse(RollingUpdateResponse.Status.OK)));
    when(options.getBoolean("async")).thenReturn(true);
    final int ret = command.runWithJob(options, client, out, false, JOB, null);
    final String output = baos.toString();
    verify(client).rollingUpdate(GROUP_NAME, JOB_ID, OPTIONS);
    assertEquals(0, ret);
    final String expected = "Rolling update (async) started: my_group -> foo:2:1212121 (parallelism=1, timeout=300, " + "overlap=false, token=" + TOKEN + ", ignoreFailures=false, migrate=false)\n";
    assertEquals(expected, output);
}
Also used : RolloutOptions(com.spotify.helios.common.descriptors.RolloutOptions) RollingUpdateResponse(com.spotify.helios.common.protocol.RollingUpdateResponse) Matchers.anyString(org.mockito.Matchers.anyString) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) JobId(com.spotify.helios.common.descriptors.JobId) Test(org.junit.Test)

Example 15 with RollingUpdateResponse

use of com.spotify.helios.common.protocol.RollingUpdateResponse in project helios by spotify.

the class RollingUpdateCommandTest method testFallbackToJobOptions.

@Test
public void testFallbackToJobOptions() throws Exception {
    final Namespace cmdlineOptions = mock(Namespace.class);
    when(cmdlineOptions.getString("deployment-group-name")).thenReturn(null);
    when(cmdlineOptions.getInt("parallelism")).thenReturn(null);
    when(cmdlineOptions.getLong("timeout")).thenReturn(null);
    when(cmdlineOptions.getLong("rollout_timeout")).thenReturn(10L);
    when(cmdlineOptions.getBoolean("async")).thenReturn(true);
    when(cmdlineOptions.getBoolean("migrate")).thenReturn(null);
    when(cmdlineOptions.getBoolean("overlap")).thenReturn(null);
    when(cmdlineOptions.getString("token")).thenReturn("cli_token");
    when(cmdlineOptions.getBoolean("ignore_failures")).thenReturn(null);
    when(client.rollingUpdate(anyString(), any(JobId.class), any(RolloutOptions.class))).thenReturn(immediateFuture(new RollingUpdateResponse(RollingUpdateResponse.Status.OK)));
    when(client.deploymentGroupStatus(GROUP_NAME)).then(new ResponseAnswer(statusResponse(DeploymentGroupStatusResponse.Status.ACTIVE, null, makeHostStatus("host1", JOB_ID, TaskStatus.State.RUNNING))));
    String optionString = "(parallelism=123, timeout=456, overlap=true, " + "token=cli_token, ignoreFailures=true, migrate=true)";
    command.runWithJob(cmdlineOptions, client, out, false, JOB, null);
    assertThat(baos.toString(), containsString(optionString));
}
Also used : RolloutOptions(com.spotify.helios.common.descriptors.RolloutOptions) RollingUpdateResponse(com.spotify.helios.common.protocol.RollingUpdateResponse) Matchers.anyString(org.mockito.Matchers.anyString) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Namespace(net.sourceforge.argparse4j.inf.Namespace) JobId(com.spotify.helios.common.descriptors.JobId) Test(org.junit.Test)

Aggregations

RollingUpdateResponse (com.spotify.helios.common.protocol.RollingUpdateResponse)25 JobId (com.spotify.helios.common.descriptors.JobId)24 RolloutOptions (com.spotify.helios.common.descriptors.RolloutOptions)24 Test (org.junit.Test)22 Matchers.anyString (org.mockito.Matchers.anyString)19 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)18 DeploymentGroup (com.spotify.helios.common.descriptors.DeploymentGroup)3 TaskStatus (com.spotify.helios.common.descriptors.TaskStatus)2 CreateDeploymentGroupResponse (com.spotify.helios.common.protocol.CreateDeploymentGroupResponse)2 DeploymentGroupStatusResponse (com.spotify.helios.common.protocol.DeploymentGroupStatusResponse)2 RemoveDeploymentGroupResponse (com.spotify.helios.common.protocol.RemoveDeploymentGroupResponse)2 RollingUpdateRequest (com.spotify.helios.common.protocol.RollingUpdateRequest)2 DeploymentGroupDoesNotExistException (com.spotify.helios.master.DeploymentGroupDoesNotExistException)2 JobDoesNotExistException (com.spotify.helios.master.JobDoesNotExistException)2 Response (javax.ws.rs.core.Response)2 ExceptionMetered (com.codahale.metrics.annotation.ExceptionMetered)1 Timed (com.codahale.metrics.annotation.Timed)1 Job (com.spotify.helios.common.descriptors.Job)1 POST (javax.ws.rs.POST)1 Path (javax.ws.rs.Path)1