This content has been marked as final.
Show 1 reply
-
1. Re: JBoss TS - MQ recovery integration tests
adrian.brock Jan 24, 2007 9:29 AM (in response to timfox)No there are no tests for this in the testsuite since at the time I wrote
this JBossTM wasn't 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! :-)