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 <[email protected]> Authored: Thu Feb 9 17:43:55 2017 +0100 Committer: Antoine Duprat <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
