public void afterPropertiesSet() throws Exception { dataSource = new PooledDataSource(ReflectUtil.getClassLoader(), "org.h2.Driver", "jdbc:h2:mem:DatabaseTablePrefixTest;DB_CLOSE_DELAY=1000;MVCC=TRUE;", "sa", "" ); // create schema in the Connection connection = dataSource.getConnection(); connection.createStatement().execute("drop schema if exists SCHEMA1"); connection.createStatement().execute("create schema SCHEMA1"); connection.close(); ProcessEngineConfigurationImpl config1 = createCustomProcessEngineConfiguration() .setProcessEngineName("DatabaseTablePrefixTest-engine1") .setDataSource(dataSource) .setDbMetricsReporterActivate(false) .setDatabaseSchemaUpdate("NO_CHECK"); // disable auto create/drop schema config1.setDatabaseTablePrefix("SCHEMA1."); ProcessEngine engine1 = config1.buildProcessEngine(); // create the tables in SCHEMA1 connection = dataSource.getConnection(); connection.createStatement().execute("set schema SCHEMA1"); engine1.getManagementService().databaseSchemaUpgrade(connection, "", "SCHEMA1"); connection.close(); engine1.close(); }
public void testTablePresentWithSchemaAndPrefix() throws SQLException { PooledDataSource pooledDataSource = new PooledDataSource(ReflectUtil.getClassLoader(), "org.h2.Driver", "jdbc:h2:mem:DatabaseTablePrefixTest;DB_CLOSE_DELAY=1000", "sa", ""); Connection connection = pooledDataSource.getConnection(); connection.createStatement().execute("drop schema if exists " + SCHEMA_NAME); connection.createStatement().execute("create schema " + SCHEMA_NAME); connection.createStatement().execute("create table " + SCHEMA_NAME + "." + PREFIX_NAME + "SOME_TABLE(id varchar(64));"); connection.close(); ProcessEngineConfigurationImpl config1 = createCustomProcessEngineConfiguration().setProcessEngineName("DatabaseTablePrefixTest-engine1") // disable auto create/drop schema .setDataSource(pooledDataSource).setDatabaseSchemaUpdate("NO_CHECK"); config1.setDatabaseTablePrefix(SCHEMA_NAME + "." + PREFIX_NAME); config1.setDatabaseSchema(SCHEMA_NAME); config1.setDbMetricsReporterActivate(false); ProcessEngine engine = config1.buildProcessEngine(); CommandExecutor commandExecutor = config1.getCommandExecutorTxRequired(); commandExecutor.execute(new Command<Void>(){ public Void execute(CommandContext commandContext) { DbSqlSession sqlSession = commandContext.getSession(DbSqlSession.class); assertTrue(sqlSession.isTablePresent("SOME_TABLE")); return null; } }); engine.close(); }
public void testPerformDatabaseSchemaOperationCreateTwice() throws Exception { // both process engines will be using this datasource. PooledDataSource pooledDataSource = new PooledDataSource(ReflectUtil.getClassLoader(), "org.h2.Driver", "jdbc:h2:mem:DatabaseTablePrefixTest;DB_CLOSE_DELAY=1000", "sa", ""); Connection connection = pooledDataSource.getConnection(); connection.createStatement().execute("drop schema if exists " + SCHEMA_NAME); connection.createStatement().execute("create schema " + SCHEMA_NAME); connection.close(); ProcessEngineConfigurationImpl config1 = createCustomProcessEngineConfiguration().setProcessEngineName("DatabaseTablePrefixTest-engine1") // disable auto create/drop schema .setDataSource(pooledDataSource).setDatabaseSchemaUpdate("NO_CHECK"); config1.setDatabaseTablePrefix(SCHEMA_NAME + "."); config1.setDatabaseSchema(SCHEMA_NAME); config1.setDbMetricsReporterActivate(false); ProcessEngine engine1 = config1.buildProcessEngine(); // create the tables for the first time connection = pooledDataSource.getConnection(); connection.createStatement().execute("set schema " + SCHEMA_NAME); engine1.getManagementService().databaseSchemaUpgrade(connection, "", SCHEMA_NAME); connection.close(); // create the tables for the second time; here we shouldn't crash since the // session should tell us that the tables are already present and // databaseSchemaUpdate is set to noop connection = pooledDataSource.getConnection(); connection.createStatement().execute("set schema " + SCHEMA_NAME); engine1.getManagementService().databaseSchemaUpgrade(connection, "", SCHEMA_NAME); engine1.close(); }
private static ProcessEngineImpl createProcessEngineImpl(String databaseSchemaUpdate, boolean executeSchemaOperations) { ProcessEngineImpl processEngine = (ProcessEngineImpl) new CustomStandaloneInMemProcessEngineConfiguration() .setExecuteSchemaOperations(executeSchemaOperations) .setProcessEngineName("database-history-test-engine") .setDatabaseSchemaUpdate(databaseSchemaUpdate) .setHistory(ProcessEngineConfiguration.HISTORY_FULL) .setJdbcUrl("jdbc:h2:mem:DatabaseHistoryPropertyTest") .buildProcessEngine(); return processEngine; }
configuration.setProcessEngineName(name);
configuration.setProcessEngineName(name);
.setProcessEngineName("DatabaseTablePrefixTest-engine1") .setDataSource(pooledDataSource) .setDbMetricsReporterActivate(false) .setProcessEngineName("DatabaseTablePrefixTest-engine2") .setDataSource(pooledDataSource) .setDbMetricsReporterActivate(false)
@Test public void testForceCloseMybatisConnectionPoolTrue() { // given // that the process engine is configured with forceCloseMybatisConnectionPool = true ProcessEngineConfigurationImpl configurationImpl = new StandaloneInMemProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:camunda-forceclose") .setProcessEngineName("engine-forceclose") .setForceCloseMybatisConnectionPool(true); ProcessEngine processEngine = configurationImpl .buildProcessEngine(); PooledDataSource pooledDataSource = (PooledDataSource) configurationImpl.getDataSource(); PoolState state = pooledDataSource.getPoolState(); // then // if the process engine is closed processEngine.close(); // the idle connections are closed Assert.assertTrue(state.getIdleConnectionCount() == 0); }
@Test public void testForceCloseMybatisConnectionPoolFalse() { // given // that the process engine is configured with forceCloseMybatisConnectionPool = false ProcessEngineConfigurationImpl configurationImpl = new StandaloneInMemProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:camunda-forceclose") .setProcessEngineName("engine-forceclose") .setForceCloseMybatisConnectionPool(false); ProcessEngine processEngine = configurationImpl .buildProcessEngine(); PooledDataSource pooledDataSource = (PooledDataSource) configurationImpl.getDataSource(); PoolState state = pooledDataSource.getPoolState(); int idleConnections = state.getIdleConnectionCount(); // then // if the process engine is closed processEngine.close(); // the idle connections are not closed Assert.assertEquals(state.getIdleConnectionCount(), idleConnections); pooledDataSource.forceCloseAll(); Assert.assertTrue(state.getIdleConnectionCount() == 0); }
@Test public void testFallbackSerializerDoesNotOverrideRegularSerializer() { // given // that the process engine is configured with a serializer for a certain format // and a fallback serializer factory for the same format ProcessEngineConfigurationImpl engineConfiguration = new StandaloneInMemProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:camunda-forceclose") .setProcessEngineName("engine-forceclose"); engineConfiguration.setCustomPreVariableSerializers(Arrays.<TypedValueSerializer>asList(new ExampleConstantSerializer())); engineConfiguration.setFallbackSerializerFactory(new ExampleSerializerFactory()); processEngine = engineConfiguration.buildProcessEngine(); deployOneTaskProcess(processEngine); // when setting a variable that no regular serializer can handle ObjectValue objectValue = Variables.objectValue("foo").serializationDataFormat(ExampleSerializer.FORMAT).create(); ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey("oneTaskProcess", Variables.createVariables().putValueTyped("var", objectValue)); ObjectValue fetchedValue = processEngine.getRuntimeService().getVariableTyped(pi.getId(), "var", true); // then the fallback serializer is used Assert.assertNotNull(fetchedValue); Assert.assertEquals(ExampleSerializer.FORMAT, fetchedValue.getSerializationDataFormat()); Assert.assertEquals(ExampleConstantSerializer.DESERIALIZED_VALUE, fetchedValue.getValue()); }
@Test public void testFallbackSerializer() { // given // that the process engine is configured with a fallback serializer factory ProcessEngineConfigurationImpl engineConfiguration = new StandaloneInMemProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:camunda-forceclose") .setProcessEngineName("engine-forceclose"); engineConfiguration.setFallbackSerializerFactory(new ExampleSerializerFactory()); processEngine = engineConfiguration.buildProcessEngine(); deployOneTaskProcess(processEngine); // when setting a variable that no regular serializer can handle ObjectValue objectValue = Variables.objectValue("foo").serializationDataFormat(ExampleSerializer.FORMAT).create(); ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey("oneTaskProcess", Variables.createVariables().putValueTyped("var", objectValue)); ObjectValue fetchedValue = processEngine.getRuntimeService().getVariableTyped(pi.getId(), "var", true); // then the fallback serializer is used Assert.assertNotNull(fetchedValue); Assert.assertEquals(ExampleSerializer.FORMAT, fetchedValue.getSerializationDataFormat()); Assert.assertEquals("foo", fetchedValue.getValue()); }
processEngineConfiguration.setProcessEngineName("reboot-test-schema"); processEngineConfiguration.setJdbcUrl("jdbc:h2:mem:activiti-reboot-test;DB_CLOSE_DELAY=1000"); ProcessEngine schemaProcessEngine = processEngineConfiguration.buildProcessEngine();
public void afterPropertiesSet() throws Exception { dataSource = new PooledDataSource(ReflectUtil.getClassLoader(), "org.h2.Driver", "jdbc:h2:mem:DatabaseTablePrefixTest;DB_CLOSE_DELAY=1000;MVCC=TRUE;", "sa", "" ); // create schema in the Connection connection = dataSource.getConnection(); connection.createStatement().execute("drop schema if exists SCHEMA1"); connection.createStatement().execute("create schema SCHEMA1"); connection.close(); ProcessEngineConfigurationImpl config1 = createCustomProcessEngineConfiguration() .setProcessEngineName("DatabaseTablePrefixTest-engine1") .setDataSource(dataSource) .setDbMetricsReporterActivate(false) .setDatabaseSchemaUpdate("NO_CHECK"); // disable auto create/drop schema config1.setDatabaseTablePrefix("SCHEMA1."); ProcessEngine engine1 = config1.buildProcessEngine(); // create the tables in SCHEMA1 connection = dataSource.getConnection(); connection.createStatement().execute("set schema SCHEMA1"); engine1.getManagementService().databaseSchemaUpgrade(connection, "", "SCHEMA1"); connection.close(); engine1.close(); }
public void testTablePresentWithSchemaAndPrefix() throws SQLException { PooledDataSource pooledDataSource = new PooledDataSource(ReflectUtil.getClassLoader(), "org.h2.Driver", "jdbc:h2:mem:DatabaseTablePrefixTest;DB_CLOSE_DELAY=1000", "sa", ""); Connection connection = pooledDataSource.getConnection(); connection.createStatement().execute("drop schema if exists " + SCHEMA_NAME); connection.createStatement().execute("create schema " + SCHEMA_NAME); connection.createStatement().execute("create table " + SCHEMA_NAME + "." + PREFIX_NAME + "SOME_TABLE(id varchar(64));"); connection.close(); ProcessEngineConfigurationImpl config1 = createCustomProcessEngineConfiguration().setProcessEngineName("DatabaseTablePrefixTest-engine1") // disable auto create/drop schema .setDataSource(pooledDataSource).setDatabaseSchemaUpdate("NO_CHECK"); config1.setDatabaseTablePrefix(SCHEMA_NAME + "." + PREFIX_NAME); config1.setDatabaseSchema(SCHEMA_NAME); config1.setDbMetricsReporterActivate(false); ProcessEngine engine = config1.buildProcessEngine(); CommandExecutor commandExecutor = config1.getCommandExecutorTxRequired(); commandExecutor.execute(new Command<Void>(){ public Void execute(CommandContext commandContext) { DbSqlSession sqlSession = commandContext.getSession(DbSqlSession.class); assertTrue(sqlSession.isTablePresent("SOME_TABLE")); return null; } }); engine.close(); }
public void testPerformDatabaseSchemaOperationCreateTwice() throws Exception { // both process engines will be using this datasource. PooledDataSource pooledDataSource = new PooledDataSource(ReflectUtil.getClassLoader(), "org.h2.Driver", "jdbc:h2:mem:DatabaseTablePrefixTest;DB_CLOSE_DELAY=1000", "sa", ""); Connection connection = pooledDataSource.getConnection(); connection.createStatement().execute("drop schema if exists " + SCHEMA_NAME); connection.createStatement().execute("create schema " + SCHEMA_NAME); connection.close(); ProcessEngineConfigurationImpl config1 = createCustomProcessEngineConfiguration().setProcessEngineName("DatabaseTablePrefixTest-engine1") // disable auto create/drop schema .setDataSource(pooledDataSource).setDatabaseSchemaUpdate("NO_CHECK"); config1.setDatabaseTablePrefix(SCHEMA_NAME + "."); config1.setDatabaseSchema(SCHEMA_NAME); config1.setDbMetricsReporterActivate(false); ProcessEngine engine1 = config1.buildProcessEngine(); // create the tables for the first time connection = pooledDataSource.getConnection(); connection.createStatement().execute("set schema " + SCHEMA_NAME); engine1.getManagementService().databaseSchemaUpgrade(connection, "", SCHEMA_NAME); connection.close(); // create the tables for the second time; here we shouldn't crash since the // session should tell us that the tables are already present and // databaseSchemaUpdate is set to noop connection = pooledDataSource.getConnection(); connection.createStatement().execute("set schema " + SCHEMA_NAME); engine1.getManagementService().databaseSchemaUpgrade(connection, "", SCHEMA_NAME); engine1.close(); }
private static ProcessEngineImpl createProcessEngineImpl(String databaseSchemaUpdate, boolean executeSchemaOperations) { ProcessEngineImpl processEngine = (ProcessEngineImpl) new CustomStandaloneInMemProcessEngineConfiguration() .setExecuteSchemaOperations(executeSchemaOperations) .setProcessEngineName("database-history-test-engine") .setDatabaseSchemaUpdate(databaseSchemaUpdate) .setHistory(ProcessEngineConfiguration.HISTORY_FULL) .setJdbcUrl("jdbc:h2:mem:DatabaseHistoryPropertyTest") .buildProcessEngine(); return processEngine; }
@Test public void testForceCloseMybatisConnectionPoolTrue() { // given // that the process engine is configured with forceCloseMybatisConnectionPool = true ProcessEngineConfigurationImpl configurationImpl = new StandaloneInMemProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:camunda-forceclose") .setProcessEngineName("engine-forceclose") .setForceCloseMybatisConnectionPool(true); ProcessEngine processEngine = configurationImpl .buildProcessEngine(); PooledDataSource pooledDataSource = (PooledDataSource) configurationImpl.getDataSource(); PoolState state = pooledDataSource.getPoolState(); // then // if the process engine is closed processEngine.close(); // the idle connections are closed Assert.assertTrue(state.getIdleConnectionCount() == 0); }
@Test public void testForceCloseMybatisConnectionPoolFalse() { // given // that the process engine is configured with forceCloseMybatisConnectionPool = false ProcessEngineConfigurationImpl configurationImpl = new StandaloneInMemProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:camunda-forceclose") .setProcessEngineName("engine-forceclose") .setForceCloseMybatisConnectionPool(false); ProcessEngine processEngine = configurationImpl .buildProcessEngine(); PooledDataSource pooledDataSource = (PooledDataSource) configurationImpl.getDataSource(); PoolState state = pooledDataSource.getPoolState(); int idleConnections = state.getIdleConnectionCount(); // then // if the process engine is closed processEngine.close(); // the idle connections are not closed Assert.assertEquals(state.getIdleConnectionCount(), idleConnections); pooledDataSource.forceCloseAll(); Assert.assertTrue(state.getIdleConnectionCount() == 0); }
@Test public void testFallbackSerializerDoesNotOverrideRegularSerializer() { // given // that the process engine is configured with a serializer for a certain format // and a fallback serializer factory for the same format ProcessEngineConfigurationImpl engineConfiguration = new StandaloneInMemProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:camunda-forceclose") .setProcessEngineName("engine-forceclose"); engineConfiguration.setCustomPreVariableSerializers(Arrays.<TypedValueSerializer>asList(new ExampleConstantSerializer())); engineConfiguration.setFallbackSerializerFactory(new ExampleSerializerFactory()); processEngine = engineConfiguration.buildProcessEngine(); deployOneTaskProcess(processEngine); // when setting a variable that no regular serializer can handle ObjectValue objectValue = Variables.objectValue("foo").serializationDataFormat(ExampleSerializer.FORMAT).create(); ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey("oneTaskProcess", Variables.createVariables().putValueTyped("var", objectValue)); ObjectValue fetchedValue = processEngine.getRuntimeService().getVariableTyped(pi.getId(), "var", true); // then the fallback serializer is used Assert.assertNotNull(fetchedValue); Assert.assertEquals(ExampleSerializer.FORMAT, fetchedValue.getSerializationDataFormat()); Assert.assertEquals(ExampleConstantSerializer.DESERIALIZED_VALUE, fetchedValue.getValue()); }
@Test public void testFallbackSerializer() { // given // that the process engine is configured with a fallback serializer factory ProcessEngineConfigurationImpl engineConfiguration = new StandaloneInMemProcessEngineConfiguration() .setJdbcUrl("jdbc:h2:mem:camunda-forceclose") .setProcessEngineName("engine-forceclose"); engineConfiguration.setFallbackSerializerFactory(new ExampleSerializerFactory()); processEngine = engineConfiguration.buildProcessEngine(); deployOneTaskProcess(processEngine); // when setting a variable that no regular serializer can handle ObjectValue objectValue = Variables.objectValue("foo").serializationDataFormat(ExampleSerializer.FORMAT).create(); ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey("oneTaskProcess", Variables.createVariables().putValueTyped("var", objectValue)); ObjectValue fetchedValue = processEngine.getRuntimeService().getVariableTyped(pi.getId(), "var", true); // then the fallback serializer is used Assert.assertNotNull(fetchedValue); Assert.assertEquals(ExampleSerializer.FORMAT, fetchedValue.getSerializationDataFormat()); Assert.assertEquals("foo", fetchedValue.getValue()); }