/// <summary> /// Ensures that the deployment cache is empty after a test. If not the cache /// will be cleared. /// </summary> /// <param name="processEngine"> the <seealso cref="ProcessEngine"/> to test </param> /// <param name="fail"> if true the method will throw an <seealso cref="AssertionError"/> if the deployment cache is not clean </param> /// <returns> the deployment cache summary if fail is set to false or null if deployment cache was clean </returns> /// <exception cref="AssertionError"> if the deployment cache was not clean and fail is set to true </exception> public static string assertAndEnsureCleanDeploymentCache(ProcessEngine processEngine, bool fail) { StringBuilder outputMessage = new StringBuilder(); ProcessEngineConfigurationImpl processEngineConfiguration = ((ProcessEngineImpl)processEngine).ProcessEngineConfiguration; CachePurgeReport cachePurgeReport = processEngineConfiguration.DeploymentCache.purgeCache(); outputMessage.Append(cachePurgeReport.PurgeReportAsString); if (outputMessage.Length > 0) { outputMessage.Insert(0, "Deployment cache not clean:\n"); LOG.error(outputMessage.ToString()); if (fail) { Assert.fail(outputMessage.ToString()); } return(outputMessage.ToString()); } else { LOG.debug("Deployment cache was clean"); return(null); } }
public virtual PurgeReport Execute(CommandContext commandContext) { var purgeReport = new PurgeReport(); // purge the database var databasePurgeReport = PurgeDatabase(commandContext); purgeReport.DatabasePurgeReport = databasePurgeReport; // purge the deployment cache DeploymentCache deploymentCache = commandContext.ProcessEngineConfiguration.DeploymentCache; CachePurgeReport cachePurgeReport = deploymentCache.PurgeCache(); purgeReport.CachePurgeReport = cachePurgeReport; return(purgeReport); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @SuppressWarnings("resource") @Override public void postProcessApplicationUndeploy(org.camunda.bpm.application.ProcessApplicationInterface processApplication) public virtual void postProcessApplicationUndeploy(ProcessApplicationInterface processApplication) { // some tests deploy multiple PAs. => only clean DB after last PA is undeployed // if the deployment fails for example during parsing the deployment counter was not incremented // so we have to check if the counter is already zero otherwise we go into the negative values // best example is TestWarDeploymentWithBrokenBpmnXml in integration-test-engine test suite if (counter.get() == 0 || counter.decrementAndGet() == 0) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final org.camunda.bpm.engine.ProcessEngine defaultProcessEngine = org.camunda.bpm.BpmPlatform.getDefaultProcessEngine(); ProcessEngine defaultProcessEngine = BpmPlatform.DefaultProcessEngine; try { logger.log(Level.INFO, "=== Ensure Clean Database ==="); ManagementServiceImpl managementService = (ManagementServiceImpl)defaultProcessEngine.ManagementService; PurgeReport report = managementService.purge(); if (report.Empty) { logger.log(Level.INFO, "Clean DB and cache."); } else { StringBuilder builder = new StringBuilder(); DatabasePurgeReport databasePurgeReport = report.DatabasePurgeReport; if (!databasePurgeReport.Empty) { builder.Append(DATABASE_NOT_CLEAN).Append(databasePurgeReport.PurgeReportAsString); } CachePurgeReport cachePurgeReport = report.CachePurgeReport; if (!cachePurgeReport.Empty) { builder.Append(CACHE_IS_NOT_CLEAN).Append(cachePurgeReport.PurgeReportAsString); } logger.log(Level.INFO, builder.ToString()); } } catch (Exception e) { logger.log(Level.SEVERE, "Could not clean DB:", e); } } }
/// <summary> /// Ensures that the deployment cache and database is clean after a test. If not the cache /// and database will be cleared. /// </summary> /// <param name="processEngine"> the <seealso cref="ProcessEngine"/> to test </param> /// <param name="fail"> if true the method will throw an <seealso cref="AssertionError"/> if the deployment cache or database is not clean </param> /// <exception cref="AssertionError"> if the deployment cache or database was not clean </exception> public static string assertAndEnsureCleanDbAndCache(ProcessEngine processEngine, bool fail) { ProcessEngineConfigurationImpl processEngineConfiguration = ((ProcessEngineImpl)processEngine).ProcessEngineConfiguration; // clear user operation log in case some operations are // executed with an authenticated user clearUserOperationLog(processEngineConfiguration); LOG.debug("verifying that db is clean after test"); PurgeReport purgeReport = ((ManagementServiceImpl)processEngine.ManagementService).purge(); string paRegistrationMessage = assertAndEnsureNoProcessApplicationsRegistered(processEngine); StringBuilder message = new StringBuilder(); CachePurgeReport cachePurgeReport = purgeReport.CachePurgeReport; if (!cachePurgeReport.Empty) { message.Append("Deployment cache is not clean:\n").Append(cachePurgeReport.PurgeReportAsString); } else { LOG.debug("Deployment cache was clean."); } DatabasePurgeReport databasePurgeReport = purgeReport.DatabasePurgeReport; if (!databasePurgeReport.Empty) { message.Append("Database is not clean:\n").Append(databasePurgeReport.PurgeReportAsString); } else { LOG.debug("Database was clean."); } if (!string.ReferenceEquals(paRegistrationMessage, null)) { message.Append(paRegistrationMessage); } if (fail && message.Length > 0) { Assert.fail(message.ToString()); } return(message.ToString()); }
// CMMN ////////////////////////////////////////////////////////////////////////////////////////////////////////////// //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void testPurgeCmmnProcess() public virtual void testPurgeCmmnProcess() { // given cmmn process which is not managed by process engine rule engineRule.RepositoryService.createDeployment().addClasspathResource("org/camunda/bpm/engine/test/standalone/db/entitymanager/PurgeDatabaseTest.testPurgeCmmnProcess.cmmn").deploy(); VariableMap variables = Variables.createVariables(); variables.put("key", "value"); engineRule.CaseService.createCaseInstanceByKey(PROCESS_DEF_KEY, variables); // when purge is executed ManagementServiceImpl managementService = (ManagementServiceImpl)engineRule.ManagementService; PurgeReport purge = managementService.purge(); // then database and cache is cleaned assertAndEnsureCleanDbAndCache(engineRule.ProcessEngine, true); // and report contains deleted entities assertFalse(purge.Empty); CachePurgeReport cachePurgeReport = purge.CachePurgeReport; assertEquals(1, cachePurgeReport.getReportValue(CachePurgeReport.CASE_DEF_CACHE).Count); DatabasePurgeReport databasePurgeReport = purge.DatabasePurgeReport; assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_DEPLOYMENT")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_TASK")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_GE_BYTEARRAY")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_CASE_DEF")); assertEquals(3, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_CASE_EXECUTION")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_VARIABLE")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_CASE_SENTRY_PART")); if (processEngineConfiguration.HistoryLevel.Equals(org.camunda.bpm.engine.impl.history.HistoryLevel_Fields.HISTORY_LEVEL_FULL)) { assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_DETAIL")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_TASKINST")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_VARINST")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_CASEINST")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_CASEACTINST")); } }
// DMN /////////////////////////////////////////////////////////////////////////////////////////////////////////////// //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void testPurgeDmnProcess() public virtual void testPurgeDmnProcess() { // given dmn process which is not managed by process engine rule engineRule.RepositoryService.createDeployment().addClasspathResource("org/camunda/bpm/engine/test/standalone/db/entitymanager/PurgeDatabaseTest.testPurgeDmnProcess.dmn").deploy(); VariableMap variables = Variables.createVariables().putValue("key", "value").putValue("season", "Test"); engineRule.DecisionService.evaluateDecisionByKey("decisionId").variables(variables).evaluate(); // when purge is executed ManagementServiceImpl managementService = (ManagementServiceImpl)engineRule.ManagementService; PurgeReport purge = managementService.purge(); // then database and cache is cleaned assertAndEnsureCleanDbAndCache(engineRule.ProcessEngine, true); // and report contains deleted entities assertFalse(purge.Empty); CachePurgeReport cachePurgeReport = purge.CachePurgeReport; assertEquals(2, cachePurgeReport.getReportValue(CachePurgeReport.DMN_DEF_CACHE).Count); assertEquals(1, cachePurgeReport.getReportValue(CachePurgeReport.DMN_REQ_DEF_CACHE).Count); DatabasePurgeReport databasePurgeReport = purge.DatabasePurgeReport; assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_DEPLOYMENT")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_GE_BYTEARRAY")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_DECISION_REQ_DEF")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_DECISION_DEF")); if (processEngineConfiguration.HistoryLevel.Equals(org.camunda.bpm.engine.impl.history.HistoryLevel_Fields.HISTORY_LEVEL_FULL)) { assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_DECINST")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_DEC_IN")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_DEC_OUT")); } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void testPurgeComplexProcess() public virtual void testPurgeComplexProcess() { // given complex process with authentication // process is executed two times // metrics are reported BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(PROCESS_DEF_KEY).startEvent().camundaAsyncBefore().parallelGateway("parallel").serviceTask("external").camundaType("external").camundaTopic("external").boundaryEvent().message("message").moveToNode("parallel").serviceTask().camundaAsyncBefore().camundaExpression("${1/0}").moveToLastGateway().userTask().done(); createAuthenticationData(); engineRule.RepositoryService.createDeployment().addModelInstance(PROCESS_MODEL_NAME, modelInstance).deploy(); executeComplexBpmnProcess(true); executeComplexBpmnProcess(false); processEngineConfiguration.DbMetricsReporter.reportNow(); // when purge is executed ManagementServiceImpl managementService = (ManagementServiceImpl)engineRule.ManagementService; PurgeReport purge = managementService.purge(); // then database and cache are empty assertAndEnsureCleanDbAndCache(engineRule.ProcessEngine, true); // and report contains deleted data assertFalse(purge.Empty); CachePurgeReport cachePurgeReport = purge.CachePurgeReport; assertEquals(1, cachePurgeReport.getReportValue(CachePurgeReport.PROCESS_DEF_CACHE).Count); DatabasePurgeReport databasePurgeReport = purge.DatabasePurgeReport; assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_ID_TENANT_MEMBER")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_EVENT_SUBSCR")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_DEPLOYMENT")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_EXT_TASK")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_ID_MEMBERSHIP")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_TASK")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_JOB")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_GE_BYTEARRAY")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_JOBDEF")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_ID_USER")); assertEquals(5, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_EXECUTION")); assertEquals(10, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_METER_LOG")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_VARIABLE")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_PROCDEF")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_ID_TENANT")); assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_ID_GROUP")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_AUTHORIZATION")); if (processEngineConfiguration.HistoryLevel.Equals(org.camunda.bpm.engine.impl.history.HistoryLevel_Fields.HISTORY_LEVEL_FULL)) { assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_INCIDENT")); assertEquals(9, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_ACTINST")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_PROCINST")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_DETAIL")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_TASKINST")); assertEquals(7, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_JOB_LOG")); assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_VARINST")); assertEquals(8, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_OP_LOG")); } }