use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class TaskAssigningServiceTest method onWaitForImprovedSolutionTimerFiredProduceTheEvent.
@Test
void onWaitForImprovedSolutionTimerFiredProduceTheEvent() throws Exception {
prepareStart();
doReturn(WAIT_FOR_IMPROVED_SOLUTION_DURATION).when(config).getWaitForImprovedSolutionDuration();
doReturn(TIMER_ID).when(vertx).setTimer(eq(WAIT_FOR_IMPROVED_SOLUTION_DURATION.toMillis()), any(Handler.class));
TaskAssigningSolution initialSolution = buildSolutionWithScore(INITIAL_SCORE);
taskAssigningService.onBestSolutionChange(mockEvent(initialSolution));
verify(managedExecutor, never()).runAsync(any());
verify(vertx).setTimer(anyLong(), timerHandlerCaptor.capture());
timerHandlerCaptor.getValue().handle(TIMER_ID);
verify(timerBasedEvent).fire(timerBasedEventCaptor.capture());
assertThat(timerBasedEventCaptor.getValue()).isNotNull();
assertThat(timerBasedEventCaptor.getValue().getTimerId()).isEqualTo(TIMER_ID);
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class TaskAssigningServiceTest method onSolutionUpdatedOnBackgroundWithNoScoreImprovement.
@Test
void onSolutionUpdatedOnBackgroundWithNoScoreImprovement() throws Exception {
TaskAssigningSolution newBestSolution = buildSolutionWithScore(INITIAL_SCORE);
prepareOnSolutionUpdatedOnBackground(INITIAL_SCORE, newBestSolution);
verify(taskAssigningService, never()).executeSolutionChange(newBestSolution);
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class TaskAssigningServiceTest method onImproveSolutionOnBackgroundTimerFiredProduceTheEvent.
@Test
@SuppressWarnings("unchecked")
void onImproveSolutionOnBackgroundTimerFiredProduceTheEvent() throws Exception {
prepareStart();
TaskAssigningSolution initialSolution = buildSolutionWithScore(INITIAL_SCORE);
context.setTaskPublished(TASK_1_ID, true);
context.setTaskPublished(TASK_2_ID, true);
context.setTaskPublished(TASK_3_ID, true);
context.setTaskPublished(TASK_4_ID, true);
doReturn(IMPROVE_SOLUTION_ON_BACKGROUND_DURATION).when(config).getImproveSolutionOnBackgroundDuration();
doReturn(TIMER_ID).when(vertx).setTimer(eq(IMPROVE_SOLUTION_ON_BACKGROUND_DURATION.toMillis()), any(Handler.class));
taskAssigningService.onBestSolutionChange(mockEvent(initialSolution));
verify(managedExecutor).runAsync(managedExecutorCaptor.capture());
managedExecutorCaptor.getValue().run();
verify(vertx).setTimer(eq(IMPROVE_SOLUTION_ON_BACKGROUND_DURATION.toMillis()), timerHandlerCaptor.capture());
timerHandlerCaptor.getValue().handle(TIMER_ID);
verify(timerBasedEvent).fire(timerBasedEventCaptor.capture());
assertThat(timerBasedEventCaptor.getValue()).isNotNull();
assertThat(timerBasedEventCaptor.getValue().getTimerId()).isEqualTo(TIMER_ID);
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class TaskAssigningServiceTest method mockEvent.
@SuppressWarnings("unchecked")
private static BestSolutionChangedEvent<TaskAssigningSolution> mockEvent(TaskAssigningSolution solution, boolean allChangesProcessed, boolean solutionInitialized) {
BestSolutionChangedEvent<TaskAssigningSolution> event = mock(BestSolutionChangedEvent.class);
doReturn(allChangesProcessed).when(event).isEveryProblemFactChangeProcessed();
BendableLongScore score = BendableLongScore.zero(1, 1).withInitScore(solutionInitialized ? 1 : -1);
TaskAssigningSolution spySolution = spy(solution);
doReturn(score).when(spySolution).getScore();
doReturn(spySolution).when(event).getNewBestSolution();
return event;
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class TaskAssigningServiceTest method onSolutionChangeWithNoPlanningItems.
@Test
void onSolutionChangeWithNoPlanningItems() throws Exception {
prepareStart();
TaskAssigningSolution solution = buildSolution();
context.setTaskPublished(TASK_1_ID, true);
context.setTaskPublished(TASK_2_ID, true);
context.setTaskPublished(TASK_3_ID, true);
context.setTaskPublished(TASK_4_ID, true);
taskAssigningService.onBestSolutionChange(mockEvent(solution, true, true));
verify(managedExecutor).runAsync(managedExecutorCaptor.capture());
managedExecutorCaptor.getValue().run();
verify(planningExecutor, never()).start(any(), any());
verify(serviceEventConsumer).resume();
}
Aggregations