You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2017/02/02 14:26:45 UTC
[1/5] james-project git commit: PROTOCOLS-115 Use
ConcurrentTestRunner to handle threads
Repository: james-project
Updated Branches:
refs/heads/master 1456d3729 -> ac89a62f8
PROTOCOLS-115 Use ConcurrentTestRunner to handle threads
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c23ac898
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c23ac898
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c23ac898
Branch: refs/heads/master
Commit: c23ac898b92c092c83224236b7a4c2d865ab8150
Parents: 4eb5e7d
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Thu Feb 2 10:28:40 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Thu Feb 2 15:23:43 2017 +0100
----------------------------------------------------------------------
protocols/pom.xml | 7 ++-
protocols/smtp/pom.xml | 4 ++
.../protocols/smtp/AbstractSMTPServerTest.java | 55 ++++++--------------
3 files changed, 26 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/c23ac898/protocols/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/pom.xml b/protocols/pom.xml
index 3eb0ca3..1e44a27 100644
--- a/protocols/pom.xml
+++ b/protocols/pom.xml
@@ -65,7 +65,12 @@
</properties>
<dependencyManagement>
- <dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>james-server-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.james.protocols</groupId>
<artifactId>protocols-pop3</artifactId>
http://git-wip-us.apache.org/repos/asf/james-project/blob/c23ac898/protocols/smtp/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/smtp/pom.xml b/protocols/smtp/pom.xml
index b96cc1d..7f4c049 100644
--- a/protocols/smtp/pom.xml
+++ b/protocols/smtp/pom.xml
@@ -35,6 +35,10 @@
<dependencies>
<dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>james-server-util</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.james.protocols</groupId>
<artifactId>protocols-api</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/c23ac898/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
index d5027e8..27b3804 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.james.protocols.smtp;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -30,6 +31,7 @@ import java.net.SocketException;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.configuration.Configuration;
@@ -52,6 +54,7 @@ import org.apache.james.protocols.smtp.hook.MailHook;
import org.apache.james.protocols.smtp.hook.MessageHook;
import org.apache.james.protocols.smtp.hook.RcptHook;
import org.apache.james.protocols.smtp.utils.TestMessageHook;
+import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.junit.Test;
import com.google.common.base.Charsets;
@@ -99,21 +102,20 @@ public abstract class AbstractSMTPServerTest {
try {
server = createServer(createProtocol(hook));
server.bind();
- InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
- String mailContent = CharStreams.toString(new InputStreamReader(ClassLoader.getSystemResourceAsStream("a50.eml"), Charsets.US_ASCII));
- Thread thread1 = new SendThread(server, bindedAddress, mailContent);
- Thread thread2 = new SendThread(server, bindedAddress, mailContent);
- Thread thread3 = new SendThread(server, bindedAddress, mailContent);
- Thread thread4 = new SendThread(server, bindedAddress, mailContent);
- thread1.start();
- thread2.start();
- thread3.start();
- thread4.start();
- thread1.join(1000);
- thread2.join(1000);
- thread3.join(1000);
- thread4.join(1000);
+ final ProtocolServer finalServer = server;
+ final InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
+ final String mailContent = CharStreams.toString(new InputStreamReader(ClassLoader.getSystemResourceAsStream("a50.eml"), Charsets.US_ASCII));
+ int threadCount = 4;
+ int updateCount = 1;
+ assertThat(new ConcurrentTestRunner(threadCount, updateCount, new ConcurrentTestRunner.BiConsumer() {
+ @Override
+ public void consume(int threadNumber, int step) throws Exception {
+ send(finalServer, bindedAddress, mailContent);
+ }
+ }).run()
+ .awaitTermination(1, TimeUnit.MINUTES))
+ .isTrue();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
assertTrue(queued.hasNext());
@@ -137,31 +139,6 @@ public abstract class AbstractSMTPServerTest {
}
}
}
-
- public class SendThread extends Thread {
- private ProtocolServer server;
- private InetSocketAddress bindedAddress;
- private String msg;
-
- public SendThread(ProtocolServer server, InetSocketAddress bindedAddress, String msg) {
- this.server = server;
- this.bindedAddress = bindedAddress;
- this.msg = msg;
- }
-
- @Override
- public void run() {
- try {
- send(server, bindedAddress, msg);
- } catch (SocketException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
private void send(ProtocolServer server, InetSocketAddress bindedAddress, String msg) throws SocketException, IOException {
SMTPClient client = createClient();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[5/5] james-project git commit: PROTOCOLS-115 Migrate
AbstractSMTPServerTest to Assertj
Posted by ad...@apache.org.
PROTOCOLS-115 Migrate AbstractSMTPServerTest to Assertj
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ac89a62f
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ac89a62f
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ac89a62f
Branch: refs/heads/master
Commit: ac89a62f871cf57153e1c88ac75a474358b69526
Parents: c23ac89
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Thu Feb 2 11:47:26 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Thu Feb 2 15:23:44 2017 +0100
----------------------------------------------------------------------
protocols/lmtp/pom.xml | 6 +
.../protocols/smtp/AbstractSMTPServerTest.java | 229 +++++++++----------
2 files changed, 119 insertions(+), 116 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/ac89a62f/protocols/lmtp/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/lmtp/pom.xml b/protocols/lmtp/pom.xml
index b970fdc..65e7260 100644
--- a/protocols/lmtp/pom.xml
+++ b/protocols/lmtp/pom.xml
@@ -69,6 +69,12 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <version>${assertj-1.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/ac89a62f/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
index 27b3804..f6f7d16 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
@@ -19,9 +19,6 @@
package org.apache.james.protocols.smtp;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
import java.io.BufferedReader;
import java.io.IOException;
@@ -81,11 +78,11 @@ public abstract class AbstractSMTPServerTest {
send(server, bindedAddress, MSG1);
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertTrue(queued.hasNext());
+ assertThat(queued.hasNext()).isTrue();
MailEnvelope env = queued.next();
checkEnvelope(env, SENDER, Arrays.asList(RCPT1, RCPT2), MSG1);
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -118,20 +115,20 @@ public abstract class AbstractSMTPServerTest {
.isTrue();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertTrue(queued.hasNext());
+ assertThat(queued.hasNext()).isTrue();
MailEnvelope env = queued.next();
checkEnvelope(env, SENDER, Arrays.asList(RCPT1, RCPT2), mailContent);
- assertTrue(queued.hasNext());
+ assertThat(queued.hasNext()).isTrue();
MailEnvelope env2 = queued.next();
checkEnvelope(env2, SENDER, Arrays.asList(RCPT1, RCPT2), mailContent);
- assertTrue(queued.hasNext());
+ assertThat(queued.hasNext()).isTrue();
MailEnvelope env3 = queued.next();
checkEnvelope(env3, SENDER, Arrays.asList(RCPT1, RCPT2), mailContent);
- assertTrue(queued.hasNext());
+ assertThat(queued.hasNext()).isTrue();
MailEnvelope env4 = queued.next();
checkEnvelope(env4, SENDER, Arrays.asList(RCPT1, RCPT2), mailContent);
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -143,25 +140,25 @@ public abstract class AbstractSMTPServerTest {
private void send(ProtocolServer server, InetSocketAddress bindedAddress, String msg) throws SocketException, IOException {
SMTPClient client = createClient();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.helo("localhost");
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT1);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT2);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
- assertTrue(client.sendShortMessageData(msg));
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(client.sendShortMessageData(msg)).isTrue();
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
}
@@ -177,17 +174,17 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.sendCommand("STARTTLS");
- assertTrue(SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -209,17 +206,17 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.sendCommand("UNKNOWN");
- assertTrue(SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -241,17 +238,17 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.noop();
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -274,25 +271,25 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.helo("localhost");
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.mail("invalid");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT1);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -316,17 +313,17 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.helo("");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -349,25 +346,25 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.helo("localhost");
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.rcpt(RCPT1);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -392,25 +389,25 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.mail(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT1);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -433,19 +430,19 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -469,19 +466,19 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
if (server != null) {
@@ -519,15 +516,15 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
} finally {
@@ -566,15 +563,15 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativeTransient(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativeTransient(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
} finally {
@@ -612,18 +609,18 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
} finally {
@@ -661,18 +658,18 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativeTransient(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativeTransient(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
} finally {
@@ -716,25 +713,25 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT1);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT2);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
} finally {
@@ -779,25 +776,25 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT1);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativeTransient(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativeTransient(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT2);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
} finally {
@@ -818,21 +815,21 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender("");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT1);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
} finally {
@@ -874,27 +871,27 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT2);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
- assertFalse(client.sendShortMessageData(MSG1));
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(client.sendShortMessageData(MSG1)).isFalse();
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = testHook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
@@ -937,27 +934,27 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.helo("localhost");
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.addRecipient(RCPT2);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
- assertFalse(client.sendShortMessageData(MSG1));
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativeTransient(client.getReplyCode()));
+ assertThat(client.sendShortMessageData(MSG1)).isFalse();
+ assertThat(SMTPReply.isNegativeTransient(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Iterator<MailEnvelope> queued = testHook.getQueued().iterator();
- assertFalse(queued.hasNext());
+ assertThat(queued.hasNext()).isFalse();
} finally {
@@ -998,7 +995,7 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativePermanent(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativePermanent(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
@@ -1039,7 +1036,7 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isNegativeTransient(client.getReplyCode()));
+ assertThat(SMTPReply.isNegativeTransient(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
@@ -1081,12 +1078,12 @@ public abstract class AbstractSMTPServerTest {
SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ assertThat(SMTPReply.isPositiveCompletion(client.getReplyCode())).as("Reply="+ client.getReplyString()).isTrue();
client.disconnect();
Thread.sleep(1000);
- assertTrue(called.get());
+ assertThat(called.get()).isTrue();
} finally {
@@ -1112,13 +1109,13 @@ public abstract class AbstractSMTPServerTest {
}
protected static void checkEnvelope(MailEnvelope env, String sender, List<String> recipients, String msg) throws IOException {
- assertEquals(sender, env.getSender().toString());
+ assertThat(env.getSender().toString()).isEqualTo(sender);
List<MailAddress> envRecipients = env.getRecipients();
- assertEquals(recipients.size(), envRecipients.size());
+ assertThat(envRecipients.size()).isEqualTo(recipients.size());
for (int i = 0; i < recipients.size(); i++) {
MailAddress address = envRecipients.get(i);
- assertEquals(recipients.get(i), address.toString());
+ assertThat(address.toString()).isEqualTo(recipients.get(i));
}
BufferedReader reader = null;
@@ -1140,9 +1137,9 @@ public abstract class AbstractSMTPServerTest {
}
String msgQueued = sb.subSequence(0, sb.length()).toString();
- assertEquals(msg.length(), msgQueued.length());
+ assertThat(msgQueued.length()).isEqualTo(msg.length());
for (int i = 0; i < msg.length(); i++) {
- assertEquals(msg.charAt(i), msgQueued.charAt(i));
+ assertThat(msgQueued.charAt(i)).isEqualTo(msg.charAt(i));
}
} finally {
if (reader != null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/5] james-project git commit: PROTOCOL-115 Move
ConcurrentTestRunner to james-util
Posted by ad...@apache.org.
PROTOCOL-115 Move ConcurrentTestRunner to james-util
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4eb5e7df
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4eb5e7df
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4eb5e7df
Branch: refs/heads/master
Commit: 4eb5e7dfd86a17e0e936c1a2e68e7b477acb8a34
Parents: d4f18a9
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Thu Feb 2 10:12:19 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Thu Feb 2 15:23:43 2017 +0100
----------------------------------------------------------------------
mailbox/pom.xml | 5 +
mailbox/store/pom.xml | 5 +
.../store/mail/model/MessageIdMapperTest.java | 2 +-
.../store/mail/model/MessageMapperTest.java | 2 +-
.../model/concurrency/ConcurrentTestRunner.java | 90 -------------
.../concurrency/ConcurrentTestRunnerTest.java | 135 -------------------
.../util/concurrency/ConcurrentTestRunner.java | 90 +++++++++++++
.../concurrency/ConcurrentTestRunnerTest.java | 135 +++++++++++++++++++
8 files changed, 237 insertions(+), 227 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/4eb5e7df/mailbox/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/pom.xml b/mailbox/pom.xml
index c4699f6..e838610 100644
--- a/mailbox/pom.xml
+++ b/mailbox/pom.xml
@@ -215,6 +215,11 @@
<artifactId>apache-james-mailbox-tool</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>james-server-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<!--
END Modules
-->
http://git-wip-us.apache.org/repos/asf/james-project/blob/4eb5e7df/mailbox/store/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml
index f6f10b0..52d16de 100644
--- a/mailbox/store/pom.xml
+++ b/mailbox/store/pom.xml
@@ -38,6 +38,11 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>james-server-util</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>apache-mime4j-core</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/4eb5e7df/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index 5ede73c..0770ec1 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -43,10 +43,10 @@ import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.MessageIdMapper;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
-import org.apache.james.mailbox.store.mail.model.concurrency.ConcurrentTestRunner;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.assertj.core.data.MapEntry;
import org.junit.After;
import org.junit.Assume;
http://git-wip-us.apache.org/repos/asf/james-project/blob/4eb5e7df/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index ccbb0f2..6fdb35a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -46,10 +46,10 @@ import org.apache.james.mailbox.store.FlagsUpdateCalculator;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
-import org.apache.james.mailbox.store.mail.model.concurrency.ConcurrentTestRunner;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.junit.After;
import org.junit.Assume;
import org.junit.Rule;
http://git-wip-us.apache.org/repos/asf/james-project/blob/4eb5e7df/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunner.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunner.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunner.java
deleted file mode 100644
index 35be61e..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunner.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************
- * 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.james.mailbox.store.mail.model.concurrency;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Preconditions;
-
-public class ConcurrentTestRunner {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(ConcurrentTestRunner.class);
-
- public interface BiConsumer {
- void consume(int threadNumber, int step) throws Exception;
- }
-
- private class ConcurrentRunnableTask implements Runnable {
- private final int threadNumber;
- private final BiConsumer biConsumer;
-
- public ConcurrentRunnableTask(int threadNumber, BiConsumer biConsumer) {
- this.threadNumber = threadNumber;
- this.biConsumer = biConsumer;
- }
-
- @Override
- public void run() {
- countDownLatch.countDown();
- for (int i = 0; i < operationCount; i++) {
- try {
- biConsumer.consume(threadNumber, i);
- } catch (Exception e) {
- LOGGER.error("Error caught during concurrent testing", e);
- }
- }
- }
- }
-
- private final int threadCount;
- private final int operationCount;
- private final CountDownLatch countDownLatch;
- private final BiConsumer biConsumer;
- private final ExecutorService executorService;
-
- public ConcurrentTestRunner(int threadCount, int operationCount, BiConsumer biConsumer) {
- Preconditions.checkArgument(threadCount > 0, "Thread count should be strictly positive");
- Preconditions.checkArgument(operationCount > 0, "Operation count should be strictly positive");
- Preconditions.checkNotNull(biConsumer);
- this.threadCount = threadCount;
- this.operationCount = operationCount;
- this.countDownLatch = new CountDownLatch(threadCount);
- this.biConsumer = biConsumer;
- this.executorService = Executors.newFixedThreadPool(threadCount);
- }
-
- public ConcurrentTestRunner run() {
- for (int i = 0; i < threadCount; i++) {
- executorService.submit(new ConcurrentRunnableTask(i, biConsumer));
- }
- return this;
- }
-
- public boolean awaitTermination(long time, TimeUnit unit) throws InterruptedException {
- executorService.shutdown();
- return executorService.awaitTermination(time, unit);
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/4eb5e7df/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java
deleted file mode 100644
index 302ed9e..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/concurrency/ConcurrentTestRunnerTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************
- * 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.james.mailbox.store.mail.model.concurrency;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.TimeUnit;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-public class ConcurrentTestRunnerTest {
-
- public static final ConcurrentTestRunner.BiConsumer EMPTY_BI_CONSUMER = new ConcurrentTestRunner.BiConsumer() {
- @Override
- public void consume(int threadNumber, int step) throws Exception {
-
- }
- };
- public static final int DEFAULT_AWAIT_TIME = 100;
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- @Test
- public void constructorShouldThrowOnNegativeThreadCount() {
- expectedException.expect(IllegalArgumentException.class);
-
- int operationCount = 1;
- int threadCount = -1;
- new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER);
- }
-
- @Test
- public void constructorShouldThrowOnNegativeOperationCount() {
- expectedException.expect(IllegalArgumentException.class);
-
- int operationCount = -1;
- int threadCount = 1;
- new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER);
- }
-
- @Test
- public void constructorShouldThrowOnZeroThreadCount() {
- expectedException.expect(IllegalArgumentException.class);
-
- int operationCount = 1;
- int threadCount = 0;
- new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER);
- }
-
- @Test
- public void constructorShouldThrowOnZeroOperationCount() {
- expectedException.expect(IllegalArgumentException.class);
-
- int operationCount = 0;
- int threadCount = 1;
- new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER);
- }
-
- @Test
- public void constructorShouldThrowOnNullBiConsumer() {
- expectedException.expect(NullPointerException.class);
-
- int operationCount = 1;
- int threadCount = 1;
- new ConcurrentTestRunner(threadCount, operationCount, null);
- }
-
- @Test
- public void awaitTerminationShouldReturnTrueWhenFinished() throws Exception {
- int operationCount = 1;
- int threadCount = 1;
-
- ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER)
- .run();
-
- assertThat(concurrentTestRunner.awaitTermination(DEFAULT_AWAIT_TIME, TimeUnit.MILLISECONDS)).isTrue();
- }
-
- @Test
- public void awaitTerminationShouldReturnFalseWhenNotFinished() throws Exception {
- int operationCount = 1;
- int threadCount = 1;
- final int sleepDelay = 50;
-
- ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
- new ConcurrentTestRunner.BiConsumer() {
- @Override
- public void consume(int threadNumber, int step) throws Exception {
- Thread.sleep(sleepDelay);
- }
- })
- .run();
-
- assertThat(concurrentTestRunner.awaitTermination(sleepDelay / 2, TimeUnit.MILLISECONDS)).isFalse();
- }
-
- @Test
- public void runShouldPerformAllOperations() throws Exception {
- int operationCount = 2;
- int threadCount = 2;
- final ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<String>();
-
- ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
- new ConcurrentTestRunner.BiConsumer() {
- @Override
- public void consume(int threadNumber, int step) throws Exception {
- queue.add(threadNumber + ":" + step);
- }
- })
- .run();
-
- assertThat(concurrentTestRunner.awaitTermination(DEFAULT_AWAIT_TIME, TimeUnit.MILLISECONDS)).isTrue();
- assertThat(queue).containsOnly("0:0", "0:1", "1:0", "1:1");
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/4eb5e7df/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java b/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java
new file mode 100644
index 0000000..0a4fa40
--- /dev/null
+++ b/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java
@@ -0,0 +1,90 @@
+/****************************************************************
+ * 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.james.util.concurrency;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Preconditions;
+
+public class ConcurrentTestRunner {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ConcurrentTestRunner.class);
+
+ public interface BiConsumer {
+ void consume(int threadNumber, int step) throws Exception;
+ }
+
+ private class ConcurrentRunnableTask implements Runnable {
+ private final int threadNumber;
+ private final BiConsumer biConsumer;
+
+ public ConcurrentRunnableTask(int threadNumber, BiConsumer biConsumer) {
+ this.threadNumber = threadNumber;
+ this.biConsumer = biConsumer;
+ }
+
+ @Override
+ public void run() {
+ countDownLatch.countDown();
+ for (int i = 0; i < operationCount; i++) {
+ try {
+ biConsumer.consume(threadNumber, i);
+ } catch (Exception e) {
+ LOGGER.error("Error caught during concurrent testing", e);
+ }
+ }
+ }
+ }
+
+ private final int threadCount;
+ private final int operationCount;
+ private final CountDownLatch countDownLatch;
+ private final BiConsumer biConsumer;
+ private final ExecutorService executorService;
+
+ public ConcurrentTestRunner(int threadCount, int operationCount, BiConsumer biConsumer) {
+ Preconditions.checkArgument(threadCount > 0, "Thread count should be strictly positive");
+ Preconditions.checkArgument(operationCount > 0, "Operation count should be strictly positive");
+ Preconditions.checkNotNull(biConsumer);
+ this.threadCount = threadCount;
+ this.operationCount = operationCount;
+ this.countDownLatch = new CountDownLatch(threadCount);
+ this.biConsumer = biConsumer;
+ this.executorService = Executors.newFixedThreadPool(threadCount);
+ }
+
+ public ConcurrentTestRunner run() {
+ for (int i = 0; i < threadCount; i++) {
+ executorService.submit(new ConcurrentRunnableTask(i, biConsumer));
+ }
+ return this;
+ }
+
+ public boolean awaitTermination(long time, TimeUnit unit) throws InterruptedException {
+ executorService.shutdown();
+ return executorService.awaitTermination(time, unit);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/4eb5e7df/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java b/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java
new file mode 100644
index 0000000..98bde34
--- /dev/null
+++ b/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java
@@ -0,0 +1,135 @@
+/****************************************************************
+ * 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.james.util.concurrency;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class ConcurrentTestRunnerTest {
+
+ public static final ConcurrentTestRunner.BiConsumer EMPTY_BI_CONSUMER = new ConcurrentTestRunner.BiConsumer() {
+ @Override
+ public void consume(int threadNumber, int step) throws Exception {
+
+ }
+ };
+ public static final int DEFAULT_AWAIT_TIME = 100;
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void constructorShouldThrowOnNegativeThreadCount() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ int operationCount = 1;
+ int threadCount = -1;
+ new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER);
+ }
+
+ @Test
+ public void constructorShouldThrowOnNegativeOperationCount() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ int operationCount = -1;
+ int threadCount = 1;
+ new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER);
+ }
+
+ @Test
+ public void constructorShouldThrowOnZeroThreadCount() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ int operationCount = 1;
+ int threadCount = 0;
+ new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER);
+ }
+
+ @Test
+ public void constructorShouldThrowOnZeroOperationCount() {
+ expectedException.expect(IllegalArgumentException.class);
+
+ int operationCount = 0;
+ int threadCount = 1;
+ new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER);
+ }
+
+ @Test
+ public void constructorShouldThrowOnNullBiConsumer() {
+ expectedException.expect(NullPointerException.class);
+
+ int operationCount = 1;
+ int threadCount = 1;
+ new ConcurrentTestRunner(threadCount, operationCount, null);
+ }
+
+ @Test
+ public void awaitTerminationShouldReturnTrueWhenFinished() throws Exception {
+ int operationCount = 1;
+ int threadCount = 1;
+
+ ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER)
+ .run();
+
+ assertThat(concurrentTestRunner.awaitTermination(DEFAULT_AWAIT_TIME, TimeUnit.MILLISECONDS)).isTrue();
+ }
+
+ @Test
+ public void awaitTerminationShouldReturnFalseWhenNotFinished() throws Exception {
+ int operationCount = 1;
+ int threadCount = 1;
+ final int sleepDelay = 50;
+
+ ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
+ new ConcurrentTestRunner.BiConsumer() {
+ @Override
+ public void consume(int threadNumber, int step) throws Exception {
+ Thread.sleep(sleepDelay);
+ }
+ })
+ .run();
+
+ assertThat(concurrentTestRunner.awaitTermination(sleepDelay / 2, TimeUnit.MILLISECONDS)).isFalse();
+ }
+
+ @Test
+ public void runShouldPerformAllOperations() throws Exception {
+ int operationCount = 2;
+ int threadCount = 2;
+ final ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<String>();
+
+ ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
+ new ConcurrentTestRunner.BiConsumer() {
+ @Override
+ public void consume(int threadNumber, int step) throws Exception {
+ queue.add(threadNumber + ":" + step);
+ }
+ })
+ .run();
+
+ assertThat(concurrentTestRunner.awaitTermination(DEFAULT_AWAIT_TIME, TimeUnit.MILLISECONDS)).isTrue();
+ assertThat(queue).containsOnly("0:0", "0:1", "1:0", "1:1");
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[4/5] james-project git commit: PROTOCOLS-115 A new FrameHandler
should be user for each pipeline
Posted by ad...@apache.org.
PROTOCOLS-115 A new FrameHandler should be user for each pipeline
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d4f18a98
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d4f18a98
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d4f18a98
Branch: refs/heads/master
Commit: d4f18a98d27db2a1e3410c85f5183d3457c79867
Parents: 6595c21
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Jan 31 09:47:54 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Thu Feb 2 15:23:43 2017 +0100
----------------------------------------------------------------------
.../protocols/lmtp/AbstractLMTPServerTest.java | 15 ++-
.../netty/AbstractChannelPipelineFactory.java | 15 +--
.../AbstractSSLAwareChannelPipelineFactory.java | 9 +-
.../protocols/netty/ChannelHandlerFactory.java | 26 ++++
...LineDelimiterBasedChannelHandlerFactory.java | 37 ++++++
.../james/protocols/netty/NettyServer.java | 25 ++--
.../james/protocols/netty/NettyServerTest.java | 5 +-
protocols/smtp/pom.xml | 1 -
...rtTlsLineDelimiterChannelHandlerFactory.java | 37 ++++++
.../protocols/smtp/AbstractSMTPServerTest.java | 124 +++++++++++++++----
.../smtp/netty/NettyStartTlsSMTPServerTest.java | 5 +-
protocols/smtp/src/test/resources/a50.eml | 50 ++++++++
.../james/imapserver/netty/IMAPServer.java | 9 +-
...leLineDelimiterBasedFrameDecoderFactory.java | 37 ++++++
.../netty/AbstractConfigurableAsyncServer.java | 14 +--
...ractExecutorAwareChannelPipelineFactory.java | 10 +-
.../james/lmtpserver/netty/LMTPServer.java | 9 +-
.../netty/ManageSieveServer.java | 11 +-
.../james/pop3server/netty/POP3Server.java | 9 +-
.../james/smtpserver/netty/SMTPServer.java | 9 +-
20 files changed, 357 insertions(+), 100 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java b/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
index 3b4d1dd..333a961 100644
--- a/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
+++ b/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
@@ -50,6 +50,7 @@ import org.apache.james.protocols.smtp.hook.HookResult;
import org.apache.james.protocols.smtp.hook.HookReturnCode;
import org.apache.james.protocols.smtp.hook.MessageHook;
import org.apache.james.protocols.smtp.utils.TestMessageHook;
+import org.junit.Ignore;
import org.junit.Test;
public abstract class AbstractLMTPServerTest extends AbstractSMTPServerTest{
@@ -70,23 +71,27 @@ public abstract class AbstractLMTPServerTest extends AbstractSMTPServerTest{
return new SMTPProtocol(chain, new LMTPConfigurationImpl(), new MockLogger());
}
-
+
+ @Ignore("LMTP can't handle the queue")
+ @Override
+ public void testDeliveryWith4SimultaneousThreads() {
+ }
+
+ @Ignore("Disable")
@Override
public void testInvalidNoBracketsEnformance() throws Exception {
- // Disable
}
+ @Ignore("Disable")
@Override
public void testHeloEnforcement() throws Exception {
- // Disable
}
+ @Ignore("Disable")
@Override
public void testHeloEnforcementDisabled() throws Exception {
- // Disable
-
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractChannelPipelineFactory.java
----------------------------------------------------------------------
diff --git a/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractChannelPipelineFactory.java b/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractChannelPipelineFactory.java
index 39a5b5f..04a91ac 100644
--- a/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractChannelPipelineFactory.java
+++ b/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractChannelPipelineFactory.java
@@ -20,13 +20,10 @@ package org.apache.james.protocols.netty;
import static org.jboss.netty.channel.Channels.pipeline;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.channel.group.ChannelGroup;
-import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
-import org.jboss.netty.handler.codec.frame.Delimiters;
import org.jboss.netty.handler.execution.ExecutionHandler;
import org.jboss.netty.handler.stream.ChunkedWriteHandler;
import org.jboss.netty.util.ExternalResourceReleasable;
@@ -38,27 +35,27 @@ import org.jboss.netty.util.HashedWheelTimer;
*
*/
public abstract class AbstractChannelPipelineFactory implements ChannelPipelineFactory, ExternalResourceReleasable{
-
public final static int MAX_LINE_LENGTH = 8192;
+
protected final ConnectionLimitUpstreamHandler connectionLimitHandler;
protected final ConnectionPerIpLimitUpstreamHandler connectionPerIpLimitHandler;
private final HashedWheelTimer timer = new HashedWheelTimer();
private final ChannelGroupHandler groupHandler;
private final int timeout;
private final ExecutionHandler eHandler;
- private final ChannelHandler frameHandler;
+ private final ChannelHandlerFactory frameHandlerFactory;
public AbstractChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup channels) {
- this(timeout, maxConnections, maxConnectsPerIp, channels, null, new DelimiterBasedFrameDecoder(MAX_LINE_LENGTH, false, Delimiters.lineDelimiter()));
+ this(timeout, maxConnections, maxConnectsPerIp, channels, null, new LineDelimiterBasedChannelHandlerFactory(MAX_LINE_LENGTH));
}
public AbstractChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup channels, ExecutionHandler eHandler,
- ChannelHandler frameHandler) {
+ ChannelHandlerFactory frameHandlerFactory) {
this.connectionLimitHandler = new ConnectionLimitUpstreamHandler(maxConnections);
this.connectionPerIpLimitHandler = new ConnectionPerIpLimitUpstreamHandler(maxConnectsPerIp);
this.groupHandler = new ChannelGroupHandler(channels);
this.timeout = timeout;
this.eHandler = eHandler;
- this.frameHandler = frameHandler;
+ this.frameHandlerFactory = frameHandlerFactory;
}
@@ -76,7 +73,7 @@ public abstract class AbstractChannelPipelineFactory implements ChannelPipelineF
// Add the text line decoder which limit the max line length, don't strip the delimiter and use CRLF as delimiter
- pipeline.addLast(HandlerConstants.FRAMER, frameHandler);
+ pipeline.addLast(HandlerConstants.FRAMER, frameHandlerFactory.create());
// Add the ChunkedWriteHandler to be able to write ChunkInput
pipeline.addLast(HandlerConstants.CHUNK_HANDLER, new ChunkedWriteHandler());
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractSSLAwareChannelPipelineFactory.java
----------------------------------------------------------------------
diff --git a/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractSSLAwareChannelPipelineFactory.java b/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractSSLAwareChannelPipelineFactory.java
index e78695c..e40f0a1 100644
--- a/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractSSLAwareChannelPipelineFactory.java
+++ b/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractSSLAwareChannelPipelineFactory.java
@@ -21,7 +21,6 @@ package org.apache.james.protocols.netty;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.group.ChannelGroup;
import org.jboss.netty.handler.execution.ExecutionHandler;
@@ -39,14 +38,14 @@ public abstract class AbstractSSLAwareChannelPipelineFactory extends AbstractCha
public AbstractSSLAwareChannelPipelineFactory(int timeout,
int maxConnections, int maxConnectsPerIp, ChannelGroup group, ExecutionHandler eHandler,
- ChannelHandler frameHandler) {
- super(timeout, maxConnections, maxConnectsPerIp, group, eHandler, frameHandler);
+ ChannelHandlerFactory frameHandlerFactory) {
+ super(timeout, maxConnections, maxConnectsPerIp, group, eHandler, frameHandlerFactory);
}
public AbstractSSLAwareChannelPipelineFactory(int timeout,
int maxConnections, int maxConnectsPerIp, ChannelGroup group, String[] enabledCipherSuites, ExecutionHandler eHandler,
- ChannelHandler frameHandler) {
- this(timeout, maxConnections, maxConnectsPerIp, group, eHandler, frameHandler);
+ ChannelHandlerFactory frameHandlerFactory) {
+ this(timeout, maxConnections, maxConnectsPerIp, group, eHandler, frameHandlerFactory);
// We need to copy the String array becuase of possible security issues.
// See https://issues.apache.org/jira/browse/PROTOCOLS-18
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/netty/src/main/java/org/apache/james/protocols/netty/ChannelHandlerFactory.java
----------------------------------------------------------------------
diff --git a/protocols/netty/src/main/java/org/apache/james/protocols/netty/ChannelHandlerFactory.java b/protocols/netty/src/main/java/org/apache/james/protocols/netty/ChannelHandlerFactory.java
new file mode 100644
index 0000000..eba8210
--- /dev/null
+++ b/protocols/netty/src/main/java/org/apache/james/protocols/netty/ChannelHandlerFactory.java
@@ -0,0 +1,26 @@
+/****************************************************************
+ * 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.james.protocols.netty;
+
+import org.jboss.netty.channel.ChannelHandler;
+
+public interface ChannelHandlerFactory {
+ ChannelHandler create();
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/netty/src/main/java/org/apache/james/protocols/netty/LineDelimiterBasedChannelHandlerFactory.java
----------------------------------------------------------------------
diff --git a/protocols/netty/src/main/java/org/apache/james/protocols/netty/LineDelimiterBasedChannelHandlerFactory.java b/protocols/netty/src/main/java/org/apache/james/protocols/netty/LineDelimiterBasedChannelHandlerFactory.java
new file mode 100644
index 0000000..dcd9b7c
--- /dev/null
+++ b/protocols/netty/src/main/java/org/apache/james/protocols/netty/LineDelimiterBasedChannelHandlerFactory.java
@@ -0,0 +1,37 @@
+/****************************************************************
+ * 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.james.protocols.netty;
+
+import org.jboss.netty.channel.ChannelHandler;
+import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
+import org.jboss.netty.handler.codec.frame.Delimiters;
+
+public class LineDelimiterBasedChannelHandlerFactory implements ChannelHandlerFactory {
+ private final int maxLineLength;
+
+ public LineDelimiterBasedChannelHandlerFactory(int maxLineLength) {
+ this.maxLineLength = maxLineLength;
+ }
+
+ @Override
+ public ChannelHandler create() {
+ return new DelimiterBasedFrameDecoder(maxLineLength, false, Delimiters.lineDelimiter());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java
----------------------------------------------------------------------
diff --git a/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java b/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java
index d2a9285..eb983f9 100644
--- a/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java
+++ b/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java
@@ -24,12 +24,9 @@ import javax.net.ssl.SSLContext;
import org.apache.james.protocols.api.Encryption;
import org.apache.james.protocols.api.Protocol;
import org.apache.james.protocols.api.handler.ProtocolHandler;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.channel.group.ChannelGroup;
-import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
-import org.jboss.netty.handler.codec.frame.Delimiters;
import org.jboss.netty.handler.execution.ExecutionHandler;
import org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor;
@@ -49,11 +46,11 @@ public class NettyServer extends AbstractAsyncServer {
public static class Builder {
private Protocol protocol;
private Optional<Encryption> secure;
- private Optional<ChannelHandler> frameHandler;
+ private Optional<ChannelHandlerFactory> frameHandlerFactory;
private Builder() {
secure = Optional.absent();
- frameHandler = Optional.absent();
+ frameHandlerFactory = Optional.absent();
}
public Builder protocol(Protocol protocol) {
@@ -67,8 +64,8 @@ public class NettyServer extends AbstractAsyncServer {
return this;
}
- public Builder frameHandler(ChannelHandler frameHandler) {
- this.frameHandler = Optional.fromNullable(frameHandler);
+ public Builder frameHandlerFactory(ChannelHandlerFactory frameHandlerFactory) {
+ this.frameHandlerFactory = Optional.fromNullable(frameHandlerFactory);
return this;
}
@@ -76,13 +73,13 @@ public class NettyServer extends AbstractAsyncServer {
Preconditions.checkState(protocol != null, "'protocol' is mandatory");
return new NettyServer(protocol,
secure.orNull(),
- frameHandler.or(new DelimiterBasedFrameDecoder(AbstractChannelPipelineFactory.MAX_LINE_LENGTH, false, Delimiters.lineDelimiter())));
+ frameHandlerFactory.or(new LineDelimiterBasedChannelHandlerFactory(AbstractChannelPipelineFactory.MAX_LINE_LENGTH)));
}
}
protected final Protocol protocol;
protected final Encryption secure;
- private final ChannelHandler frameHandler;
+ private final ChannelHandlerFactory frameHandlerFactory;
private ExecutionHandler eHandler;
@@ -92,10 +89,10 @@ public class NettyServer extends AbstractAsyncServer {
private int maxCurConnectionsPerIP;
- private NettyServer(Protocol protocol, Encryption secure, ChannelHandler frameHandler) {
+ private NettyServer(Protocol protocol, Encryption secure, ChannelHandlerFactory frameHandlerFactory) {
this.protocol = protocol;
this.secure = secure;
- this.frameHandler = frameHandler;
+ this.frameHandlerFactory = frameHandlerFactory;
}
protected ExecutionHandler createExecutionHandler(int size) {
@@ -141,14 +138,14 @@ public class NettyServer extends AbstractAsyncServer {
super.bind();
}
- private ChannelHandler getFrameHandler() {
- return frameHandler;
+ private ChannelHandlerFactory getFrameHandlerFactory() {
+ return frameHandlerFactory;
}
@Override
protected ChannelPipelineFactory createPipelineFactory(ChannelGroup group) {
- return new AbstractSSLAwareChannelPipelineFactory(getTimeout(), maxCurConnections, maxCurConnectionsPerIP, group, eHandler, getFrameHandler()) {
+ return new AbstractSSLAwareChannelPipelineFactory(getTimeout(), maxCurConnections, maxCurConnectionsPerIP, group, eHandler, getFrameHandlerFactory()) {
@Override
protected ChannelUpstreamHandler createHandler() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/netty/src/test/java/org/apache/james/protocols/netty/NettyServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/netty/src/test/java/org/apache/james/protocols/netty/NettyServerTest.java b/protocols/netty/src/test/java/org/apache/james/protocols/netty/NettyServerTest.java
index 1d327db..facb52f 100644
--- a/protocols/netty/src/test/java/org/apache/james/protocols/netty/NettyServerTest.java
+++ b/protocols/netty/src/test/java/org/apache/james/protocols/netty/NettyServerTest.java
@@ -25,7 +25,6 @@ import javax.net.ssl.SSLContext;
import org.apache.james.protocols.api.Encryption;
import org.apache.james.protocols.api.Protocol;
-import org.jboss.netty.channel.ChannelHandler;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -61,11 +60,11 @@ public class NettyServerTest {
public void buildShouldWorkWhenEverythingIsGiven() throws Exception {
Protocol protocol = mock(Protocol.class);
Encryption encryption = Encryption.createStartTls(SSLContext.getDefault());
- ChannelHandler channelHandler = mock(ChannelHandler.class);
+ ChannelHandlerFactory channelHandlerFactory = mock(ChannelHandlerFactory.class);
NettyServer.builder()
.protocol(protocol)
.secure(encryption)
- .frameHandler(channelHandler)
+ .frameHandlerFactory(channelHandlerFactory)
.build();
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/smtp/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/smtp/pom.xml b/protocols/smtp/pom.xml
index a9f913f..b96cc1d 100644
--- a/protocols/smtp/pom.xml
+++ b/protocols/smtp/pom.xml
@@ -47,7 +47,6 @@
<dependency>
<groupId>org.apache.james.protocols</groupId>
<artifactId>protocols-netty</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsLineDelimiterChannelHandlerFactory.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsLineDelimiterChannelHandlerFactory.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsLineDelimiterChannelHandlerFactory.java
new file mode 100644
index 0000000..de33ac6
--- /dev/null
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsLineDelimiterChannelHandlerFactory.java
@@ -0,0 +1,37 @@
+/****************************************************************
+ * 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.james.protocols.smtp;
+
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
+import org.jboss.netty.channel.ChannelHandler;
+import org.jboss.netty.handler.codec.frame.Delimiters;
+
+public class AllButStartTlsLineDelimiterChannelHandlerFactory implements ChannelHandlerFactory {
+
+ private int maxFrameLength;
+
+ public AllButStartTlsLineDelimiterChannelHandlerFactory(int maxFrameLength) {
+ this.maxFrameLength = maxFrameLength;
+ }
+
+ @Override
+ public ChannelHandler create() {
+ return new AllButStartTlsDelimiterChannelHandler(maxFrameLength, false, Delimiters.lineDelimiter());
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
index 801cf3b..d5027e8 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
@@ -26,6 +26,7 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetSocketAddress;
+import java.net.SocketException;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
@@ -53,9 +54,12 @@ import org.apache.james.protocols.smtp.hook.RcptHook;
import org.apache.james.protocols.smtp.utils.TestMessageHook;
import org.junit.Test;
+import com.google.common.base.Charsets;
+import com.google.common.io.CharStreams;
+
public abstract class AbstractSMTPServerTest {
- protected final static String MSG1 = "Subject: Testmessage\r\n\r\nThis is a message";
+ protected final static String MSG1 = "Subject: Testmessage\r\n\r\nThis is a message\r\n";
protected final static String SENDER = "me@sender";
protected final static String RCPT1 ="rpct1@domain";
protected final static String RCPT2 ="rpct2@domain";
@@ -69,35 +73,62 @@ public abstract class AbstractSMTPServerTest {
server = createServer(createProtocol(hook));
server.bind();
- SMTPClient client = createClient();
InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
- client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
-
- client.helo("localhost");
- assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
- client.setSender(SENDER);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ send(server, bindedAddress, MSG1);
- client.addRecipient(RCPT1);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ Iterator<MailEnvelope> queued = hook.getQueued().iterator();
+ assertTrue(queued.hasNext());
+
+ MailEnvelope env = queued.next();
+ checkEnvelope(env, SENDER, Arrays.asList(RCPT1, RCPT2), MSG1);
+ assertFalse(queued.hasNext());
- client.addRecipient(RCPT2);
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ } finally {
+ if (server != null) {
+ server.unbind();
+ }
+ }
+
+ }
+
+ @Test
+ public void testDeliveryWith4SimultaneousThreads() throws Exception {
+ TestMessageHook hook = new TestMessageHook();
+ ProtocolServer server = null;
+ try {
+ server = createServer(createProtocol(hook));
+ server.bind();
+ InetSocketAddress bindedAddress = new ProtocolServerUtils(server).retrieveBindedAddress();
- assertTrue(client.sendShortMessageData(MSG1));
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
-
- client.quit();
- assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
- client.disconnect();
+ String mailContent = CharStreams.toString(new InputStreamReader(ClassLoader.getSystemResourceAsStream("a50.eml"), Charsets.US_ASCII));
+ Thread thread1 = new SendThread(server, bindedAddress, mailContent);
+ Thread thread2 = new SendThread(server, bindedAddress, mailContent);
+ Thread thread3 = new SendThread(server, bindedAddress, mailContent);
+ Thread thread4 = new SendThread(server, bindedAddress, mailContent);
+ thread1.start();
+ thread2.start();
+ thread3.start();
+ thread4.start();
+ thread1.join(1000);
+ thread2.join(1000);
+ thread3.join(1000);
+ thread4.join(1000);
Iterator<MailEnvelope> queued = hook.getQueued().iterator();
assertTrue(queued.hasNext());
-
+
MailEnvelope env = queued.next();
- checkEnvelope(env, SENDER, Arrays.asList(RCPT1, RCPT2), MSG1);
+ checkEnvelope(env, SENDER, Arrays.asList(RCPT1, RCPT2), mailContent);
+ assertTrue(queued.hasNext());
+ MailEnvelope env2 = queued.next();
+ checkEnvelope(env2, SENDER, Arrays.asList(RCPT1, RCPT2), mailContent);
+ assertTrue(queued.hasNext());
+ MailEnvelope env3 = queued.next();
+ checkEnvelope(env3, SENDER, Arrays.asList(RCPT1, RCPT2), mailContent);
+ assertTrue(queued.hasNext());
+ MailEnvelope env4 = queued.next();
+ checkEnvelope(env4, SENDER, Arrays.asList(RCPT1, RCPT2), mailContent);
assertFalse(queued.hasNext());
} finally {
@@ -105,7 +136,56 @@ public abstract class AbstractSMTPServerTest {
server.unbind();
}
}
+ }
+
+ public class SendThread extends Thread {
+ private ProtocolServer server;
+ private InetSocketAddress bindedAddress;
+ private String msg;
+
+ public SendThread(ProtocolServer server, InetSocketAddress bindedAddress, String msg) {
+ this.server = server;
+ this.bindedAddress = bindedAddress;
+ this.msg = msg;
+ }
+
+ @Override
+ public void run() {
+ try {
+ send(server, bindedAddress, msg);
+ } catch (SocketException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private void send(ProtocolServer server, InetSocketAddress bindedAddress, String msg) throws SocketException, IOException {
+ SMTPClient client = createClient();
+ client.connect(bindedAddress.getAddress().getHostAddress(), bindedAddress.getPort());
+ assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+
+ client.helo("localhost");
+ assertTrue(SMTPReply.isPositiveCompletion(client.getReplyCode()));
+
+ client.setSender(SENDER);
+ assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+
+ client.addRecipient(RCPT1);
+ assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+
+ client.addRecipient(RCPT2);
+ assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+
+ assertTrue(client.sendShortMessageData(msg));
+ assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ client.quit();
+ assertTrue("Reply="+ client.getReplyString(), SMTPReply.isPositiveCompletion(client.getReplyCode()));
+ client.disconnect();
}
@Test
@@ -1081,7 +1161,7 @@ public abstract class AbstractSMTPServerTest {
sb.append("\r\n");
}
}
- String msgQueued = sb.subSequence(0, sb.length() - 2).toString();
+ String msgQueued = sb.subSequence(0, sb.length()).toString();
assertEquals(msg.length(), msgQueued.length());
for (int i = 0; i < msg.length(); i++) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java
index e0ae441..3c4edd7 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java
@@ -44,13 +44,12 @@ import org.apache.james.protocols.api.utils.MockLogger;
import org.apache.james.protocols.api.utils.ProtocolServerUtils;
import org.apache.james.protocols.netty.AbstractChannelPipelineFactory;
import org.apache.james.protocols.netty.NettyServer;
-import org.apache.james.protocols.smtp.AllButStartTlsDelimiterChannelHandler;
+import org.apache.james.protocols.smtp.AllButStartTlsLineDelimiterChannelHandlerFactory;
import org.apache.james.protocols.smtp.SMTPConfigurationImpl;
import org.apache.james.protocols.smtp.SMTPProtocol;
import org.apache.james.protocols.smtp.SMTPProtocolHandlerChain;
import org.apache.james.protocols.smtp.utils.TestMessageHook;
import org.assertj.core.api.AssertDelegateTarget;
-import org.jboss.netty.handler.codec.frame.Delimiters;
import org.junit.After;
import org.junit.Test;
@@ -75,7 +74,7 @@ public class NettyStartTlsSMTPServerTest {
NettyServer server = NettyServer.builder()
.protocol(protocol)
.secure(enc)
- .frameHandler(new AllButStartTlsDelimiterChannelHandler(AbstractChannelPipelineFactory.MAX_LINE_LENGTH, false, Delimiters.lineDelimiter()))
+ .frameHandlerFactory(new AllButStartTlsLineDelimiterChannelHandlerFactory(AbstractChannelPipelineFactory.MAX_LINE_LENGTH))
.build();
server.setListenAddresses(new InetSocketAddress(LOCALHOST_IP, RANDOM_PORT));
return server;
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/protocols/smtp/src/test/resources/a50.eml
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/resources/a50.eml b/protocols/smtp/src/test/resources/a50.eml
new file mode 100644
index 0000000..2dc5903
--- /dev/null
+++ b/protocols/smtp/src/test/resources/a50.eml
@@ -0,0 +1,50 @@
+Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+Message-ID: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X-Sender: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+User-Agent: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
index 371c50a..cc9c300 100644
--- a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
+++ b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
@@ -33,14 +33,13 @@ import org.apache.james.imap.encode.ImapEncoder;
import org.apache.james.protocols.api.Encryption;
import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
import org.apache.james.protocols.netty.ChannelGroupHandler;
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
import org.apache.james.protocols.netty.ConnectionLimitUpstreamHandler;
import org.apache.james.protocols.netty.ConnectionPerIpLimitUpstreamHandler;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.channel.group.ChannelGroup;
-import org.jboss.netty.handler.codec.frame.Delimiters;
import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
import org.jboss.netty.handler.execution.ExecutionHandler;
import org.jboss.netty.handler.ssl.SslHandler;
@@ -140,7 +139,7 @@ public class IMAPServer extends AbstractConfigurableAsyncServer implements ImapC
// Add the text line decoder which limit the max line length,
// don't strip the delimiter and use CRLF as delimiter
// Use a SwitchableDelimiterBasedFrameDecoder, see JAMES-1436
- pipeline.addLast(FRAMER, createFrameHandler());
+ pipeline.addLast(FRAMER, getFrameHandlerFactory().create());
Encryption secure = getEncryption();
if (secure != null && !secure.isStartTLS()) {
@@ -194,8 +193,8 @@ public class IMAPServer extends AbstractConfigurableAsyncServer implements ImapC
}
@Override
- protected ChannelHandler createFrameHandler() {
- return new SwitchableDelimiterBasedFrameDecoder(maxLineLength, false, Delimiters.lineDelimiter());
+ protected ChannelHandlerFactory createFrameHandlerFactory() {
+ return new SwitchableLineDelimiterBasedFrameDecoderFactory(maxLineLength);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/SwitchableLineDelimiterBasedFrameDecoderFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/SwitchableLineDelimiterBasedFrameDecoderFactory.java b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/SwitchableLineDelimiterBasedFrameDecoderFactory.java
new file mode 100644
index 0000000..1335ae3
--- /dev/null
+++ b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/SwitchableLineDelimiterBasedFrameDecoderFactory.java
@@ -0,0 +1,37 @@
+/****************************************************************
+ * 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.james.imapserver.netty;
+
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
+import org.jboss.netty.channel.ChannelHandler;
+import org.jboss.netty.handler.codec.frame.Delimiters;
+
+public class SwitchableLineDelimiterBasedFrameDecoderFactory implements ChannelHandlerFactory {
+
+ private int maxLineLength;
+
+ public SwitchableLineDelimiterBasedFrameDecoderFactory(int maxLineLength) {
+ this.maxLineLength = maxLineLength;
+ }
+
+ @Override
+ public ChannelHandler create() {
+ return new SwitchableDelimiterBasedFrameDecoder(maxLineLength, false, Delimiters.lineDelimiter());
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
index 3fbf7e5..211dd74 100644
--- a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
+++ b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
@@ -45,9 +45,9 @@ import org.apache.james.lifecycle.api.LogEnabled;
import org.apache.james.protocols.api.Encryption;
import org.apache.james.protocols.lib.jmx.ServerMBean;
import org.apache.james.protocols.netty.AbstractAsyncServer;
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
import org.apache.james.util.concurrent.JMXEnabledThreadPoolExecutor;
import org.jboss.netty.bootstrap.ServerBootstrap;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.channel.group.ChannelGroup;
@@ -111,7 +111,7 @@ public abstract class AbstractConfigurableAsyncServer extends AbstractAsyncServe
private final ConnectionCountHandler countHandler = new ConnectionCountHandler();
private ExecutionHandler executionHandler = null;
- private ChannelHandler frameHandler;
+ private ChannelHandlerFactory frameHandlerFactory;
private int maxExecutorThreads;
@@ -271,7 +271,7 @@ public abstract class AbstractConfigurableAsyncServer extends AbstractAsyncServe
buildSSLContext();
preInit();
executionHandler = createExecutionHander();
- frameHandler = createFrameHandler();
+ frameHandlerFactory = createFrameHandlerFactory();
bind();
mbeanServer = ManagementFactory.getPlatformMBeanServer();
@@ -568,7 +568,7 @@ public abstract class AbstractConfigurableAsyncServer extends AbstractAsyncServe
return new ExecutionHandler(new JMXEnabledOrderedMemoryAwareThreadPoolExecutor(maxExecutorThreads, 0, 0, getThreadPoolJMXPath(), getDefaultJMXName() + "-executor"));
}
- protected abstract ChannelHandler createFrameHandler();
+ protected abstract ChannelHandlerFactory createFrameHandlerFactory();
/**
* Return the {@link ExecutionHandler} or null if non should be used. Be sure you call {@link #createExecutionHander()} before
@@ -579,15 +579,15 @@ public abstract class AbstractConfigurableAsyncServer extends AbstractAsyncServe
return executionHandler;
}
- protected ChannelHandler getFrameHandler() {
- return frameHandler;
+ protected ChannelHandlerFactory getFrameHandlerFactory() {
+ return frameHandlerFactory;
}
protected abstract ChannelUpstreamHandler createCoreHandler();
@Override
protected ChannelPipelineFactory createPipelineFactory(ChannelGroup group) {
- return new AbstractExecutorAwareChannelPipelineFactory(getTimeout(), connectionLimit, connPerIP, group, enabledCipherSuites, getExecutionHandler(), getFrameHandler()) {
+ return new AbstractExecutorAwareChannelPipelineFactory(getTimeout(), connectionLimit, connPerIP, group, enabledCipherSuites, getExecutionHandler(), getFrameHandlerFactory()) {
@Override
protected SSLContext getSSLContext() {
if (encryption == null) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java
index 6b71a51..da06bda 100644
--- a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java
+++ b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractExecutorAwareChannelPipelineFactory.java
@@ -19,8 +19,8 @@
package org.apache.james.protocols.lib.netty;
import org.apache.james.protocols.netty.AbstractSSLAwareChannelPipelineFactory;
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
import org.apache.james.protocols.netty.HandlerConstants;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.group.ChannelGroup;
import org.jboss.netty.handler.execution.ExecutionHandler;
@@ -32,12 +32,12 @@ import org.jboss.netty.handler.execution.ExecutionHandler;
*/
public abstract class AbstractExecutorAwareChannelPipelineFactory extends AbstractSSLAwareChannelPipelineFactory{
- public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup group, ExecutionHandler eHandler, ChannelHandler frameHandler) {
- super(timeout, maxConnections, maxConnectsPerIp, group, eHandler, frameHandler);
+ public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup group, ExecutionHandler eHandler, ChannelHandlerFactory frameHandlerFactory) {
+ super(timeout, maxConnections, maxConnectsPerIp, group, eHandler, frameHandlerFactory);
}
- public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup group, String[] enabledCipherSuites, ExecutionHandler eHandler, ChannelHandler frameHandler) {
- super(timeout, maxConnections, maxConnectsPerIp, group, enabledCipherSuites, eHandler, frameHandler);
+ public AbstractExecutorAwareChannelPipelineFactory(int timeout, int maxConnections, int maxConnectsPerIp, ChannelGroup group, String[] enabledCipherSuites, ExecutionHandler eHandler, ChannelHandlerFactory frameHandlerFactory) {
+ super(timeout, maxConnections, maxConnectsPerIp, group, enabledCipherSuites, eHandler, frameHandlerFactory);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java b/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
index f6c4fee..422e8ef 100644
--- a/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
+++ b/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/netty/LMTPServer.java
@@ -28,12 +28,11 @@ import org.apache.james.protocols.lib.handler.HandlersPackage;
import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
import org.apache.james.protocols.lmtp.LMTPConfiguration;
import org.apache.james.protocols.netty.AbstractChannelPipelineFactory;
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
+import org.apache.james.protocols.netty.LineDelimiterBasedChannelHandlerFactory;
import org.apache.james.protocols.smtp.SMTPProtocol;
import org.apache.james.smtpserver.netty.SMTPChannelUpstreamHandler;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelUpstreamHandler;
-import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
-import org.jboss.netty.handler.codec.frame.Delimiters;
public class LMTPServer extends AbstractProtocolAsyncServer implements LMTPServerMBean {
@@ -160,8 +159,8 @@ public class LMTPServer extends AbstractProtocolAsyncServer implements LMTPServe
}
@Override
- protected ChannelHandler createFrameHandler() {
- return new DelimiterBasedFrameDecoder(AbstractChannelPipelineFactory.MAX_LINE_LENGTH, false, Delimiters.lineDelimiter());
+ protected ChannelHandlerFactory createFrameHandlerFactory() {
+ return new LineDelimiterBasedChannelHandlerFactory(AbstractChannelPipelineFactory.MAX_LINE_LENGTH);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java b/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java
index 82c8ed3..827fa40 100644
--- a/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java
+++ b/server/protocols/protocols-managesieve/src/main/java/org/apache/james/managesieveserver/netty/ManageSieveServer.java
@@ -27,15 +27,14 @@ import org.apache.james.managesieve.transcode.ManageSieveProcessor;
import org.apache.james.protocols.api.Encryption;
import org.apache.james.protocols.lib.netty.AbstractConfigurableAsyncServer;
import org.apache.james.protocols.netty.ChannelGroupHandler;
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
import org.apache.james.protocols.netty.ConnectionLimitUpstreamHandler;
import org.apache.james.protocols.netty.ConnectionPerIpLimitUpstreamHandler;
-import org.jboss.netty.channel.ChannelHandler;
+import org.apache.james.protocols.netty.LineDelimiterBasedChannelHandlerFactory;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.ChannelUpstreamHandler;
import org.jboss.netty.channel.group.ChannelGroup;
-import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
-import org.jboss.netty.handler.codec.frame.Delimiters;
import org.jboss.netty.handler.codec.string.StringDecoder;
import org.jboss.netty.handler.codec.string.StringEncoder;
import org.jboss.netty.handler.execution.ExecutionHandler;
@@ -115,7 +114,7 @@ public class ManageSieveServer extends AbstractConfigurableAsyncServer implement
// Add the text line decoder which limit the max line length,
// don't strip the delimiter and use CRLF as delimiter
// Use a SwitchableDelimiterBasedFrameDecoder, see JAMES-1436
- pipeline.addLast(FRAMER, createFrameHandler());
+ pipeline.addLast(FRAMER, getFrameHandlerFactory().create());
pipeline.addLast(CONNECTION_COUNT_HANDLER, getConnectionCountHandler());
pipeline.addLast(CHUNK_WRITE_HANDLER, new ChunkedWriteHandler());
@@ -139,7 +138,7 @@ public class ManageSieveServer extends AbstractConfigurableAsyncServer implement
}
@Override
- protected ChannelHandler createFrameHandler() {
- return new DelimiterBasedFrameDecoder(maxLineLength, false, Delimiters.lineDelimiter());
+ protected ChannelHandlerFactory createFrameHandlerFactory() {
+ return new LineDelimiterBasedChannelHandlerFactory(maxLineLength);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3Server.java b/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
index 5b14d46..5a4acb5 100644
--- a/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
+++ b/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/netty/POP3Server.java
@@ -26,11 +26,10 @@ import org.apache.james.protocols.lib.handler.HandlersPackage;
import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
import org.apache.james.protocols.netty.AbstractChannelPipelineFactory;
import org.apache.james.protocols.netty.BasicChannelUpstreamHandler;
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
+import org.apache.james.protocols.netty.LineDelimiterBasedChannelHandlerFactory;
import org.apache.james.protocols.pop3.POP3Protocol;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelUpstreamHandler;
-import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
-import org.jboss.netty.handler.codec.frame.Delimiters;
/**
* NIO POP3 Server which use Netty
@@ -105,8 +104,8 @@ public class POP3Server extends AbstractProtocolAsyncServer implements POP3Serve
}
@Override
- protected ChannelHandler createFrameHandler() {
- return new DelimiterBasedFrameDecoder(AbstractChannelPipelineFactory.MAX_LINE_LENGTH, false, Delimiters.lineDelimiter());
+ protected ChannelHandlerFactory createFrameHandlerFactory() {
+ return new LineDelimiterBasedChannelHandlerFactory(AbstractChannelPipelineFactory.MAX_LINE_LENGTH);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/d4f18a98/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
index cad8941..1de34d1 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
@@ -30,15 +30,14 @@ import org.apache.james.protocols.api.logger.ProtocolLoggerAdapter;
import org.apache.james.protocols.lib.handler.HandlersPackage;
import org.apache.james.protocols.lib.netty.AbstractProtocolAsyncServer;
import org.apache.james.protocols.netty.AbstractChannelPipelineFactory;
-import org.apache.james.protocols.smtp.AllButStartTlsDelimiterChannelHandler;
+import org.apache.james.protocols.netty.ChannelHandlerFactory;
+import org.apache.james.protocols.smtp.AllButStartTlsLineDelimiterChannelHandlerFactory;
import org.apache.james.protocols.smtp.SMTPConfiguration;
import org.apache.james.protocols.smtp.SMTPProtocol;
import org.apache.james.smtpserver.CoreCmdHandlerLoader;
import org.apache.james.smtpserver.ExtendedSMTPSession;
import org.apache.james.smtpserver.jmx.JMXHandlersLoader;
-import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelUpstreamHandler;
-import org.jboss.netty.handler.codec.frame.Delimiters;
/**
* NIO SMTPServer which use Netty
@@ -364,8 +363,8 @@ public class SMTPServer extends AbstractProtocolAsyncServer implements SMTPServe
}
@Override
- protected ChannelHandler createFrameHandler() {
- return new AllButStartTlsDelimiterChannelHandler(AbstractChannelPipelineFactory.MAX_LINE_LENGTH, false, Delimiters.lineDelimiter());
+ protected ChannelHandlerFactory createFrameHandlerFactory() {
+ return new AllButStartTlsLineDelimiterChannelHandlerFactory(AbstractChannelPipelineFactory.MAX_LINE_LENGTH);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[3/5] james-project git commit: PROTOCOLS-115 Upgrade Netty version
Posted by ad...@apache.org.
PROTOCOLS-115 Upgrade Netty version
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6595c21b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6595c21b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6595c21b
Branch: refs/heads/master
Commit: 6595c21b9373ec345c261132b82197c1e205d95a
Parents: 1456d37
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Wed Feb 1 18:06:27 2017 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Thu Feb 2 15:23:43 2017 +0100
----------------------------------------------------------------------
protocols/pom.xml | 2 +-
server/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/6595c21b/protocols/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/pom.xml b/protocols/pom.xml
index a30de8b..3eb0ca3 100644
--- a/protocols/pom.xml
+++ b/protocols/pom.xml
@@ -47,7 +47,7 @@
<properties>
<target.jdk>1.6</target.jdk>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <netty.version>3.10.5.Final</netty.version>
+ <netty.version>3.10.6.Final</netty.version>
<apache-mime4j.version>0.8.0</apache-mime4j.version>
<commons-net.version>3.2</commons-net.version>
<commons-lang.version>2.6</commons-lang.version>
http://git-wip-us.apache.org/repos/asf/james-project/blob/6595c21b/server/pom.xml
----------------------------------------------------------------------
diff --git a/server/pom.xml b/server/pom.xml
index 613fd85..ab2eca5 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -165,7 +165,7 @@
<log4j.version>1.2.17</log4j.version>
<jcr.version>2.0</jcr.version>
<xbean-spring.version>3.12</xbean-spring.version>
- <netty.version>3.10.5.Final</netty.version>
+ <netty.version>3.10.6.Final</netty.version>
<geronimo-annotation-spec.version>1.0.1</geronimo-annotation-spec.version>
<spring-osgi-extender.version>1.2.1</spring-osgi-extender.version>
<org.osgi.core.version>5.0.0</org.osgi.core.version>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org