Browse Source

296734: various optimizations for LTW and aop.xml include/exclude processing

tags/V1_6_7
aclement 14 years ago
parent
commit
3cd7cacfcb

+ 193
- 192
tests/src/org/aspectj/systemtest/ajc150/ataspectj/AtAjLTWTests.java View File

@@ -24,11 +24,11 @@ import org.aspectj.util.FileUtil;
public class AtAjLTWTests extends XMLBasedAjcTestCase {

public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(org.aspectj.systemtest.ajc150.ataspectj.AtAjLTWTests.class);
return XMLBasedAjcTestCase.loadSuite(org.aspectj.systemtest.ajc150.ataspectj.AtAjLTWTests.class);
}

protected File getSpecFile() {
return new File("../tests/src/org/aspectj/systemtest/ajc150/ataspectj/ltw.xml");
return new File("../tests/src/org/aspectj/systemtest/ajc150/ataspectj/ltw.xml");
}

public void testRunThemAllWithJavacCompiledAndLTW() {
@@ -43,194 +43,195 @@ public class AtAjLTWTests extends XMLBasedAjcTestCase {
runTest("AjcLTW PerClauseTest -Xreweavable");
}

public void testJavaCAjcLTWPerClauseTest() {
runTest("JavaCAjcLTW PerClauseTest");
}

public void testAjcLTWAroundInlineMungerTest_XterminateAfterCompilation() {
runTest("AjcLTW AroundInlineMungerTest -XterminateAfterCompilation");
}

public void testAjcLTWAroundInlineMungerTest_Xreweavable() {
runTest("AjcLTW AroundInlineMungerTest");
}

public void testAjcLTWAroundInlineMungerTest() {
runTest("AjcLTW AroundInlineMungerTest");
}

public void testAjcLTWAroundInlineMungerTest_XnoInline_Xreweavable() {
runTest("AjcLTW AroundInlineMungerTest -XnoInline -Xreweavable");
}

public void testAjcLTWAroundInlineMungerTest2() {
runTest("AjcLTW AroundInlineMungerTest2");
}

public void testLTWDumpNone() {
runTest("LTW DumpTest none");

File f = new File("_ajdump/ataspectj/DumpTest.class");
assertFalse(f.exists());
f = new File("_ajdump/_before/ataspectj/DumpTestTheDump.class");
assertFalse(f.exists());
f = new File("_ajdump/ataspectj/DumpTestTheDump.class");
assertFalse(f.exists());
}

public void testLTWDump() {
runTest("LTW DumpTest");
File f = new File("_ajdump/ataspectj/DumpTest.class");
assertFalse(f.exists());
f = new File("_ajdump/_before/ataspectj/DumpTestTheDump.class");
assertFalse(f.exists());
f = new File("_ajdump/ataspectj/DumpTestTheDump.class");
assertTrue(f.exists());
// tidy up...
f = new File("_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testLTWDumpBeforeAndAfter() {
runTest("LTW DumpTest before and after");
// before
File f = new File("_ajdump/_before/com/foo/bar");
CountingFilenameFilter cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals("Expected dump file in " + f.getAbsolutePath(),1,cff.getCount());

// after
f = new File("_ajdump/com/foo/bar");
cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals("Expected dump file in " + f.getAbsolutePath(),1,cff.getCount());
// tidy up...
f = new File("_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testLTWDumpClosure() {
runTest("LTW DumpTest closure");

File f = new File("_ajdump/ataspectj/DumpTestTheDump$AjcClosure1.class");
assertTrue("Missing dump file " + f.getAbsolutePath(),f.exists());
// tidy up...
f = new File("_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testLTWDumpProxy() {
runTest("LTW DumpTest proxy");

// The working directory is different because this test must be forked
File dir = new File("../tests/java5/ataspectj");
File f = new File(dir,"_ajdump/_before");
CountingFilenameFilter cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals("Expected dump file in " + f.getAbsolutePath(),1,cff.getCount());
f = new File(dir,"_ajdump");
cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals(1,cff.getCount());
// tidy up...
f = new File(dir,"_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testLTWDumpJSP () {
runTest("LTW DumpTest JSP");

// The working directory is different because this test must be forked
File f = new File("_ajdump/_before/com/ibm/_jsp");
CountingFilenameFilter cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals("Expected dump file in " + f.getAbsolutePath(),1,cff.getCount());
f = new File("_ajdump/com/ibm/_jsp");
cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals(1,cff.getCount());
// tidy up...
f = new File("_ajdump");
FileUtil.deleteContents(f);
f.delete();
}
public void testAjcAspect1LTWAspect2_Xreweavable() {
runTest("Ajc Aspect1 LTW Aspect2 -Xreweavable");
}

public void testLTWLogSilent() {
runTest("LTW Log silent");
}

public void testLTWLogVerbose() {
runTest("LTW Log verbose");
}

public void testLTWLogVerboseAndShow() {
runTest("LTW Log verbose and showWeaveInfo");
}

public void testLTWLogMessageHandlerClass() {
runTest("LTW Log messageHandlerClass");
}

public void testLTWUnweavable() {
// actually test that we do LTW proxy and jit classes
runTest("LTW Unweavable");
}

public void testLTWDecp() {
runTest("LTW Decp");
}

public void testLTWDecp2() {
runTest("LTW Decp2");
}

public void testCompileTimeAspectsDeclaredToLTWWeaver() {
runTest("Compile time aspects declared to ltw weaver");
}

public void testConcreteAtAspect() {
runTest("Concrete@Aspect");
}

public void testConcreteAspect() {
runTest("ConcreteAspect");
}

public void testConcretePrecedenceAspect() {
runTest("ConcretePrecedenceAspect");
}

public void testAspectOfWhenAspectNotInInclude() {
runTest("AspectOfWhenAspectNotInInclude");
}

public void testAspectOfWhenAspectExcluded_pr152873() {
runTest("AspectOfWhenAspectExcluded");
}
public void testAspectOfWhenNonAspectExcluded_pr152873() {
runTest("AspectOfWhenNonAspectExcluded");
}

public void testAppContainer() {
runTest("AppContainer");
}

public void testCflowBelowStack() {
runTest("CflowBelowStack");
}
public void testJavaCAjcLTWPerClauseTest() {
runTest("JavaCAjcLTW PerClauseTest");
}

public void testAjcLTWAroundInlineMungerTest_XterminateAfterCompilation() {
runTest("AjcLTW AroundInlineMungerTest -XterminateAfterCompilation");
}

public void testAjcLTWAroundInlineMungerTest_Xreweavable() {
runTest("AjcLTW AroundInlineMungerTest");
}

public void testAjcLTWAroundInlineMungerTest() {
runTest("AjcLTW AroundInlineMungerTest");
}

public void testAjcLTWAroundInlineMungerTest_XnoInline_Xreweavable() {
runTest("AjcLTW AroundInlineMungerTest -XnoInline -Xreweavable");
}

public void testAjcLTWAroundInlineMungerTest2() {
runTest("AjcLTW AroundInlineMungerTest2");
}

public void testLTWDumpNone() {
runTest("LTW DumpTest none");

File f = new File("_ajdump/ataspectj/DumpTest.class");
assertFalse(f.exists());
f = new File("_ajdump/_before/ataspectj/DumpTestTheDump.class");
assertFalse(f.exists());
f = new File("_ajdump/ataspectj/DumpTestTheDump.class");
assertFalse(f.exists());
}

public void testLTWDump() {
runTest("LTW DumpTest");

File f = new File("_ajdump/ataspectj/DumpTest.class");
assertFalse(f.exists());
f = new File("_ajdump/_before/ataspectj/DumpTestTheDump.class");
assertFalse(f.exists());
f = new File("_ajdump/ataspectj/DumpTestTheDump.class");
assertTrue(f.exists());

// tidy up...
f = new File("_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testLTWDumpBeforeAndAfter() {
runTest("LTW DumpTest before and after");

// before
File f = new File("_ajdump/_before/com/foo/bar");
CountingFilenameFilter cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals("Expected dump file in " + f.getAbsolutePath(), 1, cff.getCount());

// after
f = new File("_ajdump/com/foo/bar");
cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals("Expected dump file in " + f.getAbsolutePath(), 1, cff.getCount());

// tidy up...
f = new File("_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testLTWDumpClosure() {
runTest("LTW DumpTest closure");

File f = new File("_ajdump/ataspectj/DumpTestTheDump$AjcClosure1.class");
assertTrue("Missing dump file " + f.getAbsolutePath(), f.exists());

// tidy up...
f = new File("_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testLTWDumpProxy() {
runTest("LTW DumpTest proxy");

// The working directory is different because this test must be forked
File dir = new File("../tests/java5/ataspectj");
File f = new File(dir, "_ajdump/_before");
CountingFilenameFilter cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals("Expected dump file in " + f.getAbsolutePath(), 1, cff.getCount());
f = new File(dir, "_ajdump");
cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals(1, cff.getCount());

// tidy up...
f = new File(dir, "_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testLTWDumpJSP() {
runTest("LTW DumpTest JSP");

// The working directory is different because this test must be forked
File f = new File("_ajdump/_before/com/ibm/_jsp");
CountingFilenameFilter cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals("Expected dump file in " + f.getAbsolutePath(), 1, cff.getCount());
f = new File("_ajdump/com/ibm/_jsp");
cff = new CountingFilenameFilter(".class");
f.listFiles(cff);
assertEquals(1, cff.getCount());

// tidy up...
f = new File("_ajdump");
FileUtil.deleteContents(f);
f.delete();
}

public void testAjcAspect1LTWAspect2_Xreweavable() {
runTest("Ajc Aspect1 LTW Aspect2 -Xreweavable");
}

public void testLTWLogSilent() {
runTest("LTW Log silent");
}

public void testLTWLogVerbose() {
runTest("LTW Log verbose");
}

public void testLTWLogVerboseAndShow() {
runTest("LTW Log verbose and showWeaveInfo");
}

public void testLTWLogMessageHandlerClass() {
runTest("LTW Log messageHandlerClass");
}

public void testLTWUnweavable() {
// actually test that we do LTW proxy and jit classes
runTest("LTW Unweavable");
}

public void testLTWDecp() {
runTest("LTW Decp");
}

public void testLTWDecp2() {
runTest("LTW Decp2");
}

public void testCompileTimeAspectsDeclaredToLTWWeaver() {
runTest("Compile time aspects declared to ltw weaver");
}

public void testConcreteAtAspect() {
runTest("Concrete@Aspect");
}

public void testConcreteAspect() {
runTest("ConcreteAspect");
}

public void testConcretePrecedenceAspect() {
runTest("ConcretePrecedenceAspect");
}

// public void testAspectOfWhenAspectNotInInclude() {
// runTest("AspectOfWhenAspectNotInInclude");
// }
//
// public void testAspectOfWhenAspectExcluded_pr152873() {
// runTest("AspectOfWhenAspectExcluded");
// }

public void testAspectOfWhenNonAspectExcluded_pr152873() {
runTest("AspectOfWhenNonAspectExcluded");
}

public void testAppContainer() {
runTest("AppContainer");
}

public void testCflowBelowStack() {
runTest("CflowBelowStack");
}
}

+ 22
- 21
tests/src/org/aspectj/systemtest/ajc154/Ajc154Tests.java View File

@@ -13,7 +13,6 @@ package org.aspectj.systemtest.ajc154;
import java.io.File;
import java.lang.reflect.Field;

import junit.framework.AssertionFailedError;
import junit.framework.Test;

import org.aspectj.apache.bcel.classfile.ConstantPool;
@@ -47,22 +46,22 @@ public class Ajc154Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
// public void testAfterThrowingAnnotationStyle_pr211674_2() { runTest("after throwing annotation style problem - 2");}

// crappy solution - see the bug
public void testCflowLtwProblem_pr166647_1() {
try {
runTest("ltw and cflow problem");
} catch (AssertionFailedError afe) {
// this is OK.... sadly
// at least lets check we warned the user it was going to happen:
String stderr = (getLastRunResult() == null ? "" : getLastRunResult().getStdErr());
// Expected line:
// [WeavingURLClassLoader] warning XML Defined aspects must be woven in cases where cflow pointcuts are involved.
// Currently the include/exclude patterns exclude 'x.Aspect2' [Xlint:mustWeaveXmlDefinedAspects]
assertTrue("Did not see warning about needing to weave xml defined aspects", stderr
.indexOf("warning XML Defined aspects must be woven in cases where cflow pointcuts are involved.") != -1);
assertTrue("Xlint warning was expected '[Xlint:mustWeaveXmlDefinedAspects]'", stderr
.indexOf("[Xlint:mustWeaveXmlDefinedAspects]") != -1);
}
}
// public void testCflowLtwProblem_pr166647_1() {
// try {
// runTest("ltw and cflow problem");
// } catch (AssertionFailedError afe) {
// // this is OK.... sadly
// // at least lets check we warned the user it was going to happen:
// String stderr = (getLastRunResult() == null ? "" : getLastRunResult().getStdErr());
// // Expected line:
// // [WeavingURLClassLoader] warning XML Defined aspects must be woven in cases where cflow pointcuts are involved.
// // Currently the include/exclude patterns exclude 'x.Aspect2' [Xlint:mustWeaveXmlDefinedAspects]
// assertTrue("Did not see warning about needing to weave xml defined aspects", stderr
// .indexOf("warning XML Defined aspects must be woven in cases where cflow pointcuts are involved.") != -1);
// assertTrue("Xlint warning was expected '[Xlint:mustWeaveXmlDefinedAspects]'", stderr
// .indexOf("[Xlint:mustWeaveXmlDefinedAspects]") != -1);
// }
// }

// Testing some issues with declare at type
public void testDeclareAtTypeProblems_pr211052_1() {
@@ -219,8 +218,9 @@ public class Ajc154Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
Method oneWeWant = null;
for (int i = 0; i < meths.length && oneWeWant == null; i++) {
Method method = meths[i];
if (method.getName().equals("main"))
if (method.getName().equals("main")) {
oneWeWant = meths[i];
}
}

/**
@@ -263,8 +263,9 @@ public class Ajc154Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
Method oneWeWant = null;
for (int i = 0; i < meths.length && oneWeWant == null; i++) {
Method method = meths[i];
if (method.getName().equals("main"))
if (method.getName().equals("main")) {
oneWeWant = meths[i];
}
}
// see previous test for dump of main method

@@ -354,7 +355,6 @@ public class Ajc154Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
return XMLBasedAjcTestCase.loadSuite(Ajc154Tests.class);
}

protected File getSpecFile() {
return new File("../tests/src/org/aspectj/systemtest/ajc154/ajc154.xml");
}
@@ -431,8 +431,9 @@ public class Ajc154Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
}

public FuzzyBoolean matchesStatically(MatchingContext matchContext) {
if (this.simulateDynamicTest)
if (this.simulateDynamicTest) {
return FuzzyBoolean.MAYBE;
}
if (this.beanNamePattern.equals(matchContext.getBinding("beanName"))) {
return FuzzyBoolean.YES;
} else {

Loading…
Cancel
Save