[jboss-cvs] JBossAS SVN: r65007 - in projects/aop/branches/leaks/aop: src/main/org/jboss/aop and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Sep 3 06:02:35 EDT 2007


Author: kabir.khan at jboss.com
Date: 2007-09-03 06:02:35 -0400 (Mon, 03 Sep 2007)
New Revision: 65007

Modified:
   projects/aop/branches/leaks/aop/build-tests-jdk50.xml
   projects/aop/branches/leaks/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
   projects/aop/branches/leaks/aop/src/main/org/jboss/aop/classpool/AOPClassPoolRepository.java
   projects/aop/branches/leaks/aop/src/test/org/jboss/test/aop/AOPTestDelegate.java
   projects/aop/branches/leaks/aop/src/test/org/jboss/test/aop/memoryleaks/MemoryLeakTestCase.java
Log:
Most memory tests get fixed by nulling the test fields

Modified: projects/aop/branches/leaks/aop/build-tests-jdk50.xml
===================================================================
--- projects/aop/branches/leaks/aop/build-tests-jdk50.xml	2007-09-03 09:39:02 UTC (rev 65006)
+++ projects/aop/branches/leaks/aop/build-tests-jdk50.xml	2007-09-03 10:02:35 UTC (rev 65007)
@@ -1469,7 +1469,6 @@
 
    <target name="memory-tests" depends="compile-test-classes">
       <taskdef name="annotationc" classname="org.jboss.aop.ant.AnnotationC" classpathref="jboss.aop.classpath"/>
-<!--
       <antcall  target="memory-test" inheritRefs="true">
          <param name="test" value="annotatedcflow"/>
          <param name="case" value="AnnotatedCFlowTestCase"/>
@@ -1478,12 +1477,10 @@
          <param name="test" value="annotatedparams"/>
          <param name="case" value="AnnotatedParamsTester"/>
       </antcall>
--->
       <antcall  target="memory-test" inheritRefs="true">
          <param name="test" value="args"/>
          <param name="case" value="ArgumentsTestCase"/>
       </antcall>
-<!--
       <antcall  target="memory-test" inheritRefs="true">
          <param name="test" value="basic"/>
          <param name="case" value="AOPTester"/>
@@ -1496,9 +1493,6 @@
          <param name="test" value="beforeafter"/>
          <param name="case" value="BeforeAfterThrowingTestCase"/>
       </antcall>
--->
-      <echo>REMEMBER TO ENABLE THE REST OF THE TESTS</echo>
-      <!--
       <antcall  target="memory-test" inheritRefs="true">
          <param name="test" value="beforeafterArgs"/>
          <param name="case" value="ArgsTestCase"/>
@@ -1589,7 +1583,7 @@
       </antcall>
       <antcall  target="memory-test" inheritRefs="true">
          <param name="test" value="instanceofintroduced"/>
-         <param name="case" value="InstanceOfIntroducedTestCase"/>
+         <param name="case" value="InstanceofIntroducedTestCase"/>
       </antcall>
       <antcall  target="memory-test" inheritRefs="true">
          <param name="test" value="introduction"/>
@@ -1614,7 +1608,7 @@
       <antcall  target="memory-test" inheritRefs="true">
          <param name="test" value="scope"/>
          <param name="case" value="ScopeTestCase"/>
-      </antcall>-->
+      </antcall>
    </target>
 
    <target name="memory-test" depends="init">

Modified: projects/aop/branches/leaks/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
===================================================================
--- projects/aop/branches/leaks/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java	2007-09-03 09:39:02 UTC (rev 65006)
+++ projects/aop/branches/leaks/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java	2007-09-03 10:02:35 UTC (rev 65007)
@@ -122,11 +122,12 @@
       System.out.println("---> Domains: " + subscribedSubDomains.size());
       synchronized (subscribedSubDomains)
       {
-         for (Iterator it = subscribedSubDomains.values().iterator() ; it.hasNext() ; )
+         for (Iterator it = subscribedSubDomains.keySet().iterator() ; it.hasNext() ; )
          {
             GeneratedAdvisorDomain manager = (GeneratedAdvisorDomain)it.next();
             Map advisors = manager.getAdvisors();
             System.out.println("---> Advisors: " + advisors);
+            it.remove();
          }
       }
    }

Modified: projects/aop/branches/leaks/aop/src/main/org/jboss/aop/classpool/AOPClassPoolRepository.java
===================================================================
--- projects/aop/branches/leaks/aop/src/main/org/jboss/aop/classpool/AOPClassPoolRepository.java	2007-09-03 09:39:02 UTC (rev 65006)
+++ projects/aop/branches/leaks/aop/src/main/org/jboss/aop/classpool/AOPClassPoolRepository.java	2007-09-03 10:02:35 UTC (rev 65007)
@@ -228,6 +228,7 @@
       {
          //The static advisor field should be the only remaining hard reference to the advisor
          f = advisedClass.getDeclaredField(Instrumentor.HELPER_FIELD_NAME);
+         //TODO Use securityaction
          f.setAccessible(true);
       }
       catch(NoSuchFieldException e)
