You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2008/09/27 22:25:12 UTC

svn commit: r699731 - in /webservices/commons/trunk/modules/transport/modules: mail/src/test/java/org/apache/axis2/transport/mail/ testkit/src/main/java/org/apache/axis2/transport/testkit/http/ testkit/src/main/java/org/apache/axis2/transport/testkit/u...

Author: veithen
Date: Sat Sep 27 13:25:12 2008
New Revision: 699731

URL: http://svn.apache.org/viewvc?rev=699731&view=rev
Log:
Mail transport tests: Intercept and log the SMTP communication.

Added:
    webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Acceptor.java
Modified:
    webservices/commons/trunk/modules/transport/modules/mail/src/test/java/org/apache/axis2/transport/mail/GreenMailTestEnvironment.java
    webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/http/HttpChannel.java
    webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Tunnel.java

Modified: webservices/commons/trunk/modules/transport/modules/mail/src/test/java/org/apache/axis2/transport/mail/GreenMailTestEnvironment.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/src/test/java/org/apache/axis2/transport/mail/GreenMailTestEnvironment.java?rev=699731&r1=699730&r2=699731&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/mail/src/test/java/org/apache/axis2/transport/mail/GreenMailTestEnvironment.java (original)
+++ webservices/commons/trunk/modules/transport/modules/mail/src/test/java/org/apache/axis2/transport/mail/GreenMailTestEnvironment.java Sat Sep 27 13:25:12 2008
@@ -20,6 +20,7 @@
 package org.apache.axis2.transport.mail;
 
 import java.io.OutputStream;
+import java.net.InetSocketAddress;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -31,6 +32,7 @@
 import org.apache.axis2.transport.testkit.name.Name;
 import org.apache.axis2.transport.testkit.util.LogManager;
 import org.apache.axis2.transport.testkit.util.ServerUtil;
+import org.apache.axis2.transport.testkit.util.tcpmon.Tunnel;
 
 import com.icegreen.greenmail.store.FolderListener;
 import com.icegreen.greenmail.store.MailFolder;
@@ -54,6 +56,7 @@
     private final ServerSetup storeServerSetup;
     private LogManager logManager;
     private GreenMail greenMail;
+    private Tunnel smtpTunnel;
     private int accountNumber;
     private List<Account> unallocatedAccounts;
 
@@ -73,6 +76,8 @@
         this.logManager = logManager;
         greenMail = new GreenMail(new ServerSetup[] { SMTP, storeServerSetup });
         greenMail.start();
+        smtpTunnel = new Tunnel(new InetSocketAddress("127.0.0.1", 7025));
+        smtpTunnel.start();
         unallocatedAccounts = new LinkedList<Account>();
         ServerUtil.waitForServer(SMTP.getPort());
         ServerUtil.waitForServer(storeServerSetup.getPort());
@@ -143,7 +148,7 @@
     public Map<String,String> getOutProperties() {
         Map<String,String> props = new HashMap<String,String>();
         props.put("mail.smtp.host", "localhost");
-        props.put("mail.smtp.port", String.valueOf(SMTP.getPort()));
+        props.put("mail.smtp.port", String.valueOf(smtpTunnel.getPort()));
         return props;
     }
 }

Modified: webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/http/HttpChannel.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/http/HttpChannel.java?rev=699731&r1=699730&r2=699731&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/http/HttpChannel.java (original)
+++ webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/http/HttpChannel.java Sat Sep 27 13:25:12 2008
@@ -35,7 +35,7 @@
     private void setUp() throws Exception {
         serviceName = "TestService-" + UUID.randomUUID();
         tunnel = new Tunnel(new InetSocketAddress("127.0.0.1", 8280));
-        new Thread(tunnel).start();
+        tunnel.start();
     }
     
     @SuppressWarnings("unused")

Added: webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Acceptor.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Acceptor.java?rev=699731&view=auto
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Acceptor.java (added)
+++ webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Acceptor.java Sat Sep 27 13:25:12 2008
@@ -0,0 +1,62 @@
+/*
+ *  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.axis2.transport.testkit.util.tcpmon;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.concurrent.ExecutorService;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class Acceptor implements Runnable {
+    private static final Log log = LogFactory.getLog(Acceptor.class);
+    
+    private final ServerSocket serverSocket;
+    private final ExecutorService executorService;
+    private final InetSocketAddress target;
+    
+    public Acceptor(ServerSocket serverSocket, ExecutorService executorService, InetSocketAddress target) {
+        this.serverSocket = serverSocket;
+        this.executorService = executorService;
+        this.target = target;
+    }
+
+    public void run() {
+        while (true) {
+            Socket socket;
+            try {
+                socket = serverSocket.accept();
+            } catch (IOException ex) {
+                break;
+            }
+            try {
+                Socket targetSocket = new Socket(target.getAddress(), target.getPort());
+                executorService.execute(new Relay("SENT", socket.getInputStream(), targetSocket.getOutputStream()));
+                executorService.execute(new Relay("RECEIVED", targetSocket.getInputStream(), socket.getOutputStream()));
+            } catch (IOException ex) {
+                log.error(ex);
+            }
+        }
+    }
+
+}

Modified: webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Tunnel.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Tunnel.java?rev=699731&r1=699730&r2=699731&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Tunnel.java (original)
+++ webservices/commons/trunk/modules/transport/modules/testkit/src/main/java/org/apache/axis2/transport/testkit/util/tcpmon/Tunnel.java Sat Sep 27 13:25:12 2008
@@ -22,16 +22,13 @@
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
-import java.net.Socket;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class Tunnel implements Runnable {
-    private static final Log log = LogFactory.getLog(Tunnel.class);
-    
+public class Tunnel {
     private final ServerSocket serverSocket;
     private final InetSocketAddress target;
+    private ExecutorService executorService;
     
     public Tunnel(InetSocketAddress target) throws IOException {
         serverSocket = new ServerSocket(0);
@@ -42,25 +39,13 @@
         return serverSocket.getLocalPort();
     }
     
-    public void run() {
-        while (true) {
-            Socket socket;
-            try {
-                socket = serverSocket.accept();
-            } catch (IOException ex) {
-                break;
-            }
-            try {
-                Socket targetSocket = new Socket(target.getAddress(), target.getPort());
-                new Thread(new Relay("SENT", socket.getInputStream(), targetSocket.getOutputStream())).start();
-                new Thread(new Relay("RECEIVED", targetSocket.getInputStream(), socket.getOutputStream())).start();
-            } catch (IOException ex) {
-                log.error(ex);
-            }
-        }
+    public void start() {
+        executorService = Executors.newCachedThreadPool();
+        executorService.execute(new Acceptor(serverSocket, executorService, target));
     }
     
     public void stop() throws IOException {
         serverSocket.close();
+        executorService.shutdown();
     }
 }