[jbossts-issues] [JBoss JIRA] (JBTM-1147) Refactor ParticipantCompletion recovery tests to remove duplicate rules

Paul Robinson (JIRA) jira-events at lists.jboss.org
Wed May 2 06:11:18 EDT 2012


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

        


More information about the jbossts-issues mailing list