package com.constellio.model.services.batch.manager; import static com.constellio.model.entities.schemas.Schemas.PATH; import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.fromAllSchemasIn; import static org.assertj.core.api.Assertions.assertThat; import java.io.File; import com.constellio.app.services.factories.AppLayerFactory; import org.junit.Test; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.data.dao.managers.config.ConfigManager; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.search.SearchServices; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.annotations.SlowTest; @SlowTest public class BatchProcessManagerStartupAcceptanceTest extends ConstellioTest { @Test public void givenStartedBatchProcessWhenStartingACollectionThenPutTo() throws Exception { givenWaitForBatchProcessAfterTestIsDisabled(); given_some_processed_batch_process_and_a_current_jammed_process(); ModelLayerFactory modelLayerFactory = getModelLayerFactory(); AppLayerFactory appLayerFactory = getAppLayerFactory(); BatchProcessesManager batchProcessesManager = modelLayerFactory.getBatchProcessesManager(); waitForBatchProcessAcceptingErrors(); assertThat(batchProcessesManager.getStandbyBatchProcesses()).isEmpty(); assertThat(batchProcessesManager.getCurrentBatchProcess()).isNull(); RMSchemasRecordsServices rm = new RMSchemasRecordsServices(zeCollection, appLayerFactory); SearchServices searchServices = modelLayerFactory.newSearchServices(); String xRubric = rm.getCategoryWithCode("X").getId(); String zRubric = rm.getCategoryWithCode("Z").getId(); assertThat(searchServices.hasResults(fromAllSchemasIn(zeCollection).where(PATH).isStartingWithText("/plan/" + xRubric))) .isFalse(); assertThat(searchServices.hasResults(fromAllSchemasIn(zeCollection).where(PATH).isStartingWithText("/plan/" + zRubric))) .isTrue(); } @Test public void givenStartedBatchProcessWhenStartingACollectionThenDeletePreviousCompletedOnesBeforeStarting() throws Exception { givenWaitForBatchProcessAfterTestIsDisabled(); given_some_processed_batch_process_and_a_current_jammed_process(); ModelLayerFactory modelLayerFactory = getModelLayerFactory(); ConfigManager configManager = getDataLayerFactory().getConfigManager(); BatchProcessesManager batchProcessesManager = modelLayerFactory.getBatchProcessesManager(); waitForBatchProcessAcceptingErrors(); batchProcessesManager.deleteFinishedWithoutErrors(); assertThat(batchProcessesManager.getFinishedBatchProcesses()).extracting("id").containsOnly( "previousWithErrors1", "previousWithErrors2" ); assertThat(configManager.exist("/batchProcesses/2df47bc2-5b16-4869-bb94-228c494c71af.xml")).isFalse(); assertThat(configManager.exist("/batchProcesses/897d1806-3dc2-4480-9ef7-c3dbe77a5caf.xml")).isFalse(); assertThat(configManager.exist("/batchProcesses/ed53a3b4-e3c1-4d53-a353-3d98d100042f.xml")).isFalse(); assertThat(configManager.exist("/batchProcesses/previousWithErrors1.xml")).isTrue(); assertThat(configManager.exist("/batchProcesses/previousWithErrors2.xml")).isTrue(); assertThat(configManager.exist("/batchProcesses/previousWithoutErrors1.xml")).isFalse(); assertThat(configManager.exist("/batchProcesses/previousWithoutErrors2.xml")).isFalse(); assertThat(batchProcessesManager.getCurrentBatchProcess()).isNull(); } private void given_some_processed_batch_process_and_a_current_jammed_process() { givenTransactionLogIsEnabled(); File state = getTestResourceFile("given_some_processed_batch_process_and_a_current_jammed_process.zip"); getCurrentTestSession().getFactoriesTestFeatures().givenSystemInState(state); } }