Author: rdonkin Date: Wed Aug 1 02:24:36 2007 New Revision: 561736 URL: http://svn.apache.org/viewvc?view=rev&rev=561736 Log: Tuned functional test framework.
Added: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractAuthenticatedStateTestSuite.java Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractProtocolTest.java james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestForAuthenticatedState.java james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestNonAuthenticatedState.java james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedInbox.java james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedState.java james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/HostSystem.java james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/ProtocolSession.java james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/SimpleScriptedTestProtocol.java james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Noop.test james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Welcome.test Added: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractAuthenticatedStateTestSuite.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractAuthenticatedStateTestSuite.java?view=auto&rev=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractAuthenticatedStateTestSuite.java (added) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractAuthenticatedStateTestSuite.java Wed Aug 1 02:24:36 2007 @@ -0,0 +1,33 @@ +/**************************************************************** + * 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.test.functional.imap; + + +abstract public class AbstractAuthenticatedStateTestSuite extends BaseTestForAuthenticatedState { + + public AbstractAuthenticatedStateTestSuite(HostSystem system) throws Exception + { + super(system); + } + + public void testNoop() throws Exception { + scriptTest("Noop"); + } +} Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractProtocolTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractProtocolTest.java?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractProtocolTest.java (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/AbstractProtocolTest.java Wed Aug 1 02:24:36 2007 @@ -19,9 +19,6 @@ package org.apache.james.test.functional.imap; -import java.io.BufferedReader; -import java.io.PrintWriter; - import junit.framework.TestCase; @@ -54,9 +51,8 @@ private final HostSystem hostSystem; - public AbstractProtocolTest( String name, HostSystem hostSystem ) + public AbstractProtocolTest( HostSystem hostSystem ) { - super(name); this.hostSystem = hostSystem; } @@ -79,53 +75,19 @@ */ protected void runSessions() throws Exception { - HostSystem.Session[] socket = new HostSystem.Session[testElements.getSessionCount()]; - PrintWriter[] out = new PrintWriter[socket.length]; - BufferedReader[] in = new BufferedReader[socket.length]; - - for (int i = 0; i < socket.length; i++) { - socket[i] = hostSystem.newSession(); - out[i] = new PrintWriter(socket[i].getWriter()); - in[i] = new BufferedReader(socket[i].getReader()); - socket[i].start(); - } - try - { - Exception failure = null; - try { - preElements.runLiveSession( out, in ); - testElements.runLiveSession( out, in ); - } catch (ProtocolSession.InvalidServerResponseException e) { - failure = e; - // Try our best to do cleanup. - for (int i = 0; i < in.length; i++) { - BufferedReader reader = in[i]; - while (reader.ready()) { - reader.read(); - } - } - } finally { - try { - postElements.runLiveSession(out, in); - } catch (ProtocolSession.InvalidServerResponseException e) { - // Don't overwrite real error with error on cleanup. - if (failure == null) { - failure = e; - } - } - } - - if (failure != null) { - fail(failure.getMessage()); - } + HostSystem.Session[] sessions = new HostSystem.Session[testElements.getSessionCount()]; + for (int i = 0; i < sessions.length; i++) { + sessions[i] = hostSystem.newSession(); + sessions[i].start(); } - finally - { - for (int i = 0; i < socket.length; i++) { - out[i].close(); - in[i].close(); - socket[i].stop(); + try { + preElements.runSessions( sessions ); + testElements.runSessions( sessions ); + postElements.runSessions(sessions); + } finally { + for (int i = 0; i < sessions.length; i++) { + sessions[i].stop(); } } } Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestForAuthenticatedState.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestForAuthenticatedState.java?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestForAuthenticatedState.java (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestForAuthenticatedState.java Wed Aug 1 02:24:36 2007 @@ -46,7 +46,7 @@ * <li>Compound:<ul> * <li>AppendExpunge</li> * <li>SelectAppend</li> - * <li>StringArgs</li>; + * <li>StringArgs</li> * </ul></li> * </ul> * </p> @@ -54,9 +54,9 @@ public class BaseTestForAuthenticatedState extends SimpleScriptedTestProtocol implements ImapTestConstants { - public BaseTestForAuthenticatedState( String name, HostSystem hostSystem) + public BaseTestForAuthenticatedState( HostSystem hostSystem) { - super( name, hostSystem ); + super( hostSystem ); } /** @@ -73,6 +73,6 @@ protected void addLogin( String username, String password ) { preElements.CL( "a001 LOGIN " + username + " " + password ); - preElements.SL( "a001 OK LOGIN completed", "AbstractTestForAuthenticatedState.java:53" ); + preElements.SL( "a001 OK LOGIN completed.", "AbstractTestForAuthenticatedState.java:53" ); } } Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestNonAuthenticatedState.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestNonAuthenticatedState.java?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestNonAuthenticatedState.java (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestNonAuthenticatedState.java Wed Aug 1 02:24:36 2007 @@ -39,9 +39,9 @@ public class BaseTestNonAuthenticatedState extends SimpleScriptedTestProtocol { - public BaseTestNonAuthenticatedState( String name, HostSystem system ) + public BaseTestNonAuthenticatedState( HostSystem system ) { - super( name, system ); + super( system ); } /** Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedInbox.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedInbox.java?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedInbox.java (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedInbox.java Wed Aug 1 02:24:36 2007 @@ -52,9 +52,9 @@ public class BaseTestSelectedInbox extends BaseTestForAuthenticatedState { - public BaseTestSelectedInbox( String name, HostSystem system ) + public BaseTestSelectedInbox( HostSystem system ) { - super( name, system ); + super( system ); } /** Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedState.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedState.java?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedState.java (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/BaseTestSelectedState.java Wed Aug 1 02:24:36 2007 @@ -42,9 +42,9 @@ public class BaseTestSelectedState extends BaseTestForAuthenticatedState { - public BaseTestSelectedState( String name, HostSystem system ) + public BaseTestSelectedState( HostSystem system ) { - super( name, system ); + super( system ); } /** Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/HostSystem.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/HostSystem.java?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/HostSystem.java (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/HostSystem.java Wed Aug 1 02:24:36 2007 @@ -41,7 +41,7 @@ * @param password user password * @throws Exception */ - public void addUser(String user, String password) throws Exception; + public boolean addUser(String user, String password) throws Exception; /** * Creates a new session for functional testing. @@ -52,8 +52,8 @@ public interface Session { - public Reader getReader() throws Exception; - public Writer getWriter() throws Exception; + public String readLine() throws Exception; + public void writeLine(String line) throws Exception; public void start() throws Exception; public void stop() throws Exception; } Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/ProtocolSession.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/ProtocolSession.java?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/ProtocolSession.java (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/ProtocolSession.java Wed Aug 1 02:24:36 2007 @@ -20,9 +20,7 @@ package org.apache.james.test.functional.imap; -import java.io.BufferedReader; import java.io.IOException; -import java.io.PrintWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -60,12 +58,12 @@ * @param out The client requests are written to here. * @param in The server responses are read from here. */ - public void runLiveSession(PrintWriter[] out, BufferedReader[] in) throws InvalidServerResponseException { + public void runSessions(HostSystem.Session[] sessions) throws Exception { for ( Iterator iter = testElements.iterator(); iter.hasNext(); ) { Object obj = iter.next(); if ( obj instanceof ProtocolElement ) { ProtocolElement test = ( ProtocolElement ) obj; - test.testProtocol( out, in ); + test.testProtocol( sessions ); } } } @@ -151,26 +149,24 @@ * Writes the request message to the PrintWriters. If the sessionNumber == -1, * the request is written to *all* supplied writers, otherwise, only the * writer for this session is writted to. + * @throws Exception */ - public void testProtocol( PrintWriter[] out, BufferedReader[] in ) + public void testProtocol( HostSystem.Session[] sessions ) throws Exception { if (sessionNumber < 0) { - for (int i = 0; i < out.length; i++) { - PrintWriter printWriter = out[i]; - writeMessage(printWriter); + for (int i = 0; i < sessions.length; i++) { + HostSystem.Session session = sessions[i]; + writeMessage(session); } } else { - PrintWriter writer = out[sessionNumber]; - writeMessage(writer); + HostSystem.Session session = sessions[sessionNumber]; + writeMessage(session); } } - private void writeMessage(PrintWriter writer) { - writer.write(message); - writer.write('\r'); - writer.write('\n'); - writer.flush(); + private void writeMessage(HostSystem.Session session) throws Exception { + session.writeLine(message); } } @@ -219,23 +215,23 @@ * @throws InvalidServerResponseException If the actual server response didn't * match the regular expression expected. */ - public void testProtocol( PrintWriter[] out, BufferedReader[] in ) - throws InvalidServerResponseException + public void testProtocol( HostSystem.Session[] sessions) + throws Exception { if (sessionNumber < 0) { - for (int i = 0; i < in.length; i++) { - BufferedReader reader = in[i]; - checkResponse(reader); + for (int i = 0; i < sessions.length; i++) { + HostSystem.Session session = sessions[i]; + checkResponse(session); } } else { - BufferedReader reader = in[sessionNumber]; - checkResponse(reader); + HostSystem.Session session = sessions[sessionNumber]; + checkResponse(session); } } - protected void checkResponse(BufferedReader reader) throws InvalidServerResponseException { - String testLine = readLine(reader); + protected void checkResponse(HostSystem.Session session) throws Exception { + String testLine = readLine(session); if ( ! match( expectedLine, testLine ) ) { String errMsg = "\nLocation: " + location + "\nExcpected: " + expectedLine + @@ -260,14 +256,13 @@ /** * Grabs a line from the server and throws an error message if it * doesn't work out - * @param in BufferedReader for getting the server response * @return String of the line from the server */ - protected String readLine( BufferedReader in ) - throws InvalidServerResponseException + protected String readLine( HostSystem.Session session ) + throws Exception { try { - return in.readLine(); + return session.readLine(); } catch (IOException e) { String errMsg = "\nLocation: " + location + "\nExpected: " + expectedLine + @@ -319,10 +314,10 @@ * @throws InvalidServerResponseException If a line is encountered which doesn't * match one of the expected lines. */ - protected void checkResponse(BufferedReader reader) throws InvalidServerResponseException { + protected void checkResponse(HostSystem.Session session) throws Exception { List testLines = new ArrayList(expectedLines); while (testLines.size() > 0) { - String actualLine = readLine(reader); + String actualLine = readLine(session); boolean foundMatch = false; for (int i = 0; i < testLines.size(); i++) { @@ -361,14 +356,10 @@ private interface ProtocolElement { /** - * Executes the ProtocolElement against the supplied read and writer. - * @param out Client requests are written to here. - * @param in Server responses are read from here. - * @throws InvalidServerResponseException If the actual server response - * doesn't match the one expected. + * Executes the ProtocolElement against the supplied session. + * @throws Exception */ - void testProtocol( PrintWriter[] out, BufferedReader[] in ) - throws InvalidServerResponseException; + void testProtocol( HostSystem.Session[] sessions) throws Exception; } /** Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/SimpleScriptedTestProtocol.java URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/SimpleScriptedTestProtocol.java?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/SimpleScriptedTestProtocol.java (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/SimpleScriptedTestProtocol.java Wed Aug 1 02:24:36 2007 @@ -41,20 +41,18 @@ * in the same location as this test class. * @param fileName The name of the file to read protocol elements from. */ - public SimpleScriptedTestProtocol( String fileName, HostSystem hostSystem ) + public SimpleScriptedTestProtocol( HostSystem hostSystem ) { - super( fileName, hostSystem ); + super( hostSystem ); } /** * Reads test elements from the protocol session file and adds them to the * [EMAIL PROTECTED] #testElements} ProtocolSession. Then calls [EMAIL PROTECTED] #runSessions}. */ - protected void runTest() throws Throwable + protected void scriptTest(String fileName) throws Exception { - String fileName = getName() + ".test"; - addTestFile( fileName, testElements ); - + addTestFile( fileName + ".test", testElements ); runSessions(); } @@ -67,6 +65,7 @@ */ protected void addTestFile( String fileName, ProtocolSession session) throws Exception { + fileName = "/org/apache/james/test/functional/imap/scripts/" + fileName; // Need to find local resource. InputStream is = this.getClass().getResourceAsStream( fileName ); if ( is == null ) { Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Noop.test URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Noop.test?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Noop.test (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Noop.test Wed Aug 1 02:24:36 2007 @@ -18,4 +18,4 @@ ################################################################ # TODO make sure we get unsolicited responses on NOOP C: a01 NOOP -S: a01 OK NOOP completed \ No newline at end of file +S: a01 OK NOOP completed. \ No newline at end of file Modified: james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Welcome.test URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Welcome.test?view=diff&rev=561736&r1=561735&r2=561736 ============================================================================== --- james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Welcome.test (original) +++ james/server/trunk/experimental-seda-imap-function/src/test/java/org/apache/james/test/functional/imap/scripts/Welcome.test Wed Aug 1 02:24:36 2007 @@ -16,4 +16,4 @@ # specific language governing permissions and limitations # # under the License. # ################################################################ -S: \* OK IMAP4rev1 Server .* ready +S: \* OK IMAP4rev1 Server ready \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]