Search in sources :

Example 1 with JobStatus

use of org.kie.kogito.jobs.service.model.JobStatus in project kogito-apps by kiegroup.

the class JobDetailsMarshaller method readFrom.

@Override
public JobDetails readFrom(ProtoStreamReader reader) throws IOException {
    String id = reader.readString("id");
    String correlationId = reader.readString("correlationId");
    JobStatus status = mapString(reader.readString("status"), JobStatus.class);
    ZonedDateTime lastUpdate = instantToZonedDateTime(reader.readInstant("lastUpdate"));
    Integer retries = reader.readInt("retries");
    Integer priority = reader.readInt("priority");
    Integer executionCounter = reader.readInt("executionCounter");
    String scheduledId = reader.readString("scheduledId");
    // serialize payload
    String payload = reader.readString("payload");
    Recipient recipient = reader.readObject("recipient", Recipient.class);
    Trigger trigger = reader.readObject("trigger", Trigger.class);
    JobDetails.Type type = mapString(reader.readString("type"), JobDetails.Type.class);
    return JobDetails.builder().id(id).correlationId(correlationId).status(status).lastUpdate(lastUpdate).retries(retries).priority(priority).executionCounter(executionCounter).scheduledId(scheduledId).payload(payload).recipient(recipient).trigger(trigger).type(type).build();
}
Also used : JobStatus(org.kie.kogito.jobs.service.model.JobStatus) Trigger(org.kie.kogito.timer.Trigger) DateUtil.instantToZonedDateTime(org.kie.kogito.jobs.service.utils.DateUtil.instantToZonedDateTime) ZonedDateTime(java.time.ZonedDateTime) Recipient(org.kie.kogito.jobs.service.model.job.Recipient) JobDetails(org.kie.kogito.jobs.service.model.job.JobDetails)

Example 2 with JobStatus

use of org.kie.kogito.jobs.service.model.JobStatus in project kogito-apps by kiegroup.

the class JobDetailsMarshallerTest method setUp.

@BeforeEach
void setUp() {
    jobDetailsMarshaller = new JobDetailsMarshaller(new TriggerMarshaller(), new RecipientMarshaller());
    String id = "testId";
    String correlationId = "testCorrelationId";
    JobStatus status = JobStatus.SCHEDULED;
    Date date = new Date();
    ZonedDateTime lastUpdate = ZonedDateTime.ofInstant(date.toInstant(), DEFAULT_ZONE);
    Integer retries = 2;
    Integer priority = 3;
    Integer executionCounter = 4;
    String scheduledId = "testScheduledId";
    Object payload = new JsonObject().put("payload", "test");
    Recipient.HTTPRecipient recipient = new Recipient.HTTPRecipient("testEndpoint");
    Trigger trigger = new PointInTimeTrigger(new Date().toInstant().toEpochMilli(), null, null);
    JobDetails.Type type = JobDetails.Type.HTTP;
    jobDetails = JobDetails.builder().id(id).correlationId(correlationId).status(status).lastUpdate(lastUpdate).retries(retries).executionCounter(executionCounter).scheduledId(scheduledId).payload(payload).type(type).priority(priority).recipient(recipient).trigger(trigger).build();
    jsonObject = new JsonObject().put("id", id).put("correlationId", correlationId).put("status", status.name()).put("lastUpdate", date.getTime()).put("retries", retries).put("executionCounter", executionCounter).put("scheduledId", scheduledId).put("payload", payload).put("type", type.name()).put("priority", priority).put("recipient", new JsonObject().put("endpoint", recipient.getEndpoint()).put("classType", Recipient.HTTPRecipient.class.getName())).put("trigger", new JsonObject().put("nextFireTime", trigger.hasNextFireTime().getTime()).put("classType", PointInTimeTrigger.class.getName()));
}
Also used : JsonObject(io.vertx.core.json.JsonObject) Recipient(org.kie.kogito.jobs.service.model.job.Recipient) PointInTimeTrigger(org.kie.kogito.timer.impl.PointInTimeTrigger) Date(java.util.Date) JobDetails(org.kie.kogito.jobs.service.model.job.JobDetails) JobStatus(org.kie.kogito.jobs.service.model.JobStatus) PointInTimeTrigger(org.kie.kogito.timer.impl.PointInTimeTrigger) Trigger(org.kie.kogito.timer.Trigger) ZonedDateTime(java.time.ZonedDateTime) JsonObject(io.vertx.core.json.JsonObject) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 3 with JobStatus

use of org.kie.kogito.jobs.service.model.JobStatus in project kogito-apps by kiegroup.

the class MongoDBJobRepositoryTest method findByStatusBetweenDatesOrderByPriority.

