[jboss-cvs] JBossAS SVN: r70790 - projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 12 20:00:20 EDT 2008


Author: flavia.rainone at jboss.com
Date: 2008-03-12 20:00:19 -0400 (Wed, 12 Mar 2008)
New Revision: 70790

Modified:
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/RebuildThread.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/RebuildingChainTestCase.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/SyncInterceptor.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/SyncThread.java
Log:
[JBAOP-499] Now the RebuldingChainTestCase has two flavours: with joins and without joins (both test different deadlock scenarios)

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/RebuildThread.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/RebuildThread.java	2008-03-12 23:38:52 UTC (rev 70789)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/RebuildThread.java	2008-03-13 00:00:19 UTC (rev 70790)
@@ -33,8 +33,8 @@
  */
 public class RebuildThread extends Thread
 {
-   private static volatile boolean done = false;
-
+   
+   
    @Override
    public void run()
    {
@@ -42,23 +42,10 @@
       {
          linkNewAdvice("Test" + i);
          unlinkAdvice("Test" + i);
-
-         if(isDone())
-            return;
       }
 
    }
-   
-   public  void setDone(boolean b)
-   {
-      done = b;
-   }
-   
-   public boolean isDone()
-   {
-      return done;
-   }
-   
+
    public void linkNewAdvice()
    {
       linkNewAdvice("Base");
@@ -66,7 +53,7 @@
     
    private void linkNewAdvice(String name)
    {
-     System.out.println("adding new advice" + name);
+      //System.out.println("adding new advice" + name);
       AdviceBinding binding1 = null;
       try
       {
@@ -83,7 +70,7 @@
    
    private void unlinkAdvice(String name)
    {
-      System.out.println("unlinking " + name); 
+      //System.out.println("unlinking " + name); 
       AspectManager.instance().removeBinding(name);
    }
   

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/RebuildingChainTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/RebuildingChainTestCase.java	2008-03-12 23:38:52 UTC (rev 70789)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/RebuildingChainTestCase.java	2008-03-13 00:00:19 UTC (rev 70790)
@@ -23,11 +23,8 @@
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
-import junit.textui.TestRunner;
 
-import org.jboss.aop.AspectManager;
 import org.jboss.test.aop.AOPTestWithSetup;
-import org.jboss.test.aop.override.OverrideTestCase;
 
 /**
  * A TestRebuildingChain.
@@ -60,10 +57,30 @@
       RebuildThread rt = new RebuildThread();
       rt.linkNewAdvice();
       
+      Thread.currentThread().sleep(10000);
+      
       rt.start();
+      //rt.join();
       st.start();
       
-      try
+      rt.join();
+      st.join();
+      
+      assertFalse("Failed to match pointcut when rebuilding the chain....", failed);
+   }
+   
+   public void testRebuildingChainWithJoin() throws Exception
+   {
+      System.out.println("testing rebuildingchain!");
+//      AspectManager.instance().verbose = true;
+      SyncThread st = new SyncThread();
+      RebuildThread rt = new RebuildThread();
+      rt.linkNewAdvice();
+      
+      rt.start();
+      st.start();
+      
+      /*try
       {
          long start = System.currentTimeMillis();
          Thread.sleep(20);
@@ -73,9 +90,12 @@
       {
          System.err.println("BAH "+ie.getMessage());
       }
+      */
+      //st.setDone(true);
+      //rt.setDone(true);
       
-      st.setDone(true);
-      rt.setDone(true);
+      st.join();
+      rt.join();
       
       assertFalse("Failed to match pointcut when rebuilding the chain....", failed);
    }
@@ -85,7 +105,7 @@
       failed = true;
    }
    
-   public static void main(String[] args)throws Exception
+   /*public static void main(String[] args)throws Exception
    {
       try
       {
@@ -96,5 +116,5 @@
       {
          System.err.println(e);
       }
-   }
+   }*/
 }

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/SyncInterceptor.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/SyncInterceptor.java	2008-03-12 23:38:52 UTC (rev 70789)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/SyncInterceptor.java	2008-03-13 00:00:19 UTC (rev 70790)
@@ -40,11 +40,12 @@
    }
 
    //@Override
-   public Object invoke(Invocation invocation) throws Throwable
+   public synchronized Object invoke(Invocation invocation) throws Throwable
    {
+      long time = System.currentTimeMillis();
       try
       {
-         System.out.println("SyncInterceptor");
+         System.out.println("SyncInterceptor: " + time);
          SyncThread.setStatus(true);
          return invocation.invokeNext();
       }
@@ -55,9 +56,7 @@
       finally
       {
          SyncThread.setStatus(false);
+         System.out.println("SyncInterceptor EXITED");
       }
    }
-   
-   
-
-}
+}
\ No newline at end of file

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/SyncThread.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/SyncThread.java	2008-03-12 23:38:52 UTC (rev 70789)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/rebuildingchain/SyncThread.java	2008-03-13 00:00:19 UTC (rev 70790)
@@ -29,25 +29,23 @@
  */
 public class SyncThread extends Thread
 {
+   private static Object lock = new Object();
    private static volatile boolean status = false;
-   private volatile boolean done = false;
-
+   
    @Override
    public void run()
    {
-
-         for(int i=0; i < 30; i++)
-         {
-         checkStatus();
+      for(int i=0; i < 30; i++)
+      {
          
-         if(isDone())
-            return;
-         
+         checkStatus();
       }
    }
    
    private void checkStatus()
    {
+      long time = System.currentTimeMillis();
+      System.out.println("CHECKING STATUS: " + time);
       System.out.println("ST checking status...");
       if(getStatus() == false)
       {
@@ -58,21 +56,17 @@
 
    public static boolean getStatus()
    {
-      return status;
+      synchronized(lock)
+      {
+        return status;
+      }
    }
    
    public static void setStatus(boolean b)
    {
-      status = b;
+      synchronized(lock)
+      {
+         status = b;
+      }
    }
-   
-   public void setDone(boolean b)
-   {
-      done = b;
-   }
-   
-   private boolean isDone()
-   {
-      return done;
-   }
 }




More information about the jboss-cvs-commits mailing list