From ffb9147770b30c0c7d7bf5bd864a622be6054a36 Mon Sep 17 00:00:00 2001 From: taskain7 Date: Tue, 28 Jun 2022 12:05:07 +0200 Subject: [PATCH] New Instance type: Batch Manager --- .../core/config/FineractProperties.java | 13 +++------- .../api/InstanceModeApiResource.java | 3 ++- .../api/InstanceModeApiResourceSwagger.java | 4 ++- .../filter/FineractInstanceModeApiFilter.java | 2 +- .../jobs/api/SchedulerJobApiResource.java | 2 +- .../jobs/service/JobRegisterServiceImpl.java | 2 +- .../src/main/resources/application.properties | 3 ++- ...DataSourcePerTenantServiceFactoryTest.java | 12 +++++---- .../core/InstanceTypeStepDefinitions.java | 7 ++--- .../instancemode/InstanceModeMock.java | 5 ++-- .../FineractInstanceModeApiFilterTest.java | 26 +++++++++---------- .../infrastructure.core.feature | 2 +- .../InstanceModeIntegrationTest.java | 18 ++++++------- .../instancemode/ConfigureInstanceMode.java | 4 ++- .../instancemode/InstanceModeHelper.java | 4 +-- .../InstanceModeSupportExtension.java | 12 +++++---- 16 files changed, 62 insertions(+), 57 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java index 76acae42e..10c447990 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java @@ -55,18 +55,11 @@ public class FineractProperties { private boolean readEnabled; private boolean writeEnabled; - private boolean batchEnabled; + private boolean batchWorkerEnabled; + private boolean batchManagerEnabled; public boolean isReadOnlyMode() { - return readEnabled && !writeEnabled && !batchEnabled; - } - - public boolean isWriteOnlyMode() { - return !readEnabled && writeEnabled && !batchEnabled; - } - - public boolean isBatchOnlyMode() { - return !readEnabled && !writeEnabled && batchEnabled; + return readEnabled && !writeEnabled && !batchWorkerEnabled && !batchManagerEnabled; } } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResource.java index 08a82b9a1..54a385845 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResource.java @@ -71,7 +71,8 @@ public class InstanceModeApiResource implements InitializingBean { log.warn("------------------------------------------------------------"); fineractProperties.getMode().setReadEnabled(request.isReadEnabled()); fineractProperties.getMode().setWriteEnabled(request.isWriteEnabled()); - fineractProperties.getMode().setBatchEnabled(request.isBatchEnabled()); + fineractProperties.getMode().setBatchWorkerEnabled(request.isBatchWorkerEnabled()); + fineractProperties.getMode().setBatchManagerEnabled(request.isBatchManagerEnabled()); return Response.ok().build(); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResourceSwagger.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResourceSwagger.java index eda10c894..cdfc1ee0d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResourceSwagger.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResourceSwagger.java @@ -34,6 +34,8 @@ public class InstanceModeApiResourceSwagger { @Schema(required = true, example = "true") public boolean writeEnabled; @Schema(required = true, example = "true") - public boolean batchEnabled; + public boolean batchWorkerEnabled; + @Schema(required = true, example = "true") + public boolean batchManagerEnabled; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java index d0f3307dc..9e6dfb992 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java @@ -44,7 +44,7 @@ import org.springframework.web.filter.OncePerRequestFilter; public class FineractInstanceModeApiFilter extends OncePerRequestFilter { private static final List EXCEPTION_LIST = List.of( - item(FineractProperties.FineractModeProperties::isBatchEnabled, pi -> pi.startsWith("/jobs")), + item(FineractProperties.FineractModeProperties::isBatchManagerEnabled, pi -> pi.startsWith("/jobs")), item(p -> true, pi -> pi.startsWith("/instance-mode"))); private final FineractProperties fineractProperties; diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/api/SchedulerJobApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/api/SchedulerJobApiResource.java index 6f42b6494..2cf84d7c8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/api/SchedulerJobApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/api/SchedulerJobApiResource.java @@ -133,7 +133,7 @@ public class SchedulerJobApiResource { @QueryParam(SchedulerJobApiConstants.COMMAND) @Parameter(description = "command") final String commandParam) { // check the logged in user have permissions to execute scheduler jobs Response response; - if (fineractProperties.getMode().isBatchEnabled()) { + if (fineractProperties.getMode().isBatchManagerEnabled()) { final boolean hasNotPermission = this.context.authenticatedUser().hasNotPermissionForAnyOf("ALL_FUNCTIONS", "EXECUTEJOB_SCHEDULER"); if (hasNotPermission) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java index e3b880b0e..f94238a2a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobRegisterServiceImpl.java @@ -98,7 +98,7 @@ public class JobRegisterServiceImpl implements JobRegisterService, ApplicationLi @PostConstruct public void loadAllJobs() { // If the instance is not Batch Enabled will not load the Jobs - if (!fineractProperties.getMode().isBatchEnabled()) { + if (!fineractProperties.getMode().isBatchManagerEnabled()) { return; } final List allTenants = this.tenantDetailsService.findAllTenants(); diff --git a/fineract-provider/src/main/resources/application.properties b/fineract-provider/src/main/resources/application.properties index 1d3fc966e..e939a8642 100644 --- a/fineract-provider/src/main/resources/application.properties +++ b/fineract-provider/src/main/resources/application.properties @@ -37,7 +37,8 @@ fineract.tenant.description=${FINERACT_DEFAULT_TENANTDB_DESCRIPTION:Default Demo fineract.mode.read-enabled=${FINERACT_MODE_READ_ENABLED:true} fineract.mode.write-enabled=${FINERACT_MODE_WRITE_ENABLED:true} -fineract.mode.batch-enabled=${FINERACT_MODE_BATCH_ENABLED:true} +fineract.mode.batch-worker-enabled=${FINERACT_MODE_BATCH_WORKER_ENABLED:true} +fineract.mode.batch-manager-enabled=${FINERACT_MODE_BATCH_MANAGER_ENABLED:true} management.health.jms.enabled=false diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/DataSourcePerTenantServiceFactoryTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/DataSourcePerTenantServiceFactoryTest.java index 036ccddfa..e34c8aa84 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/DataSourcePerTenantServiceFactoryTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/DataSourcePerTenantServiceFactoryTest.java @@ -147,7 +147,7 @@ public class DataSourcePerTenantServiceFactoryTest { void testCreateNewDataSourceFor_ShouldUseNormalConfiguration_WhenInAllMode() { // given FineractProperties.FineractModeProperties modeProperties = createModeProps(MASTER_DB_AUTO_COMMIT_ENABLED, - MASTER_DB_AUTO_COMMIT_ENABLED, MASTER_DB_AUTO_COMMIT_ENABLED); + MASTER_DB_AUTO_COMMIT_ENABLED, MASTER_DB_AUTO_COMMIT_ENABLED, MASTER_DB_AUTO_COMMIT_ENABLED); given(fineractProperties.getMode()).willReturn(modeProperties); // when @@ -173,7 +173,7 @@ public class DataSourcePerTenantServiceFactoryTest { @Test void testCreateNewDataSourceFor_ShouldUseReadOnlyConfiguration_WhenInReadOnlyMode() { // given - FineractProperties.FineractModeProperties modeProperties = createModeProps(true, false, false); + FineractProperties.FineractModeProperties modeProperties = createModeProps(true, false, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); // when @@ -199,7 +199,7 @@ public class DataSourcePerTenantServiceFactoryTest { @Test void testCreateNewDataSourceFor_ShouldUseNormalConfiguration_WhenInBatchOnlyMode() { // given - FineractProperties.FineractModeProperties modeProperties = createModeProps(false, false, true); + FineractProperties.FineractModeProperties modeProperties = createModeProps(false, false, true, true); given(fineractProperties.getMode()).willReturn(modeProperties); // when @@ -222,11 +222,13 @@ public class DataSourcePerTenantServiceFactoryTest { assertEquals(MASTER_DB_AUTO_COMMIT_ENABLED, hikariConfig.isAutoCommit()); } - private FineractProperties.FineractModeProperties createModeProps(boolean readEnabled, boolean writeEnabled, boolean batchEnabled) { + private FineractProperties.FineractModeProperties createModeProps(boolean readEnabled, boolean writeEnabled, boolean batchWorkerEnabled, + boolean batchManagerEnabled) { FineractProperties.FineractModeProperties modeProperties = new FineractProperties.FineractModeProperties(); modeProperties.setReadEnabled(readEnabled); modeProperties.setWriteEnabled(writeEnabled); - modeProperties.setBatchEnabled(batchEnabled); + modeProperties.setBatchWorkerEnabled(batchWorkerEnabled); + modeProperties.setBatchManagerEnabled(batchManagerEnabled); return modeProperties; } diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/InstanceTypeStepDefinitions.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/InstanceTypeStepDefinitions.java index a2715f368..82eafd552 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/InstanceTypeStepDefinitions.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/InstanceTypeStepDefinitions.java @@ -31,7 +31,8 @@ public class InstanceTypeStepDefinitions implements En { Given("Set every Fineract instance type to false", () -> { fineractProperties.getMode().setWriteEnabled(false); fineractProperties.getMode().setReadEnabled(false); - fineractProperties.getMode().setBatchEnabled(false); + fineractProperties.getMode().setBatchWorkerEnabled(false); + fineractProperties.getMode().setBatchManagerEnabled(false); }); Given("Fineract instance is a write instance", () -> { fineractProperties.getMode().setWriteEnabled(true); @@ -39,8 +40,8 @@ public class InstanceTypeStepDefinitions implements En { Given("Fineract instance is a read instance", () -> { fineractProperties.getMode().setReadEnabled(true); }); - Given("Fineract instance is a batch instance", () -> { - fineractProperties.getMode().setBatchEnabled(true); + Given("Fineract instance is a batch manager instance", () -> { + fineractProperties.getMode().setBatchManagerEnabled(true); }); } } diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/InstanceModeMock.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/InstanceModeMock.java index 99c9a3104..24354accf 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/InstanceModeMock.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/InstanceModeMock.java @@ -27,11 +27,12 @@ public final class InstanceModeMock { } public static FineractProperties.FineractModeProperties createModeProps(boolean readEnabled, boolean writeEnabled, - boolean batchEnabled) { + boolean batchWorkerEnabled, boolean batchManagerEnabled) { FineractProperties.FineractModeProperties modeProperties = new FineractProperties.FineractModeProperties(); modeProperties.setReadEnabled(readEnabled); modeProperties.setWriteEnabled(writeEnabled); - modeProperties.setBatchEnabled(batchEnabled); + modeProperties.setBatchWorkerEnabled(batchWorkerEnabled); + modeProperties.setBatchManagerEnabled(batchManagerEnabled); return modeProperties; } } diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilterTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilterTest.java index dff915d69..86d14d8f7 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilterTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilterTest.java @@ -71,7 +71,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldLetReadApisThrough_WhenFineractIsInAllModeAndIsGetApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, true, true); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, true, true, true); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.GET.name()); given(request.getPathInfo()).willReturn("/loans"); @@ -84,7 +84,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldLetReadApisThrough_WhenFineractIsInReadOnlyModeAndIsGetApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, false, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, false, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.GET.name()); given(request.getPathInfo()).willReturn("/loans"); @@ -98,7 +98,7 @@ class FineractInstanceModeApiFilterTest { void testDoFilterInternal_ShouldLetActuatorApisThrough_WhenFineractIsInReadOnlyModeAndIsHealthApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, false, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, false, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.GET.name()); given(request.getServletPath()).willReturn("/actuator/health"); @@ -112,7 +112,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldNotLetWriteApisThrough_WhenFineractIsInReadOnlyModeAndIsPostApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, false, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, false, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.POST.name()); given(request.getPathInfo()).willReturn("/loans"); @@ -126,7 +126,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldNotLetBatchApisThrough_WhenFineractIsInReadOnlyModeAndIsJobsApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, false, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(true, false, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.POST.name()); given(request.getPathInfo()).willReturn("/jobs/1"); @@ -140,7 +140,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldLetReadApisThrough_WhenFineractIsInWriteModeAndIsGetApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.GET.name()); given(request.getPathInfo()).willReturn("/loans"); @@ -153,7 +153,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldLetWriteApisThrough_WhenFineractIsInWriteModeAndIsPostApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.POST.name()); given(request.getPathInfo()).willReturn("/loans"); @@ -166,7 +166,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldLetWriteApisThrough_WhenFineractIsInWriteModeAndIsPutApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.PUT.name()); given(request.getPathInfo()).willReturn("/loans/1"); @@ -179,7 +179,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldLetActuatorApisThrough_WhenFineractIsInWriteModeAndIsHelathApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.GET.name()); given(request.getServletPath()).willReturn("/actuator/health"); @@ -193,7 +193,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldNotLetBatchApisThrough_WhenFineractIsInWriteModeAndIsJobsApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, true, false, false); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.POST.name()); given(request.getPathInfo()).willReturn("/jobs/1"); @@ -207,7 +207,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldLetBatchApisThrough_WhenFineractIsInBatchModeAndIsJobsApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, false, true); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, false, true, true); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.POST.name()); given(request.getPathInfo()).willReturn("/jobs/1"); @@ -221,7 +221,7 @@ class FineractInstanceModeApiFilterTest { void testDoFilterInternal_ShouldLetBatchApisThrough_WhenFineractIsInBatchModeAndIsListingJobsApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, false, true); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, false, true, true); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.GET.name()); given(request.getPathInfo()).willReturn("/jobs"); @@ -234,7 +234,7 @@ class FineractInstanceModeApiFilterTest { @Test void testDoFilterInternal_ShouldLetActuatorApisThrough_WhenFineractIsInBatchModeAndIsHealthApi() throws ServletException, IOException { // given - FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, false, true); + FineractProperties.FineractModeProperties modeProperties = InstanceModeMock.createModeProps(false, false, true, true); given(fineractProperties.getMode()).willReturn(modeProperties); given(request.getMethod()).willReturn(HttpMethod.GET.name()); given(request.getServletPath()).willReturn("/actuator/health"); diff --git a/fineract-provider/src/test/resources/features/infrastructure/infrastructure.core.feature b/fineract-provider/src/test/resources/features/infrastructure/infrastructure.core.feature index a7ebd8279..3e639c4f0 100644 --- a/fineract-provider/src/test/resources/features/infrastructure/infrastructure.core.feature +++ b/fineract-provider/src/test/resources/features/infrastructure/infrastructure.core.feature @@ -36,7 +36,7 @@ Feature: Core Infrastructure @infrastructure Scenario: Verify that schema migration is not executed when the Fineract instance is a batch instance Given Set every Fineract instance type to false - Given Fineract instance is a batch instance + Given Fineract instance is a batch manager instance Given Liquibase is enabled with a default tenant When The database migration process is executed Then The database migration did not do anything, because it is not a write instance diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/InstanceModeIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/InstanceModeIntegrationTest.java index 471e0e32e..3e0e38413 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/InstanceModeIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/InstanceModeIntegrationTest.java @@ -60,7 +60,7 @@ public class InstanceModeIntegrationTest { jobId = schedulerJobHelper.getSchedulerJobIdByName(jobName); } - @ConfigureInstanceMode(readEnabled = true, writeEnabled = false, batchEnabled = false) + @ConfigureInstanceMode(readEnabled = true, writeEnabled = false, batchWorkerEnabled = false, batchManagerEnabled = false) @Test public void testGetHeadOfficeWorks_WhenInstanceModeIsReadOnly() { // given @@ -70,7 +70,7 @@ public class InstanceModeIntegrationTest { assertNotNull(result); } - @ConfigureInstanceMode(readEnabled = false, writeEnabled = true, batchEnabled = false) + @ConfigureInstanceMode(readEnabled = false, writeEnabled = true, batchWorkerEnabled = false, batchManagerEnabled = false) @Test public void testGetHeadOfficeWorks_WhenInstanceModeIsWriteOnly() { // given @@ -80,7 +80,7 @@ public class InstanceModeIntegrationTest { assertNotNull(result); } - @ConfigureInstanceMode(readEnabled = false, writeEnabled = false, batchEnabled = true) + @ConfigureInstanceMode(readEnabled = false, writeEnabled = false, batchWorkerEnabled = true, batchManagerEnabled = true) @Test public void testGetHeadOfficeDoesntWork_WhenInstanceModeIsBatchOnly() { // given @@ -89,7 +89,7 @@ public class InstanceModeIntegrationTest { // then no exception is thrown } - @ConfigureInstanceMode(readEnabled = true, writeEnabled = false, batchEnabled = false) + @ConfigureInstanceMode(readEnabled = true, writeEnabled = false, batchWorkerEnabled = false, batchManagerEnabled = false) @Test public void testCreateClientDoesntWork_WhenReadOnly() { // given @@ -99,7 +99,7 @@ public class InstanceModeIntegrationTest { // then no exception thrown } - @ConfigureInstanceMode(readEnabled = false, writeEnabled = true, batchEnabled = false) + @ConfigureInstanceMode(readEnabled = false, writeEnabled = true, batchWorkerEnabled = false, batchManagerEnabled = false) @Test public void testCreateClientWorks_WhenWriteOnly() { // given @@ -110,7 +110,7 @@ public class InstanceModeIntegrationTest { assertNotNull(result); } - @ConfigureInstanceMode(readEnabled = false, writeEnabled = false, batchEnabled = true) + @ConfigureInstanceMode(readEnabled = false, writeEnabled = false, batchWorkerEnabled = true, batchManagerEnabled = true) @Test public void testCreateClientDoesntWork_WhenBatchOnly() { // given @@ -120,7 +120,7 @@ public class InstanceModeIntegrationTest { // then no exception thrown } - @ConfigureInstanceMode(readEnabled = true, writeEnabled = false, batchEnabled = false) + @ConfigureInstanceMode(readEnabled = true, writeEnabled = false, batchWorkerEnabled = false, batchManagerEnabled = false) @Test public void testRunSchedulerJobDoesntWork_WhenReadOnly() { // given @@ -129,7 +129,7 @@ public class InstanceModeIntegrationTest { // then no exception thrown } - @ConfigureInstanceMode(readEnabled = false, writeEnabled = true, batchEnabled = false) + @ConfigureInstanceMode(readEnabled = false, writeEnabled = true, batchWorkerEnabled = false, batchManagerEnabled = false) @Test public void testRunSchedulerJobDoesntWork_WhenWriteOnly() { // given @@ -138,7 +138,7 @@ public class InstanceModeIntegrationTest { // then no exception thrown } - @ConfigureInstanceMode(readEnabled = false, writeEnabled = false, batchEnabled = true) + @ConfigureInstanceMode(readEnabled = false, writeEnabled = false, batchWorkerEnabled = true, batchManagerEnabled = true) @Test public void testRunSchedulerJobWorks_WhenBatchOnly() { // given diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/ConfigureInstanceMode.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/ConfigureInstanceMode.java index 23bea907f..55aae1ead 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/ConfigureInstanceMode.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/ConfigureInstanceMode.java @@ -32,5 +32,7 @@ public @interface ConfigureInstanceMode { boolean writeEnabled(); - boolean batchEnabled(); + boolean batchWorkerEnabled(); + + boolean batchManagerEnabled(); } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeHelper.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeHelper.java index e628f1780..584d989ae 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeHelper.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeHelper.java @@ -31,9 +31,9 @@ public class InstanceModeHelper { private static final Gson GSON = new JSON().getGson(); public static void changeMode(RequestSpecification requestSpec, ResponseSpecification responseSpec, boolean readEnabled, - boolean writeEnabled, boolean batchEnabled) { + boolean writeEnabled, boolean batchWorkerEnabled, boolean batchManagerEnabled) { ChangeInstanceModeRequest request = new ChangeInstanceModeRequest().readEnabled(readEnabled).writeEnabled(writeEnabled) - .batchEnabled(batchEnabled); + .batchWorkerEnabled(batchWorkerEnabled).batchManagerEnabled(batchManagerEnabled); String requestStr = GSON.toJson(request); Utils.performServerPut(requestSpec, responseSpec, "/fineract-provider/api/v1/instance-mode?" + Utils.TENANT_IDENTIFIER, requestStr); } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeSupportExtension.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeSupportExtension.java index c8f50d80a..bd8928b85 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeSupportExtension.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeSupportExtension.java @@ -42,8 +42,9 @@ public class InstanceModeSupportExtension implements BeforeTestExecutionCallback if (annotation != null) { boolean readEnabled = annotation.readEnabled(); boolean writeEnabled = annotation.writeEnabled(); - boolean batchEnabled = annotation.batchEnabled(); - changeInstanceMode(context, readEnabled, writeEnabled, batchEnabled); + boolean batchWorkerEnabled = annotation.batchWorkerEnabled(); + boolean batchManagerEnabled = annotation.batchWorkerEnabled(); + changeInstanceMode(context, readEnabled, writeEnabled, batchWorkerEnabled, batchManagerEnabled); } }); } @@ -53,12 +54,13 @@ public class InstanceModeSupportExtension implements BeforeTestExecutionCallback context.getTestMethod().ifPresent(m -> { ConfigureInstanceMode annotation = m.getAnnotation(ConfigureInstanceMode.class); if (annotation != null) { - changeInstanceMode(context, true, true, true); + changeInstanceMode(context, true, true, true, true); } }); } - private void changeInstanceMode(ExtensionContext extensionContext, boolean readEnabled, boolean writeEnabled, boolean batchEnabled) { + private void changeInstanceMode(ExtensionContext extensionContext, boolean readEnabled, boolean writeEnabled, + boolean batchWorkerEnabled, boolean batchManagerEnabled) { Store store = extensionContext.getStore(INSTANCE_MODE_NAMESPACE); String authKey = store.getOrComputeIfAbsent(AUTH_KEY, k -> Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey(), String.class); @@ -66,6 +68,6 @@ public class InstanceModeSupportExtension implements BeforeTestExecutionCallback ResponseSpecification responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build(); requestSpec.header("Authorization", "Basic " + authKey); - InstanceModeHelper.changeMode(requestSpec, responseSpec, readEnabled, writeEnabled, batchEnabled); + InstanceModeHelper.changeMode(requestSpec, responseSpec, readEnabled, writeEnabled, batchWorkerEnabled, batchManagerEnabled); } }