[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