diff options
author | mwebster <mwebster> | 2006-07-27 09:30:17 +0000 |
---|---|---|
committer | mwebster <mwebster> | 2006-07-27 09:30:17 +0000 |
commit | db06666e1c5858bdc4e6fb0c43ec2d74efd649f2 (patch) | |
tree | a97ae037a3dfe55839848f1a8bc22a9dc9c4f0f7 /weaver | |
parent | 79d9aff324adce6ef480155be0db3db85a89092a (diff) | |
download | aspectj-db06666e1c5858bdc4e6fb0c43ec2d74efd649f2.tar.gz aspectj-db06666e1c5858bdc4e6fb0c43ec2d74efd649f2.zip |
Bug 150487 "Tracing and Logging Framework" (add JUnit tests)
Diffstat (limited to 'weaver')
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()); + } + +} |