summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authormwebster <mwebster>2006-07-27 09:30:17 +0000
committermwebster <mwebster>2006-07-27 09:30:17 +0000
commitdb06666e1c5858bdc4e6fb0c43ec2d74efd649f2 (patch)
treea97ae037a3dfe55839848f1a8bc22a9dc9c4f0f7 /weaver
parent79d9aff324adce6ef480155be0db3db85a89092a (diff)
downloadaspectj-db06666e1c5858bdc4e6fb0c43ec2d74efd649f2.tar.gz
aspectj-db06666e1c5858bdc4e6fb0c43ec2d74efd649f2.zip
Bug 150487 "Tracing and Logging Framework" (add JUnit tests)
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/tools/CommonsTrace.java17
-rw-r--r--weaver/src/org/aspectj/weaver/tools/DefaultTrace.java48
-rw-r--r--weaver/src/org/aspectj/weaver/tools/DefaultTraceFactory.java29
-rw-r--r--weaver/src/org/aspectj/weaver/tools/Trace.java2
-rw-r--r--weaver/src/org/aspectj/weaver/tools/TraceFactory.java27
-rw-r--r--weaver/testsrc/org/aspectj/weaver/AllTracingTests.java30
-rw-r--r--weaver/testsrc/org/aspectj/weaver/BcweaverTests.java1
-rw-r--r--weaver/testsrc/org/aspectj/weaver/CommonsTraceFactoryTest.java26
-rw-r--r--weaver/testsrc/org/aspectj/weaver/CommonsTraceTest.java67
-rw-r--r--weaver/testsrc/org/aspectj/weaver/DefaultTraceFactoryTest.java30
-rw-r--r--weaver/testsrc/org/aspectj/weaver/DefaultTraceTest.java66
-rw-r--r--weaver/testsrc/org/aspectj/weaver/TraceFactoryTest.java36
12 files changed, 348 insertions, 31 deletions
diff --git a/weaver/src/org/aspectj/weaver/tools/CommonsTrace.java b/weaver/src/org/aspectj/weaver/tools/CommonsTrace.java
index c0301416d..a5fb09751 100644
--- a/weaver/src/org/aspectj/weaver/tools/CommonsTrace.java
+++ b/weaver/src/org/aspectj/weaver/tools/CommonsTrace.java
@@ -26,32 +26,39 @@ public class CommonsTrace extends AbstractTrace {
public void enter(String methodName, Object thiz, Object[] args) {
if (log.isDebugEnabled()) {
- log.debug("> " + formatMessage(className, methodName, thiz, args));
+ log.debug(formatMessage(">", className, methodName, thiz, args));
}
}
public void enter(String methodName, Object thiz) {
if (log.isDebugEnabled()) {
- log.debug("> " + formatMessage(className, methodName, thiz, null));
+ log.debug(formatMessage(">", className, methodName, thiz, null));
}
}
public void exit(String methodName, Object ret) {
if (log.isDebugEnabled()) {
- log.debug("< " + formatMessage(className, methodName, ret, null));
+ log.debug(formatMessage("<", className, methodName, ret, null));
}
}
public void exit(String methodName, Throwable th) {
if (log.isDebugEnabled()) {
- log.debug("< " + formatMessage(className, methodName, th, null));
+ log.debug(formatMessage("<", className, methodName, th, null));
}
}
public void exit(String methodName) {
if (log.isDebugEnabled()) {
- log.debug("< " + formatMessage(className, methodName, null, null));
+ log.debug(formatMessage("<", className, methodName, null, null));
}
}
+ public boolean isTraceEnabled () {
+ return log.isDebugEnabled();
+ }
+
+ public void setTraceEnabled (boolean b) {
+ }
+
}
diff --git a/weaver/src/org/aspectj/weaver/tools/DefaultTrace.java b/weaver/src/org/aspectj/weaver/tools/DefaultTrace.java
index fdfc5e0e9..3e0bb5609 100644
--- a/weaver/src/org/aspectj/weaver/tools/DefaultTrace.java
+++ b/weaver/src/org/aspectj/weaver/tools/DefaultTrace.java
@@ -12,40 +12,48 @@ package org.aspectj.weaver.tools;
public class DefaultTrace extends AbstractTrace {
+ private boolean traceEnabled = false;
+
public DefaultTrace (Class clazz) {
super(clazz);
}
+ public boolean isTraceEnabled () {
+ return traceEnabled;
+ }
+
+ public void setTraceEnabled (boolean b) {
+ traceEnabled = b;
+ }
+
public void enter (String methodName, Object thiz, Object[] args) {
- if (tracingEnabled) {
-// println("> " + tracedClass.getName() + "." + methodName + " " + formatObj(thiz) + " " + formatArgs(args));
- println("> " + formatMessage(tracedClass.getName(),methodName,thiz,args));
+ if (traceEnabled) {
+ println(formatMessage(">",tracedClass.getName(),methodName,thiz, args));
}
}
public void enter (String methodName, Object thiz) {
- if (tracingEnabled) {
-// println("> " + tracedClass.getName() + "." + methodName + " " + formatObj(thiz));
- println("> " + formatMessage(tracedClass.getName(),methodName,thiz,null));
+ if (traceEnabled) {
+ println(formatMessage(">",tracedClass.getName(),methodName,thiz, null));
}
}
public void exit (String methodName, Object ret) {
- if (tracingEnabled) {
-// println("< " + tracedClass.getName() + "." + methodName + " " + formatObj(ret));
- println("< " + formatMessage(tracedClass.getName(),methodName,ret,null));
+ if (traceEnabled) {
+ println(formatMessage("<",tracedClass.getName(),methodName,ret, null));
}
}
public void exit (String methodName) {
- if (tracingEnabled) {
-// println("< " + tracedClass.getName() + "." + methodName);
- println("< " + formatMessage(tracedClass.getName(),methodName,null,null));
+ if (traceEnabled) {
+ println(formatMessage("<",tracedClass.getName(),methodName,null, null));
}
}
public void exit(String methodName, Throwable th) {
- exit(methodName,th);
+ if (traceEnabled) {
+ println(formatMessage("<",tracedClass.getName(),methodName,th, null));
+ }
}
/**
@@ -57,12 +65,12 @@ public class DefaultTrace extends AbstractTrace {
System.err.println(s);
}
- private static boolean tracingEnabled = getBoolean("org.aspectj.weaver.tools.tracing",false);
-
- private static boolean getBoolean (String name, boolean def) {
- String defaultValue = String.valueOf(def);
- String value = System.getProperty(name,defaultValue);
- return Boolean.valueOf(value).booleanValue();
- }
+// private static boolean isTracingEnabled = getBoolean("org.aspectj.weaver.tools.tracing",false);
+//
+// private static boolean getBoolean (String name, boolean def) {
+// String defaultValue = String.valueOf(def);
+// String value = System.getProperty(name,defaultValue);
+// return Boolean.valueOf(value).booleanValue();
+// }
}
diff --git a/weaver/src/org/aspectj/weaver/tools/DefaultTraceFactory.java b/weaver/src/org/aspectj/weaver/tools/DefaultTraceFactory.java
new file mode 100644
index 000000000..66a63484c
--- /dev/null
+++ b/weaver/src/org/aspectj/weaver/tools/DefaultTraceFactory.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Webster - initial implementation
+ *******************************************************************************/
+package org.aspectj.weaver.tools;
+
+public class DefaultTraceFactory extends TraceFactory {
+
+ public final static String ENABLED_PROPERTY = "org.aspectj.tracing.enabled";
+
+ private boolean tracingEnabled = getBoolean(ENABLED_PROPERTY,false);
+
+ public boolean isEnabled() {
+ return tracingEnabled;
+ }
+
+ public Trace getTrace (Class clazz) {
+ DefaultTrace trace = new DefaultTrace(clazz);
+ trace.setTraceEnabled(tracingEnabled);
+ return trace;
+ }
+
+}
diff --git a/weaver/src/org/aspectj/weaver/tools/Trace.java b/weaver/src/org/aspectj/weaver/tools/Trace.java
index 6337c6083..9c8fdb6ab 100644
--- a/weaver/src/org/aspectj/weaver/tools/Trace.java
+++ b/weaver/src/org/aspectj/weaver/tools/Trace.java
@@ -46,4 +46,6 @@ public interface Trace {
public void exit (String methodName, boolean b);
public boolean isTraceEnabled ();
+
+ public void setTraceEnabled (boolean b);
}
diff --git a/weaver/src/org/aspectj/weaver/tools/TraceFactory.java b/weaver/src/org/aspectj/weaver/tools/TraceFactory.java
index 553d4f0eb..5e194ea6c 100644
--- a/weaver/src/org/aspectj/weaver/tools/TraceFactory.java
+++ b/weaver/src/org/aspectj/weaver/tools/TraceFactory.java
@@ -12,19 +12,33 @@ package org.aspectj.weaver.tools;
import org.aspectj.util.LangUtil;
-public class TraceFactory {
+public abstract class TraceFactory {
- public static TraceFactory instance = new TraceFactory();
+ public final static String DEBUG_PROPERTY = "org.aspectj.tracing.debug";
+ public final static String FACTORY_PROPERTY = "org.aspectj.tracing.factory";
+
+ private static boolean debug = getBoolean(DEBUG_PROPERTY,false);
+ private static TraceFactory instance = new DefaultTraceFactory();
public Trace getTrace (Class clazz) {
- return new DefaultTrace(clazz);
+ return instance.getTrace(clazz);
}
+
+ public boolean isEnabled() {
+ return true;
+ }
public static TraceFactory getTraceFactory () {
return instance;
}
- static {
+ protected static boolean getBoolean(String name, boolean def) {
+ String defaultValue = String.valueOf(def);
+ String value = System.getProperty(name,defaultValue);
+ return Boolean.valueOf(value).booleanValue();
+ }
+
+ static {
try {
if (LangUtil.is15VMOrGreater()) {
Class factoryClass = Class.forName("org.aspectj.weaver.tools.Jdk14TraceFactory");
@@ -35,9 +49,10 @@ public class TraceFactory {
}
}
catch (Throwable th) {
-// th.printStackTrace();
+ if (debug) th.printStackTrace();
}
-// System.out.println("TraceFactory.<clinit>() instance=" + instance);
+
+ if (debug) System.out.println("TraceFactory.instance=" + instance);
}
}
diff --git a/weaver/testsrc/org/aspectj/weaver/AllTracingTests.java b/weaver/testsrc/org/aspectj/weaver/AllTracingTests.java
new file mode 100644
index 000000000..81a952903
--- /dev/null
+++ b/weaver/testsrc/org/aspectj/weaver/AllTracingTests.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Webster - initial implementation
+ *******************************************************************************/
+package org.aspectj.weaver;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTracingTests {
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite(AllTracingTests.class.getName());
+ //$JUnit-BEGIN$
+ suite.addTestSuite(TraceFactoryTest.class);
+ suite.addTestSuite(DefaultTraceFactoryTest.class);
+ suite.addTestSuite(DefaultTraceTest.class);
+ suite.addTestSuite(CommonsTraceFactoryTest.class);
+ suite.addTestSuite(CommonsTraceTest.class);
+ //$JUnit-END$
+ return suite;
+ }
+
+}
diff --git a/weaver/testsrc/org/aspectj/weaver/BcweaverTests.java b/weaver/testsrc/org/aspectj/weaver/BcweaverTests.java
index 1d3f65ea7..88a97ce03 100644
--- a/weaver/testsrc/org/aspectj/weaver/BcweaverTests.java
+++ b/weaver/testsrc/org/aspectj/weaver/BcweaverTests.java
@@ -54,6 +54,7 @@ public class BcweaverTests extends TestCase {
suite.addTestSuite(TypeXTestCase.class);
suite.addTestSuite(WeaverMessagesTestCase.class);
suite.addTestSuite(DumpTestCase.class);
+ suite.addTest(AllTracingTests.suite());
//$JUnit-END$
return suite;
}
diff --git a/weaver/testsrc/org/aspectj/weaver/CommonsTraceFactoryTest.java b/weaver/testsrc/org/aspectj/weaver/CommonsTraceFactoryTest.java
new file mode 100644
index 000000000..ecdaf63de
--- /dev/null
+++ b/weaver/testsrc/org/aspectj/weaver/CommonsTraceFactoryTest.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Webster - initial implementation
+ *******************************************************************************/
+package org.aspectj.weaver;
+
+import junit.framework.TestCase;
+
+import org.aspectj.weaver.tools.CommonsTraceFactory;
+import org.aspectj.weaver.tools.Trace;
+
+public class CommonsTraceFactoryTest extends TestCase {
+
+ public void testGetTraceFactory() {
+ CommonsTraceFactory factory = new CommonsTraceFactory();
+ Trace trace = factory.getTrace(getClass());
+ assertFalse("Tracing should be disbled by default",trace.isTraceEnabled());
+ }
+
+}
diff --git a/weaver/testsrc/org/aspectj/weaver/CommonsTraceTest.java b/weaver/testsrc/org/aspectj/weaver/CommonsTraceTest.java
new file mode 100644
index 000000000..ccc074be1
--- /dev/null
+++ b/weaver/testsrc/org/aspectj/weaver/CommonsTraceTest.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Webster - initial implementation
+ *******************************************************************************/
+package org.aspectj.weaver;
+
+import org.aspectj.weaver.tools.CommonsTrace;
+
+import junit.framework.TestCase;
+
+public class CommonsTraceTest extends TestCase {
+
+ private CommonsTrace trace;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ trace = new CommonsTrace(getClass());
+ trace.setTraceEnabled(true);
+ }
+
+ public void testCommonsTrace() {
+ CommonsTrace trace = new CommonsTrace(getClass());
+ }
+
+ public void testEnterWithThisAndArgs() {
+ trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
+ }
+
+ public void testEnterWithThis() {
+ trace.enter("testEnterWithThis",this);
+ }
+
+ public void testEnter() {
+ trace.enter("testEnter");
+ }
+
+ public void testExitWithReturn() {
+ trace.exit("testExitWithReturn","ret");
+ }
+
+ public void testExitWithThrowable() {
+ trace.exit("testExitWithThrowable",new RuntimeException());
+ }
+
+ public void testExit() {
+ trace.exit("testExit");
+ }
+
+ public void testIsTraceEnabled() {
+ CommonsTrace trace = new CommonsTrace(getClass());
+ assertFalse(trace.isTraceEnabled());
+ }
+
+ public void testSetTraceEnabled() {
+ CommonsTrace trace = new CommonsTrace(getClass());
+ trace.setTraceEnabled(true);
+ /* XXX Need to find out how to turn tracing on */
+// assertTrue(trace.isTraceEnabled());
+ }
+
+}
diff --git a/weaver/testsrc/org/aspectj/weaver/DefaultTraceFactoryTest.java b/weaver/testsrc/org/aspectj/weaver/DefaultTraceFactoryTest.java
new file mode 100644
index 000000000..16d14bfb6
--- /dev/null
+++ b/weaver/testsrc/org/aspectj/weaver/DefaultTraceFactoryTest.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Webster - initial implementation
+ *******************************************************************************/
+package org.aspectj.weaver;
+
+import org.aspectj.weaver.tools.DefaultTraceFactory;
+import org.aspectj.weaver.tools.Trace;
+
+import junit.framework.TestCase;
+
+public class DefaultTraceFactoryTest extends TestCase {
+
+ public void testGetTrace() {
+ DefaultTraceFactory factory = new DefaultTraceFactory();
+ Trace trace = factory.getTrace(getClass());
+ assertFalse("Tracing should be disbled by default",trace.isTraceEnabled());
+ }
+
+// public void testIsEnabled() {
+// fail("Not yet implemented");
+// }
+
+}
diff --git a/weaver/testsrc/org/aspectj/weaver/DefaultTraceTest.java b/weaver/testsrc/org/aspectj/weaver/DefaultTraceTest.java
new file mode 100644
index 000000000..784c20992
--- /dev/null
+++ b/weaver/testsrc/org/aspectj/weaver/DefaultTraceTest.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Webster - initial implementation
+ *******************************************************************************/
+package org.aspectj.weaver;
+
+import junit.framework.TestCase;
+
+import org.aspectj.weaver.tools.DefaultTrace;
+
+public class DefaultTraceTest extends TestCase {
+
+ private DefaultTrace trace;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ trace = new DefaultTrace(getClass());
+ trace.setTraceEnabled(true);
+ }
+
+ public void testDefaultTrace() {
+ DefaultTrace trace = new DefaultTrace(getClass());
+ }
+
+ public void testEnterWithThisAndArgs() {
+ trace.enter("testEnterWithThisAndArgs",this,new Object[] { "arg1", "arg2" });
+ }
+
+ public void testEnterWithThis() {
+ trace.enter("testEnterWithThis",this);
+ }
+
+ public void testEnter() {
+ trace.enter("testEnter");
+ }
+
+ public void testExitWithReturn() {
+ trace.exit("testExitWithReturn","ret");
+ }
+
+ public void testExitWithThrowable() {
+ trace.exit("testExitWithThrowable",new RuntimeException());
+ }
+
+ public void testExit() {
+ trace.exit("testExit");
+ }
+
+ public void testIsTraceEnabled() {
+ DefaultTrace trace = new DefaultTrace(getClass());
+ assertFalse(trace.isTraceEnabled());
+ }
+
+ public void testSetTraceEnabled() {
+ DefaultTrace trace = new DefaultTrace(getClass());
+ trace.setTraceEnabled(true);
+ assertTrue(trace.isTraceEnabled());
+ }
+
+}
diff --git a/weaver/testsrc/org/aspectj/weaver/TraceFactoryTest.java b/weaver/testsrc/org/aspectj/weaver/TraceFactoryTest.java
new file mode 100644
index 000000000..e755fa277
--- /dev/null
+++ b/weaver/testsrc/org/aspectj/weaver/TraceFactoryTest.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Matthew Webster - initial implementation
+ *******************************************************************************/
+package org.aspectj.weaver;
+
+import org.aspectj.weaver.tools.Trace;
+import org.aspectj.weaver.tools.TraceFactory;
+
+import junit.framework.TestCase;
+
+public class TraceFactoryTest extends TestCase {
+
+ public void testGetTraceFactory() {
+ TraceFactory traceFactory = TraceFactory.getTraceFactory();
+ assertNotNull(traceFactory);
+ }
+
+ public void testGetTrace() {
+ TraceFactory traceFactory = TraceFactory.getTraceFactory();
+ Trace trace = traceFactory.getTrace(getClass());
+ assertNotNull(trace);
+ }
+
+ public void testIsEnabled() {
+ TraceFactory traceFactory = TraceFactory.getTraceFactory();
+ assertTrue(traceFactory.isEnabled());
+ }
+
+}