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());