Author: rdonkin
Date: Sun Nov 30 03:04:07 2008
New Revision: 721793

URL: http://svn.apache.org/viewvc?rev=721793&view=rev
Log:
Tidy up build.xml and support AddUser script as body text.

Modified:
    
james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
    james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml
    james/protocol-tester/trunk/antlib/src/test/resources/build.xml
    
james/protocol-tester/trunk/main/src/main/java/org/apache/james/mpt/ScriptedUserAdder.java

Modified: 
james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
URL: 
http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java?rev=721793&r1=721792&r2=721793&view=diff
==============================================================================
--- 
james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
 (original)
+++ 
james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
 Sun Nov 30 03:04:07 2008
@@ -20,11 +20,17 @@
 package org.apache.james.mpt.ant;
 
 import java.io.File;
+import java.io.FileReader;
+import java.io.Reader;
+import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 
+import org.apache.james.mpt.Monitor;
+import org.apache.james.mpt.ScriptedUserAdder;
 import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.types.ResourceCollection;
 import org.apache.tools.ant.types.resources.Union;
@@ -33,7 +39,7 @@
  * Task executes MPT scripts against a server
  * running on a given port and host.
  */
-public class MailProtocolTestTask extends Task {
+public class MailProtocolTestTask extends Task implements Monitor {
 
     private File script;
     private Union scripts;
@@ -153,13 +159,15 @@
     }
 
     /**
-     * 
+     * Adds a user.
      */
-    public static class AddUser {
+    public class AddUser {
+        
         private int port;
         private String user;
         private String passwd;
         private File script;
+        private String scriptText;
 
         /**
          * Gets the port against which the user addition
@@ -211,6 +219,14 @@
         public void setUser(String user) {
             this.user = user;
         }
+        
+        /**
+         * Sets user addition script.
+         * @param scriptText not null
+         */
+        public void addText(String scriptText) {
+            this.scriptText = getProject().replaceProperties(scriptText);
+        }
 
         /**
          * Gets the file containing the user creation script.
@@ -232,19 +248,46 @@
          * Validates mandatory fields have been filled.
          */
         void validate() throws BuildException {
-            if (script == null) {
-                throw new BuildException("'script' attribute must be set on 
AddUser to the file containing the user creations script.");
+            if (script == null && scriptText == null) {
+                throw new BuildException("Either the 'script' attribute must 
be set, or the body must contain the text of the script");
+            }
+            
+            if (script != null && scriptText != null) {
+                throw new BuildException("Choose either script text or script 
attribute but not both.");
             }
+            
             if (user == null) {
                 throw new BuildException("'user' attribute must be set on 
AddUser to the name of the user to be created.");
             }
+            
             if (passwd == null) {
                 throw new BuildException("'passwd' attribute must be set on 
AddUser to the password to be set for the user created");
             }
+            
             if (port <= 0) {
                 throw new BuildException("'port' attribute must be set on 
AddUser to the port against which the script should run.");
             }
-            
         }
+        
+        void execute() throws BuildException {
+            validate();
+            try {
+                final File scriptFile = getScript();
+                final Reader reader;
+                if (scriptFile == null) {
+                    reader = new StringReader(scriptText);
+                } else {
+                    reader = new FileReader(scriptFile);
+                }
+                ScriptedUserAdder adder = new ScriptedUserAdder(getHost(), 
getPort(), MailProtocolTestTask.this);
+                adder.addUser(getUser(), getPasswd(), reader);
+            } catch (Exception e) {
+                throw new BuildException("User addition failed", e);
+            }
+        } 
+    }
+
+    public void note(String message) {
+        log(message, Project.MSG_DEBUG);
     }
 }

Modified: james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml
URL: 
http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml?rev=721793&r1=721792&r2=721793&view=diff
==============================================================================
--- james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml (original)
+++ james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml Sun Nov 30 
03:04:07 2008
@@ -121,9 +121,14 @@
 <tr>
        <td>script</td> 
        <td>File containing the user creation script</td> 
-       <td>Yes</td>
+       <td>Either this attribute must be set, or the user addition script </td>
 </tr> 
 </table>
+<p>
+User addition scripts are typically short. As an alternative to the script 
attribute
+(which specifies the file containing the script), the script text can be added 
directly
+as text to the body of this element.
+</p>
 </subsection>
 <subsection name='Example'>
 <p>TODO:</p>

Modified: james/protocol-tester/trunk/antlib/src/test/resources/build.xml
URL: 
http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/src/test/resources/build.xml?rev=721793&r1=721792&r2=721793&view=diff
==============================================================================
--- james/protocol-tester/trunk/antlib/src/test/resources/build.xml (original)
+++ james/protocol-tester/trunk/antlib/src/test/resources/build.xml Sun Nov 30 
03:04:07 2008
@@ -17,94 +17,108 @@
   specific language governing permissions and limitations
   under the License.    
 -->
-<project 
-       name="tests" default="all"
-         xmlns:au="antlib:org.apache.ant.antunit"
-         xmlns:mpt="antlib:org.apache.james.mpt.ant">
-       
-    <taskdef uri="antlib:org.apache.ant.antunit"
-             resource="org/apache/ant/antunit/antlib.xml"
-             classpath="${test.classpath}" />
-       
-    <taskdef uri="antlib:org.apache.james.mpt.ant"
-             resource="org/apache/james/mpt/ant/antlib.xml"
-             classpath="${jar.name}" />
-       
-       <target name='testMustNotAllowScriptsAndScript'>
-               <au:expectfailure>
-                 <mpt:mpt skip='true' port='10000' script='pom.xml'>
-                         <fileset dir='${basedir}'/>
-                 </mpt:mpt>                            
-           </au:expectfailure>
-       </target>
-       
-       <target name='testMustSetScriptsOrScript'>
-               <au:expectfailure>
-                 <mpt:mpt skip='true' port='10000'/>
-           </au:expectfailure>
-               <mpt:mpt port='10000' skip='true'>
-                 <fileset dir='${basedir}'/>
-               </mpt:mpt>      
-               <mpt:mpt port='10000' skip='true' script='pom.xml'/>
-       </target>
-       
-       <target name='testMustSetPort'>
-               <au:expectfailure>
-                 <mpt:mpt skip='true'>
-                       <fileset dir='${basedir}'/>
-                 </mpt:mpt>
-           </au:expectfailure>
-               <mpt:mpt port='10000' skip='true'>
-                       <fileset dir='${basedir}'/>
-               </mpt:mpt>      
-       </target>
-       
-       <target name='testMaySetHost'>
-               <mpt:mpt port='10000' skip='true' host='example.org'>
-                       <fileset dir='${basedir}'/>
-               </mpt:mpt>
-               <mpt:mpt port='10000' skip='true' host='10.0.0.66'>
-                       <fileset dir='${basedir}'/>
-               </mpt:mpt>
-       </target>
-       
-       <target name='testShouldAllowAddUserToBeSet'>
-               <mpt:mpt port='10000' skip='true' host='example.org'>
-                       <fileset dir='${basedir}'/>
-                       <addUser port='10001' user='user' passwd='passwd' 
script='pom.xml'/>
-               </mpt:mpt>
-       </target>
-       
-       
-       <target name='testAddUserMustSetPortNamePasswordScript'>
-               <au:expectfailure>
-                       <mpt:mpt port='10000' skip='true' host='example.org'>
-                               <fileset dir='${basedir}'/>
-                               <addUser user='user' passwd='passwd' 
script='pom.xml'/>
-                       </mpt:mpt>
-               </au:expectfailure>
-               <au:expectfailure>
-                       <mpt:mpt port='10000' skip='true' host='example.org'>
-                               <fileset dir='${basedir}'/>
-                               <addUser port='10001' passwd='passwd' 
script='pom.xml'/>
-                       </mpt:mpt>
-               </au:expectfailure>
-               <au:expectfailure>
-                       <mpt:mpt port='10000' skip='true' host='example.org'>
-                               <fileset dir='${basedir}'/>
-                               <addUser port='10001' user='user' 
script='pom.xml'/>
-                       </mpt:mpt>
-               </au:expectfailure>
-               <au:expectfailure>
-                       <mpt:mpt port='10000' skip='true' host='example.org'>
-                               <fileset dir='${basedir}'/>
-                               <addUser port='10001' user='user' 
passwd='passwd'/>
-                       </mpt:mpt>
-               </au:expectfailure>
-       </target>
-
-       <target name='testMptAttributes' depends='testMustSetPort, 
testMaySetHost,testMustSetScriptsOrScript, testMustNotAllowScriptsAndScript'/>
-       <target name='testAddUser' depends='testShouldAllowAddUserToBeSet, 
testAddUserMustSetPortNamePasswordScript'/>
-       
-       <target name='all' depends='testMptAttributes, testAddUser'/>
+<project name="tests" default="all" xmlns:au="antlib:org.apache.ant.antunit" 
xmlns:mpt="antlib:org.apache.james.mpt.ant">
+
+    <taskdef uri="antlib:org.apache.ant.antunit" 
resource="org/apache/ant/antunit/antlib.xml" classpath="${test.classpath}" />
+
+    <taskdef uri="antlib:org.apache.james.mpt.ant" 
resource="org/apache/james/mpt/ant/antlib.xml">
+        <classpath>
+            <pathelement location="${jar.name}" />
+            <pathelement path='${test.classpath}' />
+        </classpath>
+    </taskdef>
+
+    <target name='testMustNotAllowScriptsAndScript'>
+        <au:expectfailure>
+            <mpt:mpt skip='true' port='10000' script='pom.xml'>
+                <fileset dir='${basedir}' />
+            </mpt:mpt>
+        </au:expectfailure>
+    </target>
+
+    <target name='testMustSetScriptsOrScript'>
+        <au:expectfailure>
+            <mpt:mpt skip='true' port='10000' />
+        </au:expectfailure>
+        <mpt:mpt port='10000' skip='true'>
+            <fileset dir='${basedir}' />
+        </mpt:mpt>
+        <mpt:mpt port='10000' skip='true' script='pom.xml' />
+    </target>
+
+    <target name='testMustSetPort'>
+        <au:expectfailure>
+            <mpt:mpt skip='true'>
+                <fileset dir='${basedir}' />
+            </mpt:mpt>
+        </au:expectfailure>
+        <mpt:mpt port='10000' skip='true'>
+            <fileset dir='${basedir}' />
+        </mpt:mpt>
+    </target>
+
+    <target name='testMaySetHost'>
+        <mpt:mpt port='10000' skip='true' host='example.org'>
+            <fileset dir='${basedir}' />
+        </mpt:mpt>
+        <mpt:mpt port='10000' skip='true' host='10.0.0.66'>
+            <fileset dir='${basedir}' />
+        </mpt:mpt>
+    </target>
+
+    <target name='testShouldAllowAddUserToBeSet'>
+        <mpt:mpt port='10000' skip='true' host='example.org'>
+            <fileset dir='${basedir}' />
+            <addUser port='10001' user='user' passwd='passwd' script='pom.xml' 
/>
+        </mpt:mpt>
+    </target>
+
+
+    <target name='testAddUserMustSetPortNamePasswordScript'>
+        <au:expectfailure>
+            <mpt:mpt port='10000' skip='true' host='example.org'>
+                <fileset dir='${basedir}' />
+                <addUser user='user' passwd='passwd' script='pom.xml' />
+            </mpt:mpt>
+        </au:expectfailure>
+        <au:expectfailure>
+            <mpt:mpt port='10000' skip='true' host='example.org'>
+                <fileset dir='${basedir}' />
+                <addUser port='10001' passwd='passwd' script='pom.xml' />
+            </mpt:mpt>
+        </au:expectfailure>
+        <au:expectfailure>
+            <mpt:mpt port='10000' skip='true' host='example.org'>
+                <fileset dir='${basedir}' />
+                <addUser port='10001' user='user' script='pom.xml' />
+            </mpt:mpt>
+        </au:expectfailure>
+        <au:expectfailure>
+            <mpt:mpt port='10000' skip='true' host='example.org'>
+                <fileset dir='${basedir}' />
+                <addUser port='10001' user='user' passwd='passwd' />
+            </mpt:mpt>
+        </au:expectfailure>
+    </target>
+
+    <target name='testAddUserMayIncludeScriptText'>
+        <mpt:mpt port='10000' skip='true' host='example.org'>
+            <fileset dir='${basedir}'/>
+            <addUser port='10000' user='user' passwd='passwd'>C: Foo 
Bar</addUser>
+        </mpt:mpt>
+    </target>
+    
+    <target name='testAddUserBothScriptTextAndScriptAttributeMayNotBeSet'>
+        <au:expectfailure>
+            <mpt:mpt port='10000' skip='true' host='example.org'>
+                <fileset dir='${basedir}'/>
+                <addUser port='10000' user='user' passwd='passwd' 
script='pom.xml'>C: Foo Bar</addUser>
+            </mpt:mpt>
+        </au:expectfailure>
+    </target>
+
+    <target name='testMptAttributes' depends='testMustSetPort, 
testMaySetHost,testMustSetScriptsOrScript, testMustNotAllowScriptsAndScript'/>
+    <target name='testAddUser' depends='testShouldAllowAddUserToBeSet, 
testAddUserMustSetPortNamePasswordScript, testAddUserMayIncludeScriptText, 
testAddUserBothScriptTextAndScriptAttributeMayNotBeSet'/>
+
+    <target name='all' depends='testMptAttributes, testAddUser'/>
 </project>

Modified: 
james/protocol-tester/trunk/main/src/main/java/org/apache/james/mpt/ScriptedUserAdder.java
URL: 
http://svn.apache.org/viewvc/james/protocol-tester/trunk/main/src/main/java/org/apache/james/mpt/ScriptedUserAdder.java?rev=721793&r1=721792&r2=721793&view=diff
==============================================================================
--- 
james/protocol-tester/trunk/main/src/main/java/org/apache/james/mpt/ScriptedUserAdder.java
 (original)
+++ 
james/protocol-tester/trunk/main/src/main/java/org/apache/james/mpt/ScriptedUserAdder.java
 Sun Nov 30 03:04:07 2008
@@ -19,6 +19,7 @@
 
 package org.apache.james.mpt;
 
+import java.io.Reader;
 import java.io.StringReader;
 
 /**
@@ -37,10 +38,31 @@
     private final String script;
     private final Monitor monitor;
     
+    /**
+     * Constructs an adder without a script.
+     * Note that [EMAIL PROTECTED] #addUser(String, String)} will not be 
available
+     * @param host connect to this host
+     * @param port connect to this port
+     */
+    public ScriptedUserAdder(final String host, final int port)
+    {
+        this(host, port, (String) null);
+    }
+    
     public ScriptedUserAdder(final String host, final int port, final String 
script) {
         this(host, port, script, new NullMonitor());
     }
     
+    /**
+     * Note that [EMAIL PROTECTED] #addUser(String, String)} will not be 
available
+     * @param host connect to this host
+     * @param port connect to this port
+     * @param monitor not null
+     */
+    public ScriptedUserAdder(final String host, final int port, final Monitor 
monitor) {
+        this(host, port, null, monitor);
+    }
+    
     public ScriptedUserAdder(final String host, final int port, final String 
script, final Monitor monitor) {
         this.host = host;
         this.port = port;
@@ -48,13 +70,31 @@
         this.monitor = monitor;
     }
     
+    /**
+     * Adds a user using the script read from the given input.
+     * @param user user name, not null
+     * @param password password to set, not null
+     * @throws Exception upon failure
+     * @throws NullPointerException when script has not been set
+     */
     public void addUser(final String user, final String password) throws 
Exception {
+        final StringReader reader = new StringReader(script);
+        addUser(user, password, reader);
+    }
+
+    /**
+     * Adds a user using the script read from the given input.
+     * @param user user name, not null
+     * @param password password to set, not null
+     * @param reader reader for script, not null
+     * @throws Exception upon failure
+     */
+    public void addUser(final String user, final String password, final Reader 
reader) throws Exception {
         final ProtocolSessionBuilder builder = new ProtocolSessionBuilder();
         builder.setVariable(USER_VARIABLE_NAME, user);
         builder.setVariable(PASSWORD_VARIABLE_NAME, password);
         
         final Runner runner = new Runner();
-        final StringReader reader = new StringReader(script);
         builder.addProtocolLines(SCRIPT_NAME, reader, 
runner.getTestElements());
         final ExternalSessionFactory factory = new 
ExternalSessionFactory(host, port, monitor, null);
         runner.runSessions(factory);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to