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 <[email protected]>
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());