aboutsummaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/test/java/org/aspectj/weaver/bcel/ClasspathManagerTestCase.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/weaver/src/test/java/org/aspectj/weaver/bcel/ClasspathManagerTestCase.java b/weaver/src/test/java/org/aspectj/weaver/bcel/ClasspathManagerTestCase.java
index 1c8d7a918..1dcce6842 100644
--- a/weaver/src/test/java/org/aspectj/weaver/bcel/ClasspathManagerTestCase.java
+++ b/weaver/src/test/java/org/aspectj/weaver/bcel/ClasspathManagerTestCase.java
@@ -23,6 +23,7 @@ import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.IMessage.Kind;
import org.aspectj.bridge.IMessageHandler;
import org.aspectj.util.LangUtil;
+import org.aspectj.weaver.TypeFactory;
import org.aspectj.weaver.UnresolvedType;
import org.aspectj.weaver.bcel.ClassPathManager.ClassFile;
@@ -76,7 +77,33 @@ public class ClasspathManagerTestCase extends TestCase {
}
public void testInstructions() {
- System.out.println("This test is really only for standalone usage as it need executing on multiple JDK levels");
+ System.out.println(
+ "This test is mostly for stand-alone usage (rename 'xtest*' to 'test*'), " +
+ "as it needs execution on multiple JDK levels"
+ );
+ }
+
+ /**
+ * See <a href="https://github.com/eclipse-aspectj/aspectj/issues/306">GitHub issue 306</a>
+ */
+ public void testUnfoundClassPerformance() {
+ final int ROUNDS = 10_000;
+ final int MAX_TIME = 500;
+
+ List<String> classPath = Arrays.asList(System.getProperty("java.class.path").split(File.pathSeparator));
+ //System.out.println(classPath);
+ ClassPathManager classPathManager = new ClassPathManager(classPath, null);
+ UnresolvedType unresolvedType = TypeFactory.createTypeFromSignature("Ljava/lang/String;");
+
+ long startTime = System.currentTimeMillis();
+ for (int i = 0; i < ROUNDS; i++)
+ classPathManager.find(unresolvedType);
+ long duration = System.currentTimeMillis() - startTime;
+
+ assertTrue(
+ String.format("Duration for %d rounds should be < %d ms, but was %d ms", ROUNDS, MAX_TIME, duration),
+ duration < MAX_TIME
+ );
}
public void xtestSanity18accessing18RTJAR() throws IOException {