[jbpm-issues] [JBoss JIRA] Commented: (JBPM-1280) build out job executor basic test coverage
Tom Baeyens (JIRA)
jira-events at lists.jboss.org
Mon Aug 18 05:39:58 EDT 2008
[ https://jira.jboss.org/jira/browse/JBPM-1280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12425408#action_12425408 ]
Tom Baeyens commented on JBPM-1280:
-----------------------------------
It's crucial that the job executor is tested on edge cases. Not only the normal rollback and commits. But also 3 tests with a synchronizationsin the same transaction:
* one that just does a transactional update to the db and succeeds
* one that throws an exception in the beforeCompletion (should cause a rollback of the transaction)
* one that throws an exception in the afterCompletion (should cause the rest of the transaction to commit)
Probably there are more of those specific situation that we need to cover.
I have started with the checking the basics in org.jbpm.pvm.api.db.tx.TransactionDbTest. That test I just added to the CheckInTests. That test can give some inspiration on how to find the edge cases for the job executor.
I have put the TransactionDbTest in the API part as I think it should run in any environment.
> build out job executor basic test coverage
> ------------------------------------------
>
> Key: JBPM-1280
> URL: https://jira.jboss.org/jira/browse/JBPM-1280
> Project: JBoss jBPM
> Issue Type: Sub-task
> Security Level: Public(Everyone can see)
> Components: PVM
> Reporter: Tom Baeyens
> Assignee: Guillaume Porcher
> Priority: Critical
> Fix For: PVM 1.0 beta1
>
>
> First, we need to establish what we're going to QA and how. I see 3 distinct types of tests for the job executor
> 1) Using JobSession to create jobs and then use the JobExecutor API's to control the execution of those jobs. This way, all these tests can and should be done in a single thread.
> * a commit for processing an asynchronous message
> * a commit for processing a timer
> * a commit for the combination of a an asynchronous message and a timer
> * a commit with a custom resource in the standard transaction
> * test a rollback caused by a user code exception in an asynchronous continuation
> * test a rollback caused by a user code exception in an timer
> * test a rollback caused by a user code exception with a custom resource in the standard transaction
> * test a rollback caused by an optimistic locking exception in an asynchronous continuation
> * test a rollback caused by an optimistic locking exception in an timer
> * test a rollback caused by an optimistic locking with a custom resource in the standard transaction
> 2) If we only use the public, stable API's, we'll be a lot more limited in what we're able to test. We can e.g. run this test suite against the jBPM 3 codebase.
> * create and execute a process with a couple of asynchronous continuation in it.
> * create and execute a process with asynchronous continuations in a concurrent section.
> * create and execute a process with a couple of timers in it.
> * create and execute a process with a couple of timers in a concurrent section
> * a combination of a timer and an asynchronous continuation
> 3) Load and stress tests. Also these should only make use of public API's and ways to deploy processes. So that this test suite is configurable/runnable on different environments (and also against the jBPM 3 codebase)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jbpm-issues
mailing list