use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.
the class SolutionSynchronizerTest method executeSynchronizeSolution.
private void executeSynchronizeSolution(CompletableFuture future, LocalDateTime startTime, List<TaskAssigningRuntimeDelegate.FindTasksResult> tasksQueryResults, List<List<User>> userQueryResults, int executionsCount) throws Exception {
TaskAssigningSolution solution = new TaskAssigningSolution(1, new ArrayList<>(), new ArrayList<>());
queryExecutionsCountDown = new CountDownLatch(executionsCount);
prepareQueryExecutions(tasksQueryResults);
prepareUserQueryExecutions(userQueryResults);
when(generatedChanges.isEmpty()).thenReturn(false);
when(emptyChanges.isEmpty()).thenReturn(true);
when(solverExecutor.isStarted()).thenReturn(true);
runnableBase.synchronizeSolution(solution, startTime);
// wait for the query executions to happen
queryExecutionsCountDown.await();
applyResultCountDown.await();
verify(resultConsumer).accept(resultCaptor.capture());
assertEquals(generatedChanges, resultCaptor.getValue().getChanges());
runnableBase.destroy();
future.get();
assertTrue(runnableBase.isDestroyed());
}
use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.
the class SolverHandlerTest method onSolutionSynchronizedWithUnchangedPeriodTimeoutAndSameBestSolution.
@Test
public void onSolutionSynchronizedWithUnchangedPeriodTimeoutAndSameBestSolution() {
TaskAssigningSolution initialSolution = prepareStartAndASolutionProduced();
BestSolutionChangedEvent<TaskAssigningSolution> event = mockEvent(true, true);
doReturn(initialSolution).when(event).getNewBestSolution();
listenerCaptor.getValue().bestSolutionChanged(event);
SolutionSynchronizer.Result result = SolutionSynchronizer.Result.forUnchangedPeriodTimeout();
synchronizerConsumerCaptor.getValue().accept(result);
verify(solverExecutor, never()).addProblemFactChanges(any(List.class));
verify(solutionSynchronizer).synchronizeSolution(eq(initialSolution), eq(nextQueryTime));
}
use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.
the class SolverHandlerTest method onSolutionProcessedSuccessful.
private void onSolutionProcessedSuccessful(SolutionProcessor.Result result, boolean withRecoverableError, boolean withImproveSolutionOnBackgroundDuration) {
TaskAssigningSolution solution = prepareStartAndASolutionProduced();
processorConsumerCaptor.getValue().accept(result);
SolverHandlerContext context = contextCaptor.getValue();
assertEquals(nextQueryTime, context.getNextQueryTime());
if (withRecoverableError) {
verify(solutionSynchronizer).synchronizeSolution(eq(solution), eq(previousQueryTime));
} else if (withImproveSolutionOnBackgroundDuration) {
verify(solutionSynchronizer).synchronizeSolution(eq(solution), eq(nextQueryTime), improveSolutionOnBackgroundDurationCaptor.capture());
assertThat(handlerConfig.getImproveSolutionOnBackgroundDuration()).isEqualTo(improveSolutionOnBackgroundDurationCaptor.getValue());
} else {
verify(solutionSynchronizer).synchronizeSolution(eq(solution), eq(nextQueryTime));
}
}
use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.
the class SolverHandlerTest method onSolutionSynchronizedWithChanges.
@Test
public void onSolutionSynchronizedWithChanges() {
prepareStart();
List<ProblemFactChange<TaskAssigningSolution>> changes = new ArrayList<>();
changes.add(new TaskPropertyChangeProblemFactChange(new Task()));
SolutionSynchronizer.Result result = SolutionSynchronizer.Result.forChanges(changes);
doReturn(true).when(solverExecutor).isStarted();
synchronizerConsumerCaptor.getValue().accept(result);
verify(solverExecutor).addProblemFactChanges(changes);
verify(solutionProcessor, never()).process(any(TaskAssigningSolution.class));
verify(solutionSynchronizer, never()).synchronizeSolution(any(TaskAssigningSolution.class), any(LocalDateTime.class));
}
use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.
the class SolverHandlerTest method onSolutionSynchronizedWithUnchangedPeriodTimeoutAndSameScoreBestSolution.
@Test
public void onSolutionSynchronizedWithUnchangedPeriodTimeoutAndSameScoreBestSolution() {
TaskAssigningSolution initialSolution = prepareStartAndASolutionProduced();
BestSolutionChangedEvent<TaskAssigningSolution> event = mockEvent(true, true);
BendableLongScore initialSolutionScore = initialSolution.getScore();
TaskAssigningSolution nextBestSolution = event.getNewBestSolution();
doReturn(initialSolutionScore).when(nextBestSolution).getScore();
listenerCaptor.getValue().bestSolutionChanged(event);
SolutionSynchronizer.Result result = SolutionSynchronizer.Result.forUnchangedPeriodTimeout();
synchronizerConsumerCaptor.getValue().accept(result);
verify(solverExecutor, never()).addProblemFactChanges(any(List.class));
verify(solutionSynchronizer).synchronizeSolution(eq(initialSolution), eq(nextQueryTime));
}
Aggregations