You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by vo...@apache.org on 2020/05/03 18:23:01 UTC
[fineract] branch develop updated: more clean up in
SchedulerJobsTest (re. FINERACT-922)
This is an automated email from the ASF dual-hosted git repository.
vorburger pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new c4797ab more clean up in SchedulerJobsTest (re. FINERACT-922)
c4797ab is described below
commit c4797ab96b2b5bfd1a0a31f7a5d284b75124f130
Author: Michael Vorburger <mi...@vorburger.ch>
AuthorDate: Sun May 3 19:12:14 2020 +0200
more clean up in SchedulerJobsTest (re. FINERACT-922)
This does NOT, yet, fix FINERACT-922, but it splits the old test into
new smaller test methods, which (hopefully) should always pass, except
for the last one.
---
.../integrationtests/SchedulerJobsTest.java | 67 ++++++++++++----------
.../integrationtests/SchedulerJobsTestResults.java | 5 +-
.../common/SchedulerJobHelper.java | 28 ++++++---
3 files changed, 58 insertions(+), 42 deletions(-)
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
index 5ad6f22..65cfad9 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTest.java
@@ -42,71 +42,76 @@ public class SchedulerJobsTest {
@Before
public void setup() {
Utils.initializeRESTAssured();
- this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
- this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
- this.requestSpec.header("Fineract-Platform-TenantId", "default");
- this.schedulerJobHelper = new SchedulerJobHelper(this.requestSpec);
+ requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
+ requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
+ requestSpec.header("Fineract-Platform-TenantId", "default");
+ schedulerJobHelper = new SchedulerJobHelper(requestSpec);
}
@Test
public void testFlippingSchedulerStatus() throws InterruptedException {
// Retrieving Status of Scheduler
- Boolean schedulerStatus = this.schedulerJobHelper.getSchedulerStatus();
+ Boolean schedulerStatus = schedulerJobHelper.getSchedulerStatus();
if (schedulerStatus == true) {
- this.schedulerJobHelper.updateSchedulerStatus("stop");
- schedulerStatus = this.schedulerJobHelper.getSchedulerStatus();
+ schedulerJobHelper.updateSchedulerStatus("stop");
+ schedulerStatus = schedulerJobHelper.getSchedulerStatus();
// Verifying Status of the Scheduler after stopping
assertEquals("Verifying Scheduler Job Status", false, schedulerStatus);
} else {
- this.schedulerJobHelper.updateSchedulerStatus("start");
- schedulerStatus = this.schedulerJobHelper.getSchedulerStatus();
+ schedulerJobHelper.updateSchedulerStatus("start");
+ schedulerStatus = schedulerJobHelper.getSchedulerStatus();
// Verifying Status of the Scheduler after starting
assertEquals("Verifying Scheduler Job Status", true, schedulerStatus);
}
}
@Test
- @Ignore // TODO FINERACT-852
- public void testSchedulerJobs() throws InterruptedException {
- // Retrieving All Scheduler Jobs
- List<Map> allSchedulerJobsData = this.schedulerJobHelper.getAllSchedulerJobs();
- assertNotNull(allSchedulerJobsData);
-
- for (Integer jobIndex = 0; jobIndex < allSchedulerJobsData.size(); jobIndex++) {
- Integer jobId = (Integer) allSchedulerJobsData.get(jobIndex).get("jobId");
+ public void testFlippingJobsActiveStatus() throws InterruptedException {
+ // Stop the Scheduler while we test flapping jobs' active on/off, to avoid side effects
+ schedulerJobHelper.updateSchedulerStatus("stop");
+ // For each retrieved scheduled job (by ID)...
+ for (Integer jobId : schedulerJobHelper.getAllSchedulerJobIds()) {
// Retrieving Scheduler Job by ID
- Map schedulerJob = this.schedulerJobHelper.getSchedulerJobById(jobId.toString());
- assertNotNull(schedulerJob);
+ Map<String, Object> schedulerJob = schedulerJobHelper.getSchedulerJobById(jobId);
Boolean active = (Boolean) schedulerJob.get("active");
-
- if (active == true) {
- active = false;
- } else {
- active = true;
- }
+ active = !active;
// Updating Scheduler Job
- Map changes = this.schedulerJobHelper.updateSchedulerJob(jobId.toString(), active.toString());
+ Map<String, Object> changes = schedulerJobHelper.updateSchedulerJob(jobId, active.toString());
+
// Verifying Scheduler Job updates
assertEquals("Verifying Scheduler Job Updates", active, changes.get("active"));
+ schedulerJob = schedulerJobHelper.getSchedulerJobById(jobId);
+ assertEquals("Verifying Get Scheduler Job", active, schedulerJob.get("active"));
+ }
+ }
+
+ @Test
+ @Ignore // TODO FINERACT-852 & FINERACT-922
+ public void testSchedulerJobs() throws InterruptedException {
+ // For each retrieved scheduled job (by ID)...
+ for (Integer jobId : schedulerJobHelper.getAllSchedulerJobIds()) {
+ // Retrieving Scheduler Job by ID
+ Map<String, Object> schedulerJob = schedulerJobHelper.getSchedulerJobById(jobId);
+
// Executing Scheduler Job
- this.schedulerJobHelper.runSchedulerJob(this.requestSpec, jobId.toString());
+ schedulerJobHelper.runSchedulerJob(requestSpec, jobId.toString());
// Retrieving Scheduler Job by ID
- schedulerJob = this.schedulerJobHelper.getSchedulerJobById(jobId.toString());
+ schedulerJob = schedulerJobHelper.getSchedulerJobById(jobId);
assertNotNull(schedulerJob);
// Waiting for Job to complete
while ((Boolean) schedulerJob.get("currentlyRunning") == true) {
Thread.sleep(500);
- schedulerJob = this.schedulerJobHelper.getSchedulerJobById(jobId.toString());
+ schedulerJob = schedulerJobHelper.getSchedulerJobById(jobId);
assertNotNull(schedulerJob);
- System.out.println("Job " +jobId.toString() +" is Still Running");
+ System.out.println("Job " + jobId +" is Still Running");
}
- List<Map> jobHistoryData = this.schedulerJobHelper.getSchedulerJobHistory(jobId.toString());
+ List<Map> jobHistoryData = schedulerJobHelper.getSchedulerJobHistory(jobId);
// Verifying the Status of the Recently executed Scheduler Job
assertFalse("Job History is empty :( Was it too slow? Failures in background job?", jobHistoryData.isEmpty());
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
index ee44d8b..907322c 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/SchedulerJobsTestResults.java
@@ -36,6 +36,7 @@ import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import org.apache.fineract.integrationtests.common.ClientHelper;
import org.apache.fineract.integrationtests.common.GlobalConfigurationHelper;
import org.apache.fineract.integrationtests.common.HolidayHelper;
@@ -772,12 +773,12 @@ public class SchedulerJobsTestResults {
this.schedulerJobHelper.executeJob(JobName);
- HashMap schedulerJob = this.schedulerJobHelper.getSchedulerJobById(jobId.toString());
+ Map<String, Object> schedulerJob = this.schedulerJobHelper.getSchedulerJobById(jobId);
Assert.assertNotNull(schedulerJob);
while ((Boolean) schedulerJob.get("currentlyRunning") == true) {
Thread.sleep(15000);
- schedulerJob = this.schedulerJobHelper.getSchedulerJobById(jobId.toString());
+ schedulerJob = this.schedulerJobHelper.getSchedulerJobById(jobId);
Assert.assertNotNull(schedulerJob);
}
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SchedulerJobHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SchedulerJobHelper.java
index 435d7c1..b2504cb 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SchedulerJobHelper.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/SchedulerJobHelper.java
@@ -18,6 +18,8 @@
*/
package org.apache.fineract.integrationtests.common;
+import static org.junit.Assert.assertNotNull;
+
import com.google.gson.Gson;
import io.restassured.builder.ResponseSpecBuilder;
import io.restassured.specification.RequestSpecification;
@@ -26,6 +28,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.ToIntFunction;
+import java.util.stream.Collectors;
import org.junit.Assert;
@SuppressWarnings({ "rawtypes", "unchecked" })
@@ -47,17 +51,23 @@ public class SchedulerJobHelper {
this.response202Spec = responseSpec;
}
- public List getAllSchedulerJobs() {
+ private List getAllSchedulerJobs() {
final String GET_ALL_SCHEDULER_JOBS_URL = "/fineract-provider/api/v1/jobs?" + Utils.TENANT_IDENTIFIER;
System.out.println("------------------------ RETRIEVING ALL SCHEDULER JOBS -------------------------");
final ArrayList response = Utils.performServerGet(requestSpec, response200Spec, GET_ALL_SCHEDULER_JOBS_URL, "");
return response;
}
- public HashMap getSchedulerJobById(final String jobId) {
+ public List<Integer> getAllSchedulerJobIds() {
+ ToIntFunction<Map> mapper = map -> (Integer) map.get("jobId");
+ return getAllSchedulerJobs().stream().mapToInt(mapper).boxed().collect(Collectors.toList());
+ }
+
+ public Map<String, Object> getSchedulerJobById(int jobId) {
final String GET_SCHEDULER_JOB_BY_ID_URL = "/fineract-provider/api/v1/jobs/" + jobId + "?" + Utils.TENANT_IDENTIFIER;
System.out.println("------------------------ RETRIEVING SCHEDULER JOB BY ID -------------------------");
- final HashMap response = Utils.performServerGet(requestSpec, response200Spec, GET_SCHEDULER_JOB_BY_ID_URL, "");
+ final Map<String, Object> response = Utils.performServerGet(requestSpec, response200Spec, GET_SCHEDULER_JOB_BY_ID_URL, "");
+ assertNotNull(response);
return response;
}
@@ -74,10 +84,10 @@ public class SchedulerJobHelper {
Utils.performServerPost(requestSpec, response202Spec, UPDATE_SCHEDULER_STATUS_URL, runSchedulerJobAsJSON(), null);
}
- public Map updateSchedulerJob(final String jobId, final String active) {
+ public Map<String, Object> updateSchedulerJob(int jobId, final String active) {
final String UPDATE_SCHEDULER_JOB_URL = "/fineract-provider/api/v1/jobs/" + jobId + "?" + Utils.TENANT_IDENTIFIER;
System.out.println("------------------------ UPDATING SCHEDULER JOB -------------------------");
- final Map response = Utils.performServerPut(requestSpec, response200Spec, UPDATE_SCHEDULER_JOB_URL,
+ final Map<String, Object> response = Utils.performServerPut(requestSpec, response200Spec, UPDATE_SCHEDULER_JOB_URL,
updateSchedulerJobAsJSON(active), "changes");
return response;
}
@@ -89,7 +99,7 @@ public class SchedulerJobHelper {
return new Gson().toJson(map);
}
- public List getSchedulerJobHistory(final String jobId) {
+ public List getSchedulerJobHistory(int jobId) {
final String GET_SCHEDULER_STATUS_URL = "/fineract-provider/api/v1/jobs/" + jobId + "/runhistory?" + Utils.TENANT_IDENTIFIER;
System.out.println("------------------------ RETRIEVING SCHEDULER JOB HISTORY -------------------------");
final Map response = Utils.performServerGet(requestSpec, response200Spec, GET_SCHEDULER_STATUS_URL, "");
@@ -122,18 +132,18 @@ public class SchedulerJobHelper {
runSchedulerJob(this.requestSpec, jobId.toString());
// Retrieving Scheduler Job by ID
- Map schedulerJob = getSchedulerJobById(jobId.toString());
+ Map schedulerJob = getSchedulerJobById(jobId);
Assert.assertNotNull(schedulerJob);
// Waiting for Job to complete
while ((Boolean) schedulerJob.get("currentlyRunning") == true) {
Thread.sleep(15000);
- schedulerJob = getSchedulerJobById(jobId.toString());
+ schedulerJob = getSchedulerJobById(jobId);
Assert.assertNotNull(schedulerJob);
System.out.println("Job is Still Running");
}
- List<Map> jobHistoryData = getSchedulerJobHistory(jobId.toString());
+ List<Map> jobHistoryData = getSchedulerJobHistory(jobId);
Assert.assertFalse("Job History is empty :( Was it too slow? Failures in background job?", jobHistoryData.isEmpty());