@Test
void findByStatusBetweenDatesOrderByPriority() {
    ZonedDateTime from = ZonedDateTime.now();
    ZonedDateTime to = ZonedDateTime.now();
    PublisherBuilder<JobDetails> result = mongoDBJobRepository.findByStatusBetweenDatesOrderByPriority(from, to, JobStatus.SCHEDULED, JobStatus.RETRY);
    assertNotNull(result);
    ArgumentCaptor<Bson> filterCaptor = ArgumentCaptor.forClass(Bson.class);
    ArgumentCaptor<FindOptions> optionCaptor = ArgumentCaptor.forClass(FindOptions.class);
    verify(collection, times(1)).find(filterCaptor.capture(), optionCaptor.capture());
    verify(jobDetailsMarshaller, atLeastOnce()).unmarshall(marshalled);
    assertEquals(and(in("status", Arrays.stream(new JobStatus[] { JobStatus.SCHEDULED, JobStatus.RETRY }).map(Enum::name).collect(toList())), gt("trigger.nextFireTime", from.toInstant().toEpochMilli()), lt("trigger.nextFireTime", to.toInstant().toEpochMilli())), filterCaptor.getValue());
}
Also used : JobStatus(org.kie.kogito.jobs.service.model.JobStatus) FindOptions(io.quarkus.mongodb.FindOptions) ZonedDateTime(java.time.ZonedDateTime) JobDetails(org.kie.kogito.jobs.service.model.job.JobDetails) Bson(org.bson.conversions.Bson) Test(org.junit.jupiter.api.Test)

Example 4 with JobStatus

use of org.kie.kogito.jobs.service.model.JobStatus in project kogito-apps by kiegroup.

the class MongoDBJobDetailsMarshallerTest method unmarshall.

@Test
void unmarshall() {
    String id = "testId";
    String correlationId = "testCorrelationId";
    JobStatus status = JobStatus.SCHEDULED;
    Date date = new Date();
    ZonedDateTime lastUpdate = ZonedDateTime.ofInstant(date.toInstant(), DEFAULT_ZONE);
    Integer retries = 2;
    Integer priority = 3;
    Integer executionCounter = 4;
    String scheduledId = "testScheduledId";
    Object payload = new JsonObject().put("payload", "test");
    Recipient.HTTPRecipient recipient = new Recipient.HTTPRecipient("testEndpoint");
    Trigger trigger = new PointInTimeTrigger(new Date().toInstant().toEpochMilli(), null, null);
    JobDetails.Type type = JobDetails.Type.HTTP;
    JobDetails jobDetails = JobDetails.builder().id(id).correlationId(correlationId).status(status).lastUpdate(lastUpdate).retries(retries).executionCounter(executionCounter).scheduledId(scheduledId).payload(payload).type(type).priority(priority).recipient(recipient).trigger(trigger).build();
    JsonObject jsonObject = new JsonObject().put("_id", "test").put("id", id).put("correlationId", correlationId).put("status", status.name()).put("lastUpdate", date.getTime()).put("retries", retries).put("executionCounter", executionCounter).put("scheduledId", scheduledId).put("payload", payload).put("type", type.name()).put("priority", priority).put("recipient", new JsonObject().put("endpoint", recipient.getEndpoint()).put("classType", Recipient.HTTPRecipient.class.getName())).put("trigger", new JsonObject().put("nextFireTime", trigger.hasNextFireTime().getTime()).put("classType", PointInTimeTrigger.class.getName()));
    assertEquals(jobDetails, mongoDBJobDetailsMarshaller.unmarshall(jsonObject));
}
Also used : JsonObject(io.vertx.core.json.JsonObject) Recipient(org.kie.kogito.jobs.service.model.job.Recipient) PointInTimeTrigger(org.kie.kogito.timer.impl.PointInTimeTrigger) Date(java.util.Date) JobDetails(org.kie.kogito.jobs.service.model.job.JobDetails) JobStatus(org.kie.kogito.jobs.service.model.JobStatus) PointInTimeTrigger(org.kie.kogito.timer.impl.PointInTimeTrigger) Trigger(org.kie.kogito.timer.Trigger) ZonedDateTime(java.time.ZonedDateTime) JsonObject(io.vertx.core.json.JsonObject) Test(org.junit.jupiter.api.Test)

Aggregations

ZonedDateTime (java.time.ZonedDateTime)4 JobStatus (org.kie.kogito.jobs.service.model.JobStatus)4 JobDetails (org.kie.kogito.jobs.service.model.job.JobDetails)4 Recipient (org.kie.kogito.jobs.service.model.job.Recipient)3 Trigger (org.kie.kogito.timer.Trigger)3 JsonObject (io.vertx.core.json.JsonObject)2 Date (java.util.Date)2 Test (org.junit.jupiter.api.Test)2 PointInTimeTrigger (org.kie.kogito.timer.impl.PointInTimeTrigger)2 FindOptions (io.quarkus.mongodb.FindOptions)1 Bson (org.bson.conversions.Bson)1 BeforeEach (org.junit.jupiter.api.BeforeEach)1 DateUtil.instantToZonedDateTime (org.kie.kogito.jobs.service.utils.DateUtil.instantToZonedDateTime)1