Search in sources :

Example 36 with Job

use of com.netflix.titus.grpc.protogen.Job in project titus-control-plane by Netflix.

the class JobFederationTest method testJobCreateRouting.

@Test(timeout = LONG_TEST_TIMEOUT_MS)
public void testJobCreateRouting() {
    Map<String, Job> jobs = new ConcurrentHashMap<>();
    Map<String, Task> tasks = new ConcurrentHashMap<>();
    eventStreamObserver.toObservable().subscribe(event -> {
        switch(event.getNotificationCase()) {
            case JOBUPDATE:
                Job job = event.getJobUpdate().getJob();
                jobs.put(job.getId(), job);
                break;
            case TASKUPDATE:
                Task task = event.getTaskUpdate().getTask();
                tasks.put(task.getJobId(), task);
                break;
        }
    });
    String cell1JobId = blockingJobClient.createJob(toGrpcJobDescriptor(oneTaskBatchJobDescriptor().toBuilder().withCapacityGroup("a123").build())).getId();
    String cell2JobId = blockingJobClient.createJob(toGrpcJobDescriptor(oneTaskBatchJobDescriptor().toBuilder().withCapacityGroup("b123").build())).getId();
    await().timeout(5, TimeUnit.SECONDS).until(() -> tasks.containsKey(cell1JobId));
    await().timeout(5, TimeUnit.SECONDS).until(() -> tasks.containsKey(cell2JobId));
    Map<String, String> cell1JobAttributes = jobs.get(cell1JobId).getJobDescriptor().getAttributesMap();
    assertThat(cell1JobAttributes).containsEntry("titus.stack", federatedStackName);
    assertThat(cell1JobAttributes).containsEntry("titus.cell", "defaultCell");
    Map<String, String> cell2JobAttributes = jobs.get(cell2JobId).getJobDescriptor().getAttributesMap();
    assertThat(cell2JobAttributes).containsEntry("titus.stack", federatedStackName);
    assertThat(cell2JobAttributes).containsEntry("titus.cell", "v3OnlyCell");
    Map<String, String> cell1TaskContext = tasks.get(cell1JobId).getTaskContextMap();
    assertThat(cell1TaskContext).containsEntry("titus.stack", federatedStackName);
    assertThat(cell1TaskContext).containsEntry("titus.cell", "defaultCell");
    Map<String, String> cell2TaskContext = tasks.get(cell2JobId).getTaskContextMap();
    assertThat(cell2TaskContext).containsEntry("titus.stack", federatedStackName);
    assertThat(cell2TaskContext).containsEntry("titus.cell", "v3OnlyCell");
}
Also used : Task(com.netflix.titus.grpc.protogen.Task) Job(com.netflix.titus.grpc.protogen.Job) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) BaseIntegrationTest(com.netflix.titus.master.integration.BaseIntegrationTest) IntegrationTest(com.netflix.titus.testkit.junit.category.IntegrationTest) Test(org.junit.Test)

Aggregations

Job (com.netflix.titus.grpc.protogen.Job)36 Test (org.junit.Test)21 ArrayList (java.util.ArrayList)15 JobQueryResult (com.netflix.titus.grpc.protogen.JobQueryResult)14 Task (com.netflix.titus.grpc.protogen.Task)10 JobChangeNotification (com.netflix.titus.grpc.protogen.JobChangeNotification)9 JobQuery (com.netflix.titus.grpc.protogen.JobQuery)9 BaseIntegrationTest (com.netflix.titus.master.integration.BaseIntegrationTest)9 IntegrationTest (com.netflix.titus.testkit.junit.category.IntegrationTest)9 List (java.util.List)9 TaskQueryResult (com.netflix.titus.grpc.protogen.TaskQueryResult)7 JobDescriptor (com.netflix.titus.api.jobmanager.model.job.JobDescriptor)6 Pair (com.netflix.titus.common.util.tuple.Pair)6 JobManagementServiceGrpc (com.netflix.titus.grpc.protogen.JobManagementServiceGrpc)6 TaskQuery (com.netflix.titus.grpc.protogen.TaskQuery)6 JobManagementServiceStub (com.netflix.titus.grpc.protogen.JobManagementServiceGrpc.JobManagementServiceStub)5 Page (com.netflix.titus.grpc.protogen.Page)5 Random (java.util.Random)5 Logger (org.slf4j.Logger)5 LoggerFactory (org.slf4j.LoggerFactory)5