Author: veithen
Date: Sat Sep 20 08:36:05 2008
New Revision: 697380

URL: http://svn.apache.org/viewvc?rev=697380&view=rev
Log:
Transport test kit: redirect logs on a per test case basis

Added:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSetTransition.java
Modified:
    synapse/trunk/java/modules/transports/log4j.properties
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TransportTestCase.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java

Modified: synapse/trunk/java/modules/transports/log4j.properties
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/log4j.properties?rev=697380&r1=697379&r2=697380&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/log4j.properties (original)
+++ synapse/trunk/java/modules/transports/log4j.properties Sat Sep 20 08:36:05 
2008
@@ -19,14 +19,9 @@
 
 # log4j configuration file used by unit tests
 
-log4j.rootCategory=INFO, CONSOLE
-#log4j.category.org.apache.synapse.transport=DEBUG
-log4j.category.org.apache.axis2.deployment=WARN
-log4j.category.org.apache.axis2.builder.BuilderUtil=WARN
-log4j.category.org.apache.commons.vfs.impl.DefaultFileReplicator=WARN
-log4j.category.org.apache.synapse.transport.base.TransportMBeanSupport=ERROR
-log4j.category.org.apache.qpid=WARN
+log4j.rootCategory=DEBUG, CONSOLE
 
 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.threshold=ERROR
 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 log4j.appender.CONSOLE.layout.ConversionPattern=%5p [%t] %c{1} %m%n

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java?rev=697380&r1=697379&r2=697380&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
 Sat Sep 20 08:36:05 2008
@@ -43,6 +43,7 @@
 import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
 import org.apache.synapse.transport.testkit.server.Endpoint;
 import org.apache.synapse.transport.testkit.tests.TestResourceSet;
+import org.apache.synapse.transport.testkit.tests.TestResourceSetTransition;
 import org.apache.synapse.transport.testkit.tests.TransportTestCase;
 import org.apache.synapse.transport.testkit.tests.async.BinaryTestCase;
 import org.apache.synapse.transport.testkit.tests.async.RESTTestCase;
