[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Re: JBoss TS - MQ recovery integration tests

adrian@jboss.org do-not-reply at jboss.com
Wed Jan 24 09:30:28 EST 2007


No there are no tests for this in the testsuite since at the time I wrote
this JBossTM was integrated into the main build.

The tests in the testsuite deploy a second copy of JBossMQ into JBossAS
that I can reboot and test recovery using the XAResource api directly.
i.e. they are unit tests not integration tests.

The only test I have is in a private ant project that uses the
JMSProviderXAResourceRecovery
with the following change in jbossjta-properties.xml

  |         <property name="com.arjuna.ats.jta.recovery.XAResourceRecoveryJMS=org.jboss.jta.recovery.jms.JMSProviderXAResourceRecovery;DefaultJMSProvider"/>
  | 

It also includes a subclass of the persistence manager
so I can force the server to crash during commit

  | /*
  | * JBoss, Home of Professional Open Source
  | * Copyright 2006, JBoss Inc., and individual contributors as indicated
  | * by the @authors tag. See the copyright.txt in the distribution for a
  | * full listing of individual contributors.
  | *
  | * This is free software; you can redistribute it and/or modify it
  | * under the terms of the GNU Lesser General Public License as
  | * published by the Free Software Foundation; either version 2.1 of
  | * the License, or (at your option) any later version.
  | *
  | * This software is distributed in the hope that it will be useful,
  | * but WITHOUT ANY WARRANTY; without even the implied warranty of
  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  | * Lesser General Public License for more details.
  | *
  | * You should have received a copy of the GNU Lesser General Public
  | * License along with this software; if not, write to the Free
  | * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  | * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  | */
  | package org.jboss.test.jbossmq;
  | 
  | import javax.jms.JMSException;
  | 
  | import org.jboss.mq.pm.Tx;
  | import org.jboss.mq.pm.jdbc2.PersistenceManager;
  | 
  | public class TestPersistenceManager extends PersistenceManager implements TestPersistenceManagerMBean
  | {
  |    private boolean crashInCommit = false;
  |    
  |    public TestPersistenceManager() throws JMSException
  |    {
  |    }
  |    
  |    public boolean getCrashInCommit()
  |    {
  |       return crashInCommit;
  |    }
  |    
  |    public void makeCrashInCommit(boolean crashInCommit)
  |    {
  |       this.crashInCommit = crashInCommit;
  |    }
  |    
  |    public void commitPersistentTx(Tx txId) throws JMSException
  |    {
  |       if (crashInCommit)
  |       {
  |          System.out.println("I'm going to crash in 20 seconds");
  |          try
  |          {
  |             Thread.sleep(20000);
  |          }
  |          catch (Exception ignored) {}
  |          Runtime.getRuntime().halt(0);
  |       }
  |       else
  |          super.commitPersistentTx(txId);
  |    }
  | }
  | 

The sleep is just to workaround the fact that hypersonic doesn't
persist data to its transaction log synchronously
It does it on a timer every 10 seconds. UGLY! :-)

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4005805#4005805

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4005805



More information about the jboss-dev-forums mailing list