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

Reply via email to