Search in sources :

Example 21 with JobStore

use of com.netflix.titus.api.jobmanager.store.JobStore in project titus-control-plane by Netflix.

the class CassandraJobStoreTest method doRetrieveJob.

private <E extends JobDescriptor.JobDescriptorExt> void doRetrieveJob(Job<E> job) {
    JobStore store = getJobStore();
    store.storeJob(job).await();
    store.init().await();
    Pair<List<Job<?>>, Integer> jobsAndErrors = store.retrieveJobs().toBlocking().first();
    checkRetrievedJob(job, jobsAndErrors.getLeft().get(0));
}
Also used : JobStore(com.netflix.titus.api.jobmanager.store.JobStore) ArrayList(java.util.ArrayList) List(java.util.List)

Example 22 with JobStore

use of com.netflix.titus.api.jobmanager.store.JobStore in project titus-control-plane by Netflix.

the class CassandraJobStoreTest method testDeleteTask.

@Test
public void testDeleteTask() {
    JobStore store = getJobStore();
    Job<BatchJobExt> job = createBatchJobObject();
    store.init().await();
    store.storeJob(job).await();
    Pair<List<Job<?>>, Integer> jobsAndErrors = store.retrieveJobs().toBlocking().first();
    checkRetrievedJob(job, jobsAndErrors.getLeft().get(0));
    Task task = createTaskObject(job);
    store.storeTask(task).await();
    Task retrievedTask = store.retrieveTask(task.getId()).toBlocking().first();
    checkRetrievedTask(task, retrievedTask);
    store.deleteTask(task).await();
    Pair<List<Task>, Integer> tasks = store.retrieveTasksForJob(job.getId()).toBlocking().first();
    assertThat(tasks.getLeft()).isEmpty();
}
Also used : BatchJobTask(com.netflix.titus.api.jobmanager.model.job.BatchJobTask) Task(com.netflix.titus.api.jobmanager.model.job.Task) ServiceJobTask(com.netflix.titus.api.jobmanager.model.job.ServiceJobTask) BatchJobExt(com.netflix.titus.api.jobmanager.model.job.ext.BatchJobExt) JobStore(com.netflix.titus.api.jobmanager.store.JobStore) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test) IntegrationNotParallelizableTest(com.netflix.titus.testkit.junit.category.IntegrationNotParallelizableTest)

Example 23 with JobStore

use of com.netflix.titus.api.jobmanager.store.JobStore in project titus-control-plane by Netflix.

the class CassandraJobStoreTest method testStoreTask.

@Test
public void testStoreTask() {
    JobStore store = getJobStore();
    Job<BatchJobExt> job = createBatchJobObject();
    store.init().await();
    store.storeJob(job).await();
    Pair<List<Job<?>>, Integer> jobsAndErrors = store.retrieveJobs().toBlocking().first();
    checkRetrievedJob(job, jobsAndErrors.getLeft().get(0));
    Task task = createTaskObject(job);
    store.storeTask(task).await();
    Task retrievedTask = store.retrieveTask(task.getId()).toBlocking().first();
    checkRetrievedTask(task, retrievedTask);
}
Also used : BatchJobTask(com.netflix.titus.api.jobmanager.model.job.BatchJobTask) Task(com.netflix.titus.api.jobmanager.model.job.Task) ServiceJobTask(com.netflix.titus.api.jobmanager.model.job.ServiceJobTask) BatchJobExt(com.netflix.titus.api.jobmanager.model.job.ext.BatchJobExt) JobStore(com.netflix.titus.api.jobmanager.store.JobStore) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test) IntegrationNotParallelizableTest(com.netflix.titus.testkit.junit.category.IntegrationNotParallelizableTest)

Example 24 with JobStore

use of com.netflix.titus.api.jobmanager.store.JobStore in project titus-control-plane by Netflix.

the class CassandraJobStoreTest method testRetrieveTasksForJob.

@Test
public void testRetrieveTasksForJob() {
    JobStore store = getJobStore();
    Job<BatchJobExt> job = createBatchJobObject();
    store.init().await();
    store.storeJob(job).await();
    Pair<List<Job<?>>, Integer> jobsAndErrors = store.retrieveJobs().toBlocking().first();
    checkRetrievedJob(job, jobsAndErrors.getLeft().get(0));
    Task task = createTaskObject(job);
    store.storeTask(task).await();
    Pair<List<Task>, Integer> tasks = store.retrieveTasksForJob(job.getId()).toBlocking().first();
    checkRetrievedTask(task, tasks.getLeft().get(0));
    // Check that archive access does not return anything.
    Task archivedTask = store.retrieveArchivedTasksForJob(job.getId()).toBlocking().firstOrDefault(null);
    assertThat(archivedTask).isNull();
}
Also used : BatchJobTask(com.netflix.titus.api.jobmanager.model.job.BatchJobTask) Task(com.netflix.titus.api.jobmanager.model.job.Task) ServiceJobTask(com.netflix.titus.api.jobmanager.model.job.ServiceJobTask) BatchJobExt(com.netflix.titus.api.jobmanager.model.job.ext.BatchJobExt) JobStore(com.netflix.titus.api.jobmanager.store.JobStore) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test) IntegrationNotParallelizableTest(com.netflix.titus.testkit.junit.category.IntegrationNotParallelizableTest)

