@Test public void testEnversCompatibility() throws Exception { // revision 1 userTransaction.begin(); entityManager.joinTransaction(); AuditedEntity entity = new AuditedEntity( 1, "Marco Polo" ); entityManager.persist( entity ); userTransaction.commit(); // revision 2 userTransaction.begin(); entityManager.joinTransaction(); entity.setName( "George Washington" ); entityManager.merge( entity ); userTransaction.commit(); entityManager.clear(); // verify audit history revision counts userTransaction.begin(); final AuditReader auditReader = AuditReaderFactory.get( entityManager ); assertEquals( Arrays.asList( 1, 2 ), auditReader.getRevisions( AuditedEntity.class, 1 ) ); userTransaction.commit(); } }
@After public void after() throws Exception { EntityManagerFactory emf = (EntityManagerFactory) context.get(EnvironmentName.ENTITY_MANAGER_FACTORY); UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); try { EntityManager em = emf.createEntityManager(); em.createQuery("delete from CorrelationPropertyInfo").executeUpdate(); em.createQuery("delete from CorrelationKeyInfo").executeUpdate(); ut.commit(); } catch (Exception ex) { ut.rollback(); Assert.fail("Exception thrown while trying to cleanup correlation data."); } cleanUp(context); }
@Test public void jtaTransactionManagerWithNestedBegin() throws Exception { UserTransaction ut = mock(UserTransaction.class); given(ut.getStatus()).willReturn(Status.STATUS_ACTIVE); JtaTransactionManager ptm = newJtaTransactionManager(ut); TransactionTemplate tt = new TransactionTemplate(ptm); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED); tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { // something transactional } }); verify(ut).begin(); verify(ut).commit(); }
public void reset() throws SystemException { if ( transactionManager != null ) { if ( transactionManager.getStatus() != Status.STATUS_NO_TRANSACTION ) { transactionManager.rollback(); } } if ( userTransaction != null ) { if ( userTransaction.getStatus() != Status.STATUS_NO_TRANSACTION ) { userTransaction.rollback(); } } }
UserTransaction utx = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" ); int s = utx.getStatus(); if( utx.getStatus() == Status.STATUS_NO_TRANSACTION ) { utx.begin(); em.joinTransaction(); em.persist(myEntity); em.persist(myEntityMethods); em.persist(myEntityOnlyFields); if( utx.getStatus() == Status.STATUS_ACTIVE ) { utx.commit(); em.close(); parameters.put("f", myEntityOnlyFields); parameters.put("z", myVariableSerializable); long processInstanceId = ksession.startProcess( "com.sample.ruleflow", parameters ).getId(); ProcessInstance processInstance = ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); ksession.getWorkItemManager().completeWorkItem( workItem.getId(), null );
@Before public void setup() throws SystemException, NotSupportedException { transactionService = (TransactionService)ctx.getBean("transactionService"); keyStoreChecker = (KeyStoreChecker)ctx.getBean("keyStoreChecker"); encryptionKeysRegistry = (EncryptionKeysRegistry)ctx.getBean("encryptionKeysRegistry"); keyResourceLoader = (KeyResourceLoader)ctx.getBean("springKeyResourceLoader"); backupEncryptor = (DefaultEncryptor)ctx.getBean("backupEncryptor"); toDelete = new ArrayList<String>(10); AuthenticationUtil.setRunAsUserSystem(); UserTransaction txn = transactionService.getUserTransaction(); txn.begin(); }
@Test public void testWithDatabaseAndStartProcess() throws Exception { // Create variable Map<String, Object> params = new HashMap<String, Object>(); NonSerializableClass processVar = new NonSerializableClass(); processVar.setString("1234567890"); params.put(VAR_NAME, processVar); // Persist variable UserTransaction ut = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction"); ut.begin(); EntityManagerFactory emf = (EntityManagerFactory) context.get(ENTITY_MANAGER_FACTORY); EntityManager em = emf.createEntityManager(); em.setFlushMode(FlushModeType.COMMIT); em.joinTransaction(); em.persist(processVar); em.close(); ut.commit(); // Generate, insert, and start process ProcessInstance processInstance = ksession.startProcess(PROCESS_ID, params); // Test resuls Assert.assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); processVar = (NonSerializableClass) ((WorkflowProcessInstance) processInstance).getVariable(VAR_NAME); Assert.assertNotNull(processVar); }
@Test public void testAsyncAuditProducerTransactionalWithRollback() throws Exception { UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); Environment env = createEnvironment(context); // load the process KieBase kbase = createKnowledgeBase(); // create a new session KieSession session = createSession(kbase, env); Map<String, Object> jmsProps = new HashMap<String, Object>(); jmsProps.put("jbpm.audit.jms.transacted", true); jmsProps.put("jbpm.audit.jms.connection.factory", factory); jmsProps.put("jbpm.audit.jms.queue", queue); AbstractAuditLogger logger = AuditLoggerFactory.newInstance(Type.JMS, session, jmsProps); Assertions.assertThat(logger).isNotNull(); Assertions.assertThat((logger instanceof AsyncAuditLogProducer)).isTrue(); // start process instance long processInstanceId = session.startProcess("com.sample.ruleflow").getId(); ut.rollback(); MessageReceiver receiver = new MessageReceiver(); List<Message> messages = receiver.receive(queue); Assertions.assertThat(messages).isNotNull(); Assertions.assertThat(messages.size()).isEqualTo(0); }
@Test public void create2ProcessInstancesInsideTransaction() throws Exception { long[] processId = new long[2]; UserTransaction ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" ); ut.begin(); StatefulKnowledgeSession ksession = reloadKnowledgeSession(); processId[0] = ksession.createProcessInstance("org.jbpm.processinstance.helloworld", null).getId(); processId[1] = ksession.createProcessInstance("org.jbpm.processinstance.helloworld", null).getId(); assertEquals(2, ksession.getProcessInstances().size()); // process instance manager cache flushed on tx ut.commit(); assertEquals(0, ksession.getProcessInstances().size()); ksession = reloadKnowledgeSession(ksession); assertEquals(0, ksession.getProcessInstances().size()); ksession.dispose(); assertProcessInstancesExist(processId); }
@Test public void noProcessInstancesLeftWithPreTxKSessionAndRollback() throws Exception { long[] notProcess = new long[4]; StatefulKnowledgeSession ksession = reloadKnowledgeSession(); UserTransaction ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" ); ut.begin(); notProcess[0] = ksession.createProcessInstance("org.jbpm.processinstance.helloworld", null).getId(); notProcess[1] = ksession.createProcessInstance("org.jbpm.processinstance.helloworld", null).getId(); ut.rollback(); // Validate that proc inst mgr cache is also flushed on rollback assertEquals(0, ksession.getProcessInstances().size()); ksession = reloadKnowledgeSession(ksession); assertEquals(0, ksession.getProcessInstances().size()); ksession.dispose(); assertProcessInstancesNotExist(notProcess); }
@Test public void testAsyncAuditProducerTransactional() throws Exception { UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); Environment env = createEnvironment(context); // load the process KieBase kbase = createKnowledgeBase(); // create a new session KieSession session = createSession(kbase, env); Map<String, Object> jmsProps = new HashMap<String, Object>(); jmsProps.put("jbpm.audit.jms.transacted", true); jmsProps.put("jbpm.audit.jms.connection.factory", factory); jmsProps.put("jbpm.audit.jms.queue", queue); AbstractAuditLogger logger = AuditLoggerFactory.newInstance(Type.JMS, session, jmsProps); Assertions.assertThat(logger).isNotNull(); Assertions.assertThat((logger instanceof AsyncAuditLogProducer)).isTrue(); // start process instance long processInstanceId = session.startProcess("com.sample.ruleflow").getId(); ut.commit(); MessageReceiver receiver = new MessageReceiver(); List<Message> messages = receiver.receive(queue); Assertions.assertThat(messages).isNotNull(); Assertions.assertThat(messages.size()).isEqualTo(11); }
protected void setUp() throws Exception { ctx = ApplicationContextHelper.getApplicationContext(); DictionaryDAO dictionaryDao = (DictionaryDAO) ctx.getBean("dictionaryDAO"); // load the system model ClassLoader cl = BaseNodeServiceTest.class.getClassLoader(); InputStream modelStream = cl.getResourceAsStream("alfresco/model/systemModel.xml"); assertNotNull(modelStream); M2Model model = M2Model.createModel(modelStream); dictionaryDao.putModel(model); // load the test model modelStream = cl.getResourceAsStream("org/alfresco/repo/node/BaseNodeServiceTest_model.xml"); assertNotNull(modelStream); model = M2Model.createModel(modelStream); dictionaryDao.putModel(model); nodeService = (NodeService) ctx.getBean("dbNodeService"); transactionService = (TransactionService) ctx.getBean("transactionComponent"); this.authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent"); this.authenticationComponent.setSystemUserAsCurrentUser(); // create a first store directly UserTransaction tx = transactionService.getUserTransaction(); tx.begin(); StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "Test_" + System.currentTimeMillis()); rootNodeRef = nodeService.getRootNode(storeRef); tx.commit(); }
@After public void tearDown() throws Exception { if (!virtualizationConfigTestBootstrap.areVirtualFoldersEnabled()) { // "use the force" and disable virtual folders SpringExtensionBundle vfBundle = ctx.getBean("smartFoldersBundle", SpringExtensionBundle.class); vfBundle.stop(); } if (configuredTemplatesClassPath != null) { constraints.setTemplatesParentClasspath(configuredTemplatesClassPath); configuredTemplatesClassPath = null; } authenticationComponent.clearCurrentSecurityContext(); try { txn.rollback(); } catch (Exception e) { logger.error("Test tear down failed. Has the test setup transaction been tempered with ? Hint : " + txnTamperHint, e); } // super.tearDown(); }
@Before public void before() throws Exception { context = setupWithPoolingDataSource(JBPM_PERSISTENCE_UNIT_NAME); CorrelationKeyFactory factory = KieInternalServices.Factory.get().newCorrelationKeyFactory(); // populate table with test data EntityManagerFactory emf = (EntityManagerFactory) context.get(EnvironmentName.ENTITY_MANAGER_FACTORY); UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); try { EntityManager em = emf.createEntityManager(); em.persist(factory.newCorrelationKey("test123")); List<String> props = new ArrayList<String>(); props.add("test123"); props.add("123test"); em.persist(factory.newCorrelationKey(props)); ut.commit(); } catch (Exception ex) { ut.rollback(); Assert.fail("Exception thrown while trying to prepare correlation data."); } }
@Override public void run() { UserTransaction ut = null; try { ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); RuntimeEngine engine = manager.getRuntimeEngine(ProcessInstanceIdContext.get(processInstanceId)); engine.getKieSession(); TaskService taskService = engine.getTaskService(); taskService.start(secondTaskId, USER_MARY); taskService.complete(secondTaskId, USER_MARY, null); System.out.println("Task for mary completed"); manager.disposeRuntimeEngine(engine); ut.commit(); } catch (Exception e) { e.printStackTrace(); try { ut.rollback(); } catch (Exception e1) { e1.printStackTrace(); } } } });
KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); long sessionId = ksession.getIdentifier(); assertTrue(sessionId == 1); ksession = runtime.getKieSession(); assertEquals(sessionId, ksession.getIdentifier()); UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); ProcessInstance processInstance = ksession.startProcess("customtask"); logger.debug("Started process, committing..."); ut.commit(); processInstance = ksession.getProcessInstance(processInstance.getId()); assertNull(processInstance);
@Test public void jtaTransactionManagerWithSystemExceptionOnRollback() throws Exception { UserTransaction ut = mock(UserTransaction.class); given(ut.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE); willThrow(new SystemException("system exception")).given(ut).rollback(); try { JtaTransactionManager ptm = newJtaTransactionManager(ut); TransactionTemplate tt = new TransactionTemplate(ptm); tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCompletion(int status) { assertTrue("Correct completion status", status == TransactionSynchronization.STATUS_UNKNOWN); } }); status.setRollbackOnly(); } }); fail("Should have thrown TransactionSystemException"); } catch (TransactionSystemException ex) { // expected } verify(ut).begin(); }