@@ -186,7 +187,8 @@
 
     @Override
     public void run(TestResult result) {
-        LogManager.INSTANCE.setTestSuite(this);
+        LogManager logManager = LogManager.INSTANCE;
+        logManager.setTestSuite(this);
         try {
             if (!reuseResources) {
                 super.run(result);
@@ -199,9 +201,13 @@
                         TestResourceSet newResourceSet = 
ttest.getResourceSet();
                         try {
                             if (resourceSet == null) {
+                                logManager.setTestCase(ttest);
                                 newResourceSet.setUp();
                             } else {
-                                newResourceSet.setUp(resourceSet);
+                                TestResourceSetTransition transition = new 
TestResourceSetTransition(resourceSet, newResourceSet);
+                                transition.tearDown();
+                                logManager.setTestCase(ttest);
+                                transition.setUp();
                             }
                         } catch (Throwable t) {
                             result.addError(this, t);
@@ -214,6 +220,7 @@
                 if (resourceSet != null) {
                     try {
                         resourceSet.tearDown();
+                        logManager.setTestCase(null);
                     } catch (Throwable t) {
                         result.addError(this, t);
                         return;
@@ -221,7 +228,7 @@
                 }
             }
         } finally {
-            LogManager.INSTANCE.setTestSuite(null);
+            logManager.setTestSuite(null);
         }
     }
 }

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java?rev=697380&r1=697379&r2=697380&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSet.java
 Sat Sep 20 08:36:05 2008
@@ -22,7 +22,6 @@
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.ListIterator;
@@ -31,14 +30,14 @@
 import org.apache.commons.logging.LogFactory;
 
 public class TestResourceSet {
-    private enum Status { UNRESOLVED, RESOLVED, SETUP, RECYCLED };
+    enum Status { UNRESOLVED, RESOLVED, SETUP, RECYCLED };
     
     private static Log log = LogFactory.getLog(TestResourceSet.class);
     
     private final TestResourceSet parent;
     private final List<TestResource> unresolvedResources = new 
LinkedList<TestResource>();
-    private final List<TestResource> resolvedResources = new 
LinkedList<TestResource>();
-    private Status status = Status.UNRESOLVED;
+    final List<TestResource> resolvedResources = new 
LinkedList<TestResource>();
+    Status status = Status.UNRESOLVED;
     
     public TestResourceSet(TestResourceSet parent) {
         this.parent = parent;
@@ -134,7 +133,7 @@
         status = Status.SETUP;
     }
     
-    private static List<TestResource> filterOnHasLifecycle(List<TestResource> 
resources) {
+    static List<TestResource> filterOnHasLifecycle(List<TestResource> 
resources) {
         List<TestResource> result = new 
ArrayList<TestResource>(resources.size());
         for (TestResource resource : resources) {
             if (resource.hasLifecycle()) {
@@ -144,7 +143,7 @@
         return result;
     }
     
-    private static void setUp(List<TestResource> resources) throws Exception {
+    static void setUp(List<TestResource> resources) throws Exception {
         resources = filterOnHasLifecycle(resources);
         if (!resources.isEmpty()) {
             log.info("Setting up: " + resources);
@@ -154,36 +153,6 @@
         }
     }
     
-    public void setUp(TestResourceSet old) throws Exception {
-        resolve();
-        if (status != Status.RESOLVED) {
-            throw new IllegalStateException();
-        }
-        if (old.status != Status.SETUP) {
-            throw new IllegalStateException();
-        }
-        List<TestResource> oldResourcesToTearDown = new 
LinkedList<TestResource>();
-        List<TestResource> resourcesToSetUp = new 
LinkedList<TestResource>(resolvedResources);
-        List<TestResource> resourcesToKeep = new LinkedList<TestResource>();
-        outer: for (TestResource oldResource : 
filterOnHasLifecycle(old.resolvedResources)) {
-            for (Iterator<TestResource> it = resourcesToSetUp.iterator(); 
it.hasNext(); ) {
-                TestResource resource = it.next();
-                if (resource.equals(oldResource)) {
-                    it.remove();
-                    resource.recycle(oldResource);
-                    resourcesToKeep.add(oldResource);
-                    continue outer;
-                }
-            }
-            oldResourcesToTearDown.add(oldResource);
-        }
-        tearDown(oldResourcesToTearDown);
-        log.debug("Keeping: " + resourcesToKeep);
-        setUp(resourcesToSetUp);
-        status = Status.SETUP;
-        old.status = Status.RECYCLED;
-    }
-    
     public void tearDown() throws Exception {
         if (status != Status.SETUP) {
             throw new IllegalStateException();
@@ -191,7 +160,7 @@
         tearDown(resolvedResources);
     }
     
-    private static void tearDown(List<TestResource> resources) throws 
Exception {
+    static void tearDown(List<TestResource> resources) throws Exception {
         resources = filterOnHasLifecycle(resources);
         if (!resources.isEmpty()) {
             log.info("Tearing down: " + resources);

Added: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSetTransition.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSetTransition.java?rev=697380&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSetTransition.java
 (added)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TestResourceSetTransition.java
 Sat Sep 20 08:36:05 2008
@@ -0,0 +1,82 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.synapse.transport.testkit.tests;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.transport.testkit.tests.TestResourceSet.Status;
+
+public class TestResourceSetTransition {
+    private static final Log log = 
LogFactory.getLog(TestResourceSetTransition.class);
+    
+    private final TestResourceSet old;
+    private final TestResourceSet target;
+    private final List<TestResource> oldResourcesToTearDown;
+    private final List<TestResource> resourcesToSetUp;
+    private final List<TestResource> resourcesToKeep;
+    
+    public TestResourceSetTransition(TestResourceSet old, TestResourceSet 
target) {
+        this.old = old;
+        this.target = target;
+        target.resolve();
+        if (target.status != TestResourceSet.Status.RESOLVED) {
+            throw new IllegalStateException();
+        }
+        if (old.status != Status.SETUP) {
+            throw new IllegalStateException();
+        }
+        oldResourcesToTearDown = new LinkedList<TestResource>();
+        resourcesToSetUp = new 
LinkedList<TestResource>(target.resolvedResources);
+        resourcesToKeep = new LinkedList<TestResource>();
+        outer: for (TestResource oldResource : 
TestResourceSet.filterOnHasLifecycle(old.resolvedResources)) {
+            for (Iterator<TestResource> it = resourcesToSetUp.iterator(); 
it.hasNext(); ) {
+                TestResource resource = it.next();
+                if (resource.equals(oldResource)) {
+                    it.remove();
+                    resource.recycle(oldResource);
+                    resourcesToKeep.add(oldResource);
+                    continue outer;
+                }
+            }
+            oldResourcesToTearDown.add(oldResource);
+        }
+    }
+    
+    public void tearDown() throws Exception {
+        if (old.status != Status.SETUP) {
+            throw new IllegalStateException();
+        }
+        TestResourceSet.tearDown(oldResourcesToTearDown);
+        old.status = Status.RECYCLED;
+    }
+    
+    public void setUp() throws Exception {
+        if (target.status != TestResourceSet.Status.RESOLVED) {
+            throw new IllegalStateException();
+        }
+        log.debug("Keeping: " + resourcesToKeep);
+        TestResourceSet.setUp(resourcesToSetUp);
+        target.status = Status.SETUP;
+    }
+}

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TransportTestCase.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TransportTestCase.java?rev=697380&r1=697379&r2=697380&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TransportTestCase.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/TransportTestCase.java
 Sat Sep 20 08:36:05 2008
@@ -103,8 +103,8 @@
 
     @Override
     protected void setUp() throws Exception {
-        LogManager.INSTANCE.setTestCase(this);
         if (!managed) {
+            LogManager.INSTANCE.setTestCase(this);
             resourceSet.setUp();
         }
     }
@@ -113,8 +113,8 @@
     protected void tearDown() throws Exception {
         if (!managed) {
             resourceSet.tearDown();
+            LogManager.INSTANCE.setTestCase(null);
         }
-        LogManager.INSTANCE.setTestCase(null);
     }
 
     @Override

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java?rev=697380&r1=697379&r2=697380&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/util/LogManager.java
 Sat Sep 20 08:36:05 2008
@@ -25,6 +25,9 @@
 import java.io.OutputStream;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.apache.log4j.TTCCLayout;
+import org.apache.log4j.WriterAppender;
 import org.apache.synapse.transport.testkit.TransportTestSuite;
 import org.apache.synapse.transport.testkit.tests.TransportTestCase;
 
@@ -34,13 +37,23 @@
     private final File logDir;
     private File testSuiteDir;
     private File testCaseDir;
+    private WriterAppender appender;
     private int sequence;
     
     private LogManager() {
         logDir = new File("target" + File.separator + "testkit-logs");
     }
     
+    private void cleanUp() {
+        if (appender != null) {
+            Logger.getRootLogger().removeAppender(appender);
+            appender.close();
+            appender = null;
+        }
+    }
+    
     public void setTestSuite(TransportTestSuite suite) {
+        cleanUp();
         if (suite == null) {
             testSuiteDir = null;
         } else {
@@ -49,12 +62,15 @@
         testCaseDir = null;
     }
     
-    public void setTestCase(TransportTestCase testCase) {
+    public void setTestCase(TransportTestCase testCase) throws IOException {
+        cleanUp();
         if (testCase == null) {
             testCaseDir = null;
         } else {
             testCaseDir = new File(testSuiteDir, testCase.getId());
             sequence = 1;
+            appender = new WriterAppender(new TTCCLayout(), 
createLog("debug"));
+            Logger.getRootLogger().addAppender(appender);
         }
     }
     


Reply via email to