Example 25 with JobStore

use of com.netflix.titus.api.jobmanager.store.JobStore in project titus-control-plane by Netflix.

the class CassandraJobStoreTest method testActiveJobIdDistribution.

/**
 * Create enough jobs to evenly be bucketed across multiple rows. Delete 1 job per bucket. Add back enough jobs to fill
 * in the deleted jobs plus an extra bucket worth as a new bucket was created when reaching the max of all the original buckets.
 */
@Test
public void testActiveJobIdDistribution() {
    int numberOfJobsToCreate = 100;
    int numberOfBuckets = numberOfJobsToCreate / MAX_BUCKET_SIZE;
    Session session = cassandraCqlUnit.getSession();
    JobStore store = getJobStore(session);
    store.init().await();
    List<Job<?>> createdJobs = new ArrayList<>();
    List<Completable> completables = new ArrayList<>();
    for (int i = 0; i < numberOfJobsToCreate; i++) {
        Job<BatchJobExt> job = createBatchJobObject();
        createdJobs.add(job);
        completables.add(store.storeJob(job));
    }
    Completable.merge(Observable.from(completables), MAX_CONCURRENCY).await();
    Pair<List<Job<?>>, Integer> retrievedJobsAndErrors = store.retrieveJobs().toBlocking().first();
    assertThat(retrievedJobsAndErrors.getLeft()).hasSize(numberOfJobsToCreate);
    assertItemsPerBucket(session, numberOfBuckets, MAX_BUCKET_SIZE);
    int j = 0;
    int jobsRemoved = 0;
    completables = new ArrayList<>();
    while (j < numberOfJobsToCreate) {
        Job<?> jobToRemove = createdJobs.get(j);
        completables.add(store.deleteJob(jobToRemove));
        j += MAX_BUCKET_SIZE;
        jobsRemoved++;
    }
    Completable.merge(Observable.from(completables), MAX_CONCURRENCY).await();
    assertItemsPerBucket(session, numberOfBuckets, MAX_BUCKET_SIZE - 1);
    completables = new ArrayList<>();
    for (int i = 0; i < jobsRemoved + MAX_BUCKET_SIZE; i++) {
        Job<BatchJobExt> job = createBatchJobObject();
        completables.add(store.storeJob(job));
    }
    Completable.merge(Observable.from(completables), MAX_CONCURRENCY).await();
    retrievedJobsAndErrors = store.retrieveJobs().toBlocking().first();
    assertThat(retrievedJobsAndErrors.getLeft()).hasSize(numberOfJobsToCreate + MAX_BUCKET_SIZE);
    assertItemsPerBucket(session, numberOfBuckets + 1, MAX_BUCKET_SIZE);
}
Also used : Completable(rx.Completable) BatchJobExt(com.netflix.titus.api.jobmanager.model.job.ext.BatchJobExt) ArrayList(java.util.ArrayList) JobStore(com.netflix.titus.api.jobmanager.store.JobStore) ArrayList(java.util.ArrayList) List(java.util.List) Job(com.netflix.titus.api.jobmanager.model.job.Job) Session(com.datastax.driver.core.Session) Test(org.junit.Test) IntegrationNotParallelizableTest(com.netflix.titus.testkit.junit.category.IntegrationNotParallelizableTest)

Aggregations

JobStore (com.netflix.titus.api.jobmanager.store.JobStore)25 List (java.util.List)24 ArrayList (java.util.ArrayList)23 BatchJobExt (com.netflix.titus.api.jobmanager.model.job.ext.BatchJobExt)18 Task (com.netflix.titus.api.jobmanager.model.job.Task)17 IntegrationNotParallelizableTest (com.netflix.titus.testkit.junit.category.IntegrationNotParallelizableTest)14 Test (org.junit.Test)14 BatchJobTask (com.netflix.titus.api.jobmanager.model.job.BatchJobTask)13 ServiceJobTask (com.netflix.titus.api.jobmanager.model.job.ServiceJobTask)11 Job (com.netflix.titus.api.jobmanager.model.job.Job)8 TitusRuntime (com.netflix.titus.common.runtime.TitusRuntime)6 TaskState (com.netflix.titus.api.jobmanager.model.job.TaskState)5 TaskStatus (com.netflix.titus.api.jobmanager.model.job.TaskStatus)5 EntityHolder (com.netflix.titus.common.framework.reconciler.EntityHolder)5 ReconciliationEngine (com.netflix.titus.common.framework.reconciler.ReconciliationEngine)5 JobServiceRuntime (com.netflix.titus.master.jobmanager.service.JobServiceRuntime)5 VersionSupplier (com.netflix.titus.master.jobmanager.service.VersionSupplier)5 JobFunctions (com.netflix.titus.api.jobmanager.model.job.JobFunctions)4 JobState (com.netflix.titus.api.jobmanager.model.job.JobState)4 ServiceJobExt (com.netflix.titus.api.jobmanager.model.job.ext.ServiceJobExt)4