User: patriot1burke
Date: 02/01/12 12:29:21
Added: src/main/org/jboss/test/deadlock/test
BeanStressTestCase.java
Log:
Added deadlock detection test to test new deadlock detection algorithm in
QueuedEJBPessimisticLock
Revision Changes Path
1.1
jbosstest/src/main/org/jboss/test/deadlock/test/BeanStressTestCase.java
Index: BeanStressTestCase.java
===================================================================
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.test.deadlock.test;
import java.rmi.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.ejb.DuplicateKeyException;
import javax.ejb.Handle;
import javax.ejb.EJBMetaData;
import javax.ejb.EJBHome;
import javax.ejb.HomeHandle;
import javax.ejb.ObjectNotFoundException;
import java.util.Date;
import java.util.Properties;
import java.util.Collection;
import java.util.Iterator;
import java.util.Enumeration;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.jboss.test.deadlock.interfaces.StatelessSessionHome;
import org.jboss.test.deadlock.interfaces.StatelessSession;
import org.jboss.test.deadlock.interfaces.EnterpriseEntityHome;
import org.jboss.test.deadlock.interfaces.EnterpriseEntity;
import org.jboss.test.JBossTestCase;
/**
* Sample client for the jboss container.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Bill Burke</a>
* @version $Id: BeanStressTestCase.java,v 1.1 2002/01/12 20:29:21 patriot1burke Exp $
*/
public class BeanStressTestCase
extends JBossTestCase
{
static boolean deployed = false;
static int test = 0;
static Date startDate = new Date();
protected final String namingFactory =
System.getProperty(Context.INITIAL_CONTEXT_FACTORY);
protected final String providerURL =
System.getProperty(Context.PROVIDER_URL);
public BeanStressTestCase(String name) {
super(name);
}
protected Object waitFor = new Object();
protected boolean abDone = false;
protected boolean baDone = false;
protected class RunTest implements Runnable
{
private String test;
public RunTest(String test)
{
this.test = test;
}
public void run()
{
if (test.equals("AB")) runAB();
else runBA();
}
private StatelessSession getSession() throws Exception
{
StatelessSessionHome home = (StatelessSessionHome)new
InitialContext().lookup("nextgen.StatelessSession");
return home.create();
}
private void runAB()
{
System.out.println("running AB");
try
{
while (true)
{
getSession().callAB();
if (baDone) break;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
synchronized (waitFor)
{
abDone = true;
if (baDone = true) waitFor.notifyAll();
}
}
private void runBA()
{
System.out.println("running BA");
try
{
while (true)
{
getSession().callBA();
if (abDone) break;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
synchronized (waitFor)
{
baDone = true;
if (abDone = true) waitFor.notifyAll();
}
}
}
public void testDeadlock()
throws Exception
{
EnterpriseEntityHome home = (EnterpriseEntityHome)new
InitialContext().lookup("nextgen.EnterpriseEntity");
try
{
EnterpriseEntity A = home.findByPrimaryKey("A");
}
catch (ObjectNotFoundException ex)
{
home.create("A");
}
try
{
EnterpriseEntity B = home.findByPrimaryKey("B");
}
catch (ObjectNotFoundException ex)
{
home.create("B");
}
Thread one = new Thread(new RunTest("AB"));
Thread two = new Thread(new RunTest("BA"));
one.start();
two.start();
synchronized(waitFor)
{
waitFor.wait();
}
}
public static Test suite() throws Exception
{
Test t1 = getJ2eeSetup(BeanStressTestCase.class, "deadlock.jar");
return t1;
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development