Paul Robinson created JBTM-1147:
-----------------------------------
Summary: Refactor ParticipantCompletion recovery tests to remove duplicate
rules
Key: JBTM-1147
URL:
https://issues.jboss.org/browse/JBTM-1147
Project: JBoss Transaction Manager
Issue Type: Enhancement
Security Level: Public (Everyone can see)
Components: XTS
Affects Versions: 5.0.0.M1, 4.16.4
Reporter: Paul Robinson
Assignee: Paul Robinson
Fix For: 4.16.5, 5.0.0.Final
The Byteman rules for the participant completion XTS recovery tests have many rules that
are almost duplicates of each other. For example:
The following rules in BACrashDuringCommit could be refactored into a single rule
{code}
#####################################################################
# Setup counter MultiParticipantParticipantCompletionParticipantCloseTest
#
RULE setup counter MultiParticipantParticipantCompletionParticipantCloseTest
CLASS
org.jboss.jbossts.xts.servicetests.test.ba.MultiParticipantParticipantCompletionParticipantCloseTest
METHOD run()
AT ENTRY
IF TRUE
DO debug("creating counter and rendezvous"),
createCounter("closes", 3),
createRendezvous("closes-complete", 2)
ENDRULE
#####################################################################
# Setup counter MultiParticipantCoordinatorCompletionParticipantCloseTest
#
RULE setup counter MultiParticipantCoordinatorCompletionParticipantCloseTest
CLASS
org.jboss.jbossts.xts.servicetests.test.ba.MultiParticipantParticipantCompletionParticipantCloseAndExitTest
METHOD run()
AT ENTRY
IF TRUE
DO debug("creating counter and rendezvous"),
createCounter("closes", 3),
createRendezvous("closes-complete", 2)
ENDRULE
#####################################################################
# Setup counter MultiServiceParticipantCompletionParticipantCloseTest
#
RULE setup counter MultiServiceParticipantCompletionParticipantCloseTest
CLASS
org.jboss.jbossts.xts.servicetests.test.ba.MultiServiceParticipantCompletionParticipantCloseTest
METHOD run()
AT ENTRY
IF TRUE
DO debug("creating counter and rendezvous"),
createCounter("closes", 3),
createRendezvous("closes-complete", 2)
ENDRULE
#####################################################################
# Setup counter MultiServiceParticipantCompletionParticipantCloseAndExitTest
#
RULE setup counter MultiServiceParticipantCompletionParticipantCloseAndExitTest
CLASS
org.jboss.jbossts.xts.servicetests.test.ba.MultiServiceParticipantCompletionParticipantCloseAndExitTest
METHOD run()
AT ENTRY
IF TRUE
DO debug("creating counter and rendezvous"),
createCounter("closes", 3),
createRendezvous("closes-complete", 2)
ENDRULE
{code}
These can be re-factored in to a rule like this:
{code}
RULE setup counter
INTERFACE org.jboss.jbossts.xts.servicetests.test.XTSServiceTest
METHOD run()
AT ENTRY
IF $0.getClass().getName().contains("ParticipantCompletionParticipant")
DO debug("creating counter and rendezvous"),
createCounter("closes", 3),
createRendezvous("closes-complete", 2)
ENDRULE
{code}
Also, the following similar rules are also present in this file:
{code}
#####################################################################
# Wait on Rendezvous before calling uba.close() on
MultiServiceParticipantCompletionParticipantCloseTest
#
RULE wait for closes MultiParticipantParticipantCompletionParticipantCloseTest
CLASS
org.jboss.jbossts.xts.servicetests.test.ba.MultiParticipantParticipantCompletionParticipantCloseTest
METHOD run()
AT CALL UserBusinessActivity.close()
IF TRUE
DO debug("waiting to call close"),
rendezvous("closes-complete"),
debug("rendezvous complete, calling close")
ENDRULE
#####################################################################
# Wait on Rendezvous before calling uba.close() on
MultiParticipantParticipantCompletionParticipantCloseAndExitTest
#
RULE wait for closes MultiParticipantParticipantCompletionParticipantCloseAndExitTest
CLASS
org.jboss.jbossts.xts.servicetests.test.ba.MultiParticipantParticipantCompletionParticipantCloseAndExitTest
METHOD run()
AT CALL UserBusinessActivity.close()
IF TRUE
DO debug("waiting to call close"),
rendezvous("closes-complete"),
debug("rendezvous complete, calling close")
ENDRULE
#####################################################################
# Wait on Rendezvous before calling uba.close() on
MultiServiceParticipantCompletionParticipantCloseTest
#
RULE wait for closes MultiServiceParticipantCompletionParticipantCloseTest
CLASS
org.jboss.jbossts.xts.servicetests.test.ba.MultiServiceParticipantCompletionParticipantCloseTest
METHOD run()
AT CALL UserBusinessActivity.close()
IF TRUE
DO debug("waiting to call close"),
rendezvous("closes-complete"),
debug("rendezvous complete, calling close")
ENDRULE
#####################################################################
# Wait on Rendezvous before calling uba.close() on
MultiServiceParticipantCompletionParticipantCloseAndExitTest
#
RULE wait for closes MultiServiceParticipantCompletionParticipantCloseAndExitTest
CLASS
org.jboss.jbossts.xts.servicetests.test.ba.MultiServiceParticipantCompletionParticipantCloseAndExitTest
METHOD run()
AT CALL UserBusinessActivity.close()
IF TRUE
DO debug("waiting to call close"),
rendezvous("closes-complete"),
debug("rendezvous complete, calling close")
ENDRULE
{code}
Which could be replaced with something like this:
{code}
RULE wait for closes
INTERFACE org.jboss.jbossts.xts.servicetests.test.XTSServiceTest
METHOD run()
AT CALL UserBusinessActivity.close()
IF $0.getClass().getName().contains("ParticipantCompletionParticipant")
DO debug("waiting to call close"),
rendezvous("closes-complete"),
debug("rendezvous complete, calling close")
ENDRULE
{code}
We could also re-factor these two rules out into a separate Byteman script and add it to
all tests that need it.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira