use of com.spotify.helios.client.HeliosClient in project helios by spotify.
the class MultipleHostsTest method testHostStatuses.
@Test
public void testHostStatuses() throws Exception {
final String aHost = testHost() + "a";
final String bHost = testHost() + "b";
startDefaultMaster();
startDefaultAgent(aHost);
startDefaultAgent(bHost);
awaitHostStatus(aHost, UP, LONG_WAIT_SECONDS, SECONDS);
awaitHostStatus(bHost, UP, LONG_WAIT_SECONDS, SECONDS);
final Map<String, HostStatus> cliStatuses = new ObjectMapper().readValue(cli("hosts", "--json"), new TypeReference<Map<String, HostStatus>>() {
});
assertTrue("status must contain key for " + aHost, cliStatuses.containsKey(aHost));
assertTrue("status must contain key for " + bHost, cliStatuses.containsKey(bHost));
final HeliosClient client = defaultClient();
final Map<String, HostStatus> clientStatuses = client.hostStatuses(ImmutableList.of(aHost, bHost)).get();
assertTrue("status must contain key for " + aHost, clientStatuses.containsKey(aHost));
assertTrue("status must contain key for " + bHost, clientStatuses.containsKey(bHost));
}
use of com.spotify.helios.client.HeliosClient in project helios by spotify.
the class TokenTest method testJobWithoutToken.
@Test
public void testJobWithoutToken() throws Exception {
startDefaultMaster();
startDefaultAgent(testHost());
final HeliosClient client = defaultClient();
awaitHostRegistered(client, testHost(), LONG_WAIT_SECONDS, SECONDS);
awaitHostStatus(client, testHost(), UP, LONG_WAIT_SECONDS, SECONDS);
// Create a job without a token
final CreateJobResponse createJobResponse = cliJson(CreateJobResponse.class, "create", testJobNameAndVersion, BUSYBOX);
assertThat(createJobResponse.getStatus(), equalTo(CreateJobResponse.Status.OK));
// Now run all operations which honor the token. Test
// that they work as expected with and without a token.
deploy(TOKEN, JobDeployResponse.Status.FORBIDDEN);
deploy(NO_TOKEN, JobDeployResponse.Status.OK);
stop(TOKEN, SetGoalResponse.Status.FORBIDDEN);
stop(NO_TOKEN, SetGoalResponse.Status.OK);
undeploy(TOKEN, JobUndeployResponse.Status.FORBIDDEN);
undeploy(NO_TOKEN, JobUndeployResponse.Status.OK);
remove(TOKEN, JobDeleteResponse.Status.FORBIDDEN);
remove(NO_TOKEN, JobDeleteResponse.Status.OK);
}
use of com.spotify.helios.client.HeliosClient in project helios by spotify.
the class UndeployRaceTest method test.
@Test
public void test() throws Exception {
startDefaultMaster();
final String agentId = "test-agent-id";
final HeliosClient client = defaultClient();
// Register a host without the agent running
client.registerHost(testHost(), agentId);
// Create, deploy and undeploy a job on the host without the agent running
final Job job = Job.newBuilder().setName(testJobName).setVersion(testJobVersion).setImage(BUSYBOX).setCommand(IDLE_COMMAND).build();
final JobId jobId = job.getId();
final CreateJobResponse created = client.createJob(job).get();
assertEquals(CreateJobResponse.Status.OK, created.getStatus());
final Deployment deployment = Deployment.of(jobId, START);
// Wait for host to be registered in the master. Otherwise, the client.deploy() call will
// return HOST_NOT_FOUND
Polling.await(LONG_WAIT_SECONDS, SECONDS, new Callable<String>() {
@Override
public String call() throws Exception {
final List<String> hosts = client.listHosts().get();
if (hosts.contains(testHost())) {
return testHost();
}
return null;
}
});
final JobDeployResponse deployed = client.deploy(deployment, testHost()).get();
assertEquals(JobDeployResponse.Status.OK, deployed.getStatus());
final JobUndeployResponse undeployed = client.undeploy(jobId, testHost()).get();
assertEquals(JobUndeployResponse.Status.OK, undeployed.getStatus());
// Start agent
startDefaultAgent(testHost(), "--id", agentId);
awaitHostRegistered(client, testHost(), LONG_WAIT_SECONDS, SECONDS);
awaitHostStatus(client, testHost(), UP, LONG_WAIT_SECONDS, SECONDS);
// Wait for the task to disappear
awaitTaskGone(client, testHost(), jobId, LONG_WAIT_SECONDS, SECONDS);
// Verify that the job can be deleted
assertEquals(JobDeleteResponse.Status.OK, client.deleteJob(jobId).get().getStatus());
}
use of com.spotify.helios.client.HeliosClient in project helios by spotify.
the class MultipleJobsTest method jobStatusBulk.
@Test
public void jobStatusBulk() throws Exception {
startDefaultMaster();
startDefaultAgent(testHost());
awaitHostRegistered(testHost(), LONG_WAIT_SECONDS, SECONDS);
final HeliosClient client = defaultClient();
final Job job = Job.newBuilder().setName(testJobName).setVersion(testJobVersion).setImage(BUSYBOX).setCommand(IDLE_COMMAND).setCreatingUser(TEST_USER).build();
final JobId jobId = job.getId();
client.createJob(job).get();
final Job job2 = Job.newBuilder().setName(testJobName + "2").setVersion(testJobVersion).setImage(BUSYBOX).setCommand(IDLE_COMMAND).setCreatingUser(TEST_USER).build();
final JobId job2Id = job2.getId();
client.createJob(job2).get();
final Deployment deployment = Deployment.of(jobId, START, TEST_USER);
final Deployment deployment2 = Deployment.of(job2Id, START, TEST_USER);
client.deploy(deployment, testHost()).get();
awaitJobState(client, testHost(), jobId, RUNNING, LONG_WAIT_SECONDS, SECONDS);
client.deploy(deployment2, testHost()).get();
awaitJobState(client, testHost(), job2Id, RUNNING, LONG_WAIT_SECONDS, SECONDS);
final Map<JobId, JobStatus> statuses = client.jobStatuses(ImmutableSet.of(jobId, job2Id)).get();
assertTrue("should contain job 1 id", statuses.containsKey(jobId));
assertTrue("should contain job 2 id", statuses.containsKey(job2Id));
}
use of com.spotify.helios.client.HeliosClient in project helios by spotify.
the class PortCollisionJobTest method test.
@Test
public void test() throws Exception {
startDefaultMaster();
startDefaultAgent(testHost());
final HeliosClient client = defaultClient();
awaitHostStatus(client, testHost(), UP, LONG_WAIT_SECONDS, SECONDS);
final Job job1 = Job.newBuilder().setName(testTag + "foo").setVersion("1").setImage(BUSYBOX).setCommand(IDLE_COMMAND).setPorts(ImmutableMap.of("foo", PortMapping.of(10001, externalPort))).build();
final Job job2 = Job.newBuilder().setName(testTag + "bar").setVersion("1").setImage(BUSYBOX).setCommand(IDLE_COMMAND).setPorts(ImmutableMap.of("foo", PortMapping.of(10002, externalPort))).build();
final CreateJobResponse created1 = client.createJob(job1).get();
assertEquals(CreateJobResponse.Status.OK, created1.getStatus());
final CreateJobResponse created2 = client.createJob(job2).get();
assertEquals(CreateJobResponse.Status.OK, created2.getStatus());
final Deployment deployment1 = Deployment.of(job1.getId(), STOP);
final JobDeployResponse deployed1 = client.deploy(deployment1, testHost()).get();
assertEquals(JobDeployResponse.Status.OK, deployed1.getStatus());
final Deployment deployment2 = Deployment.of(job2.getId(), STOP);
final JobDeployResponse deployed2 = client.deploy(deployment2, testHost()).get();
assertEquals(JobDeployResponse.Status.PORT_CONFLICT, deployed2.getStatus());
}
Aggregations