@@ -241,11 +242,14 @@
       Advisor advisor = null;
       try
       {
-         advisor = (Advisor)f.get(null);
-         if (advisor != null)
-         {
-            advisor.cleanup();
-         }
+    	 if (f != null)
+    	 {
+	         advisor = (Advisor)f.get(null);
+	         if (advisor != null)
+	         {
+	            advisor.cleanup();
+	         }
+    	 }
       }
       catch(IllegalAccessException e)
       {
@@ -254,7 +258,10 @@
 
       try
       {
-         f.set(null, null);
+         if (f != null)
+         {
+            f.set(null, null);
+         }
       }
       catch(IllegalAccessException e)
       {

Modified: projects/aop/branches/leaks/aop/src/test/org/jboss/test/aop/AOPTestDelegate.java
===================================================================
--- projects/aop/branches/leaks/aop/src/test/org/jboss/test/aop/AOPTestDelegate.java	2007-09-03 09:39:02 UTC (rev 65006)
+++ projects/aop/branches/leaks/aop/src/test/org/jboss/test/aop/AOPTestDelegate.java	2007-09-03 10:02:35 UTC (rev 65007)
@@ -48,20 +48,4 @@
    {
       return systemProps;
    }
-   
-    /**
-     * Undeployment any test specific aop descriptor deployed in setUp.
-     */
-    public void tearDown() throws Exception
-    {
-       //TODO Figure out cause of security exception when making this call
-//       super.tearDown();
-       String deployedByClassLoader = (String)systemProps.get(EclipseTestTransformer.CLASSLOADER_DEPLOYED_XML); 
-       if (deployedByClassLoader != null)
-       {
-          URL url = Thread.currentThread().getContextClassLoader().getResource(deployedByClassLoader);
-          AspectXmlLoader.undeployXML(url);
-       }
-    }
-    
 }

Modified: projects/aop/branches/leaks/aop/src/test/org/jboss/test/aop/memoryleaks/MemoryLeakTestCase.java
===================================================================
--- projects/aop/branches/leaks/aop/src/test/org/jboss/test/aop/memoryleaks/MemoryLeakTestCase.java	2007-09-03 09:39:02 UTC (rev 65006)
+++ projects/aop/branches/leaks/aop/src/test/org/jboss/test/aop/memoryleaks/MemoryLeakTestCase.java	2007-09-03 10:02:35 UTC (rev 65007)
@@ -145,8 +145,8 @@
             testClass=null;
             testInstance = null;
             methods.clear();
-            //xmlLoader = null;
-            AccessController.doPrivileged(new PrivilegedAction()
+            
+            AccessController.doPrivileged(new PrivilegedAction<Object>()
             {
                public Object run()
                {
@@ -154,6 +154,11 @@
                   return null;
                }
             });
+
+            //The test framework does not clear some static fields, make sure these are cleared
+            clearEverySingleFieldOnInstances("org.jboss.test.JBossTestSetup");
+            clearEverySingleFieldOnInstances("org.jboss.test.AbstractTestSetup");
+            clearEverySingleFieldOnInstances("org.jboss.test.AbstractTestCaseWithSetup");
          }
 
          assertEquals(1, countInstances("org.jboss.aop.AspectManager", true));
@@ -432,11 +437,13 @@
       {
          if (classes[i].getName().equals(className))
          {
+        	System.out.println("---> Found class " + className);
             Field fields[] = getDeclaredFields(classes[i]);
             objects = jvmti.getAllObjects(classes[i]);
             for (int j=0;j<objects.length;j++)
             {
                resetObject(objects[j], fields);
+               
             }
             if (objects.length==0)
             {
@@ -454,14 +461,11 @@
       {
          try
          {
-            //System.out.print("Setting "+fields[fieldN].getName());
             fields[fieldN].set(object,null);
-            //System.out.println("...done");
          }
          catch (Exception e)
          {
-           // System.out.println("...error " + e.getMessage());
-            //System.out.println("Exception " + e.getMessage() + " happened during setField");
+            System.out.println("Exception  happened during setField " + e);
          }
       }
    }
@@ -521,6 +525,7 @@
 
 
        ArrayList urls = new ArrayList();
+       ArrayList<URL> urls = new ArrayList<URL>();
        while (tokenString.hasMoreElements())
        {
           String value = tokenString.nextToken();
@@ -535,7 +540,7 @@
           }
        }
 
-       URL[] urlArray= (URL[])urls.toArray(new URL[urls.size()]);
+       URL[] urlArray= urls.toArray(new URL[urls.size()]);
 
        ClassLoader masterClassLoader = URLClassLoader.newInstance(urlArray,null);
 
@@ -557,8 +562,12 @@
       String strurl = jbossAopPath;
       assertNotNull("Property jboss.aop.path should be defined",strurl);
       strurl = strurl.replace('\\','/');
+      if (!strurl.startsWith("/"))
+      {
+    	  strurl = "/" + strurl;
+      }
       URL url = new URL("file://" + strurl);
-
+      
       aspectXmkLoaderUndeployXmlMethod.invoke(null, new Object[] {url});
 
       System.out.println("\n====================================================================");




More information about the jboss-cvs-commits mailing list