FINERACT-2181: Enhance job execution polling in E2E tests
This commit is contained in:
+38
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.fineract.test.messaging.config;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Getter
|
||||
public class JobPollingProperties {
|
||||
|
||||
@Value("${fineract-test.job.interval-in-sec}")
|
||||
private long pollingIntervalInSec;
|
||||
|
||||
@Value("${fineract-test.job.delay-in-sec}")
|
||||
private long pollingDelayInSec;
|
||||
|
||||
@Value("${fineract-test.job.at-most-in-sec}")
|
||||
private long pollingAtMostInSec;
|
||||
|
||||
}
|
||||
+7
-3
@@ -31,6 +31,7 @@ import org.apache.fineract.client.services.SchedulerJobApi;
|
||||
import org.apache.fineract.test.data.job.Job;
|
||||
import org.apache.fineract.test.data.job.JobResolver;
|
||||
import org.apache.fineract.test.helper.ErrorHelper;
|
||||
import org.apache.fineract.test.messaging.config.JobPollingProperties;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import retrofit2.Response;
|
||||
@@ -43,6 +44,9 @@ public class JobService {
|
||||
@Autowired
|
||||
private SchedulerJobApi schedulerJobApi;
|
||||
|
||||
@Autowired
|
||||
private JobPollingProperties jobPollingProperties;
|
||||
|
||||
private final JobResolver jobResolver;
|
||||
|
||||
public void execute(Job job) {
|
||||
@@ -62,10 +66,10 @@ public class JobService {
|
||||
|
||||
private void waitUntilJobIsFinished(Job job) {
|
||||
String jobName = job.getName();
|
||||
await().atMost(Duration.ofMinutes(2)) //
|
||||
await().atMost(Duration.ofSeconds(jobPollingProperties.getPollingAtMostInSec())) //
|
||||
.alias("%s didn't finish on time".formatted(jobName)) //
|
||||
.pollInterval(Duration.ofSeconds(5)) //
|
||||
.pollDelay(Duration.ofSeconds(5)) //
|
||||
.pollInterval(Duration.ofSeconds(jobPollingProperties.getPollingIntervalInSec())) //
|
||||
.pollDelay(Duration.ofSeconds(jobPollingProperties.getPollingDelayInSec())) //
|
||||
.until(() -> {
|
||||
log.info("Waiting for job {} to finish", jobName);
|
||||
Long jobId = jobResolver.resolve(job);
|
||||
|
||||
+7
-12
@@ -130,6 +130,7 @@ import org.apache.fineract.test.helper.Utils;
|
||||
import org.apache.fineract.test.initializer.global.LoanProductGlobalInitializerStep;
|
||||
import org.apache.fineract.test.messaging.EventAssertion;
|
||||
import org.apache.fineract.test.messaging.config.EventProperties;
|
||||
import org.apache.fineract.test.messaging.config.JobPollingProperties;
|
||||
import org.apache.fineract.test.messaging.event.EventCheckHelper;
|
||||
import org.apache.fineract.test.messaging.event.loan.LoanRescheduledDueAdjustScheduleEvent;
|
||||
import org.apache.fineract.test.messaging.event.loan.LoanStatusChangedEvent;
|
||||
@@ -217,6 +218,9 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
@Autowired
|
||||
private LoanDisbursementDetailsApi loanDisbursementDetailsApi;
|
||||
|
||||
@Autowired
|
||||
private JobPollingProperties jobPollingProperties;
|
||||
|
||||
@When("Admin creates a new Loan")
|
||||
public void createLoan() throws IOException {
|
||||
Response<PostClientsResponse> clientResponse = testContext().get(TestContextKey.CLIENT_CREATE_RESPONSE);
|
||||
@@ -2493,18 +2497,9 @@ public class LoanStepDef extends AbstractStepDef {
|
||||
|
||||
@When("Admin checks that Loan COB is running until the current business date")
|
||||
public void checkLoanCOBCatchUpRunningUntilCOBBusinessDate() {
|
||||
await().atMost(Duration.ofMinutes(2)) //
|
||||
.pollInterval(Duration.ofSeconds(5)) //
|
||||
.pollDelay(Duration.ofSeconds(5)) //
|
||||
.until(() -> {
|
||||
Response<IsCatchUpRunningDTO> isCatchUpRunningResponse = loanCobCatchUpApi.isCatchUpRunning().execute();
|
||||
ErrorHelper.checkSuccessfulApiCall(isCatchUpRunningResponse);
|
||||
IsCatchUpRunningDTO isCatchUpRunning = isCatchUpRunningResponse.body();
|
||||
return isCatchUpRunning.getCatchUpRunning();
|
||||
});
|
||||
await().atMost(Duration.ofMinutes(4)) //
|
||||
.pollInterval(Duration.ofSeconds(5)) //
|
||||
.pollDelay(Duration.ofSeconds(5)) //
|
||||
await().atMost(Duration.ofSeconds(jobPollingProperties.getPollingAtMostInSec())) //
|
||||
.pollInterval(Duration.ofSeconds(jobPollingProperties.getPollingIntervalInSec())) //
|
||||
.pollDelay(Duration.ofSeconds(jobPollingProperties.getPollingDelayInSec())) //
|
||||
.until(() -> {
|
||||
Response<IsCatchUpRunningDTO> isCatchUpRunningResponse = loanCobCatchUpApi.isCatchUpRunning().execute();
|
||||
ErrorHelper.checkSuccessfulApiCall(isCatchUpRunningResponse);
|
||||
|
||||
@@ -40,3 +40,6 @@ fineract-test.event.wait-timeout-in-sec=${EVENT_WAIT_TIMEOUT_IN_SEC:5}
|
||||
fineract-test.event.verification-enabled=${EVENT_VERIFICATION_ENABLED:false}
|
||||
|
||||
fineract-test.client-read-timeout=${CLIENT_READ_TIMEOUT:60}
|
||||
fineract-test.job.interval-in-sec=${POLLING_INTERVAL_IN_SEC:1}
|
||||
fineract-test.job.delay-in-sec=${POLLING_DELAY_IN_SEC:3}
|
||||
fineract-test.job.at-most-in-sec=${POLLING_AT_MOST_IN_SEC:120}
|
||||
|
||||
Reference in New Issue
Block a user