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/14 12:05:52 UTC
[07/12] james-project git commit: JAMES-1930 Introduce MPT REINIT
command
JAMES-1930 Introduce MPT REINIT command
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/bdf89328
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/bdf89328
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/bdf89328
Branch: refs/heads/master
Commit: bdf89328fcfae95853a20c477422fca70cc3216d
Parents: bf28358
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Thu Feb 9 17:43:55 2017 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Feb 14 11:29:30 2017 +0100
----------------------------------------------------------------------
.../java/org/apache/james/mpt/api/Session.java | 7 ++++++
.../protocol/FileProtocolSessionBuilder.java | 3 +++
.../james/mpt/protocol/ProtocolSession.java | 25 +++++++++++++++++++-
.../mpt/protocol/ProtocolSessionBuilder.java | 2 ++
.../james/mpt/session/ExternalSession.java | 5 ++++
.../james/mpt/host/JamesImapHostSystem.java | 4 ++++
.../james/mpt/host/ManageSieveSession.java | 4 ++++
7 files changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/bdf89328/mpt/core/src/main/java/org/apache/james/mpt/api/Session.java
----------------------------------------------------------------------
diff --git a/mpt/core/src/main/java/org/apache/james/mpt/api/Session.java b/mpt/core/src/main/java/org/apache/james/mpt/api/Session.java
index 9dd9919..170b365 100644
--- a/mpt/core/src/main/java/org/apache/james/mpt/api/Session.java
+++ b/mpt/core/src/main/java/org/apache/james/mpt/api/Session.java
@@ -47,6 +47,13 @@ public interface Session {
void start() throws Exception;
/**
+ * Reopens the session to reinitialize the server state
+ *
+ * @throws Exception
+ */
+ void restart() throws Exception;
+
+ /**
* Closes the session.
*
* @throws Exception
http://git-wip-us.apache.org/repos/asf/james-project/blob/bdf89328/mpt/core/src/main/java/org/apache/james/mpt/protocol/FileProtocolSessionBuilder.java
----------------------------------------------------------------------
diff --git a/mpt/core/src/main/java/org/apache/james/mpt/protocol/FileProtocolSessionBuilder.java b/mpt/core/src/main/java/org/apache/james/mpt/protocol/FileProtocolSessionBuilder.java
index 5dea7c8..3648a11 100644
--- a/mpt/core/src/main/java/org/apache/james/mpt/protocol/FileProtocolSessionBuilder.java
+++ b/mpt/core/src/main/java/org/apache/james/mpt/protocol/FileProtocolSessionBuilder.java
@@ -138,6 +138,9 @@ public class FileProtocolSessionBuilder extends ProtocolSessionBuilder {
throw new Exception("Unrecognized log level for " + next);
}
}
+ else if (next.startsWith(REINIT)) {
+ session.REINIT(sessionNumber);
+ }
else if (next.startsWith(OPEN_UNORDERED_BLOCK_TAG)) {
List<String> unorderedLines = new ArrayList<String>(5);
next = reader.readLine();
http://git-wip-us.apache.org/repos/asf/james-project/blob/bdf89328/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSession.java
----------------------------------------------------------------------
diff --git a/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSession.java b/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSession.java
index 1afd1f4..5045acb 100644
--- a/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSession.java
+++ b/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSession.java
@@ -202,6 +202,11 @@ public class ProtocolSession implements ProtocolInteractor {
testElements.add(new LogElement(level, message));
}
+ public void REINIT(int sessionNumber) {
+ this.maxSessionNumber = Math.max(this.maxSessionNumber, sessionNumber);
+ testElements.add(new ReinitElement(sessionNumber));
+ }
+
/**
* A client request, which write the specified message to a Writer.
*/
@@ -467,7 +472,7 @@ public class ProtocolSession implements ProtocolInteractor {
private final int sessionNumber;
public ContinuationElement(int sessionNumber) throws Exception {
- this.sessionNumber = sessionNumber < 0 ? 0 : sessionNumber;
+ this.sessionNumber = Math.max(0, sessionNumber);
}
public void testProtocol(Session[] sessions, boolean continueAfterFailure) throws Exception {
@@ -497,6 +502,24 @@ public class ProtocolSession implements ProtocolInteractor {
}
}
+ private class ReinitElement implements ProtocolElement {
+
+ private final int sessionNumber;
+
+ public ReinitElement(int sessionNumber) {
+ this.sessionNumber = Math.max(0, sessionNumber);
+ }
+
+ public void testProtocol(Session[] sessions, boolean continueAfterFailure) throws Exception {
+ Session session = sessions[sessionNumber];
+ session.restart();
+ }
+
+ public boolean isClient() {
+ return false;
+ }
+ }
+
/**
* Allow you to wait a given time at a given point of the test script
*/
http://git-wip-us.apache.org/repos/asf/james-project/blob/bdf89328/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSessionBuilder.java
----------------------------------------------------------------------
diff --git a/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSessionBuilder.java b/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSessionBuilder.java
index 2f4db62..657c64a 100644
--- a/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSessionBuilder.java
+++ b/mpt/core/src/main/java/org/apache/james/mpt/protocol/ProtocolSessionBuilder.java
@@ -57,6 +57,8 @@ public class ProtocolSessionBuilder {
public static final String SESSION_TAG = "SESSION:";
+ public static final String REINIT = "REINIT";
+
private final Properties variables;
public ProtocolSessionBuilder() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/bdf89328/mpt/core/src/main/java/org/apache/james/mpt/session/ExternalSession.java
----------------------------------------------------------------------
diff --git a/mpt/core/src/main/java/org/apache/james/mpt/session/ExternalSession.java b/mpt/core/src/main/java/org/apache/james/mpt/session/ExternalSession.java
index 5eb1b74..9c65851 100644
--- a/mpt/core/src/main/java/org/apache/james/mpt/session/ExternalSession.java
+++ b/mpt/core/src/main/java/org/apache/james/mpt/session/ExternalSession.java
@@ -26,6 +26,7 @@ import java.nio.charset.Charset;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
+import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.lang.mutable.MutableInt;
import org.apache.james.mpt.api.Monitor;
import org.apache.james.mpt.api.Session;
@@ -151,6 +152,10 @@ public final class ExternalSession implements Session {
}
}
+ public void restart() throws Exception {
+ throw new NotImplementedException("Restart is not implemented for ExternalSession");
+ }
+
public void stop() throws Exception {
monitor.note("closing");
socket.close();
http://git-wip-us.apache.org/repos/asf/james-project/blob/bdf89328/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java
index 1251cff..e2be945 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java
@@ -105,6 +105,10 @@ public abstract class JamesImapHostSystem implements ImapHostSystem {
out.write("* OK IMAP4rev1 Server ready\r\n");
}
+ public void restart() throws Exception {
+ session = new ImapSessionImpl(LoggerFactory.getLogger("sessionLog"));
+ }
+
public void stop() throws Exception {
session.deselect();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/bdf89328/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveSession.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveSession.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveSession.java
index 05eaa1a..7c1f913 100644
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveSession.java
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/ManageSieveSession.java
@@ -81,6 +81,10 @@ public class ManageSieveSession implements Session {
}
@Override
+ public void restart() throws Exception {
+ }
+
+ @Override
public void writeLine(String line) throws Exception {
isReadLast = false;
in.nextLine(line);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org