-1
This is test code and thus shouldn't be wrapped up with the production deliverable. Moreover, files that need to be modified by the end users (in this case runtest.bat, runtest.sh, testconf.xml) shouldn't be in the src/java directory. Please delete and move the code to a more appropriate set of directories. --Peter > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Saturday, October 12, 2002 12:35 PM > To: [EMAIL PROTECTED] > Subject: cvs commit: jakarta-james/src/java/org/apache/james/testing > BaseTest.java Main.java POP3Test.java TestMethod.java runtest.bat > runtest.sh testconf.xml > > hbedi 2002/10/12 12:35:18 > > Added: src/java/org/apache/james/testing BaseTest.java Main.java > POP3Test.java TestMethod.java runtest.bat > runtest.sh testconf.xml > Log: > test suite and pop3 test. > > Revision Changes Path > 1.1 jakarta- > james/src/java/org/apache/james/testing/BaseTest.java > > Index: BaseTest.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software > License > * version 1.1, a copy of which has been included with this distribution > in > * the LICENSE file. > */ > package org.apache.james.testing; > > import junit.framework.TestCase; > import org.apache.avalon.framework.configuration.Configurable; > import org.apache.avalon.framework.configuration.Configuration; > import org.apache.avalon.framework.configuration.ConfigurationException; > > /** > * Base Test class. Can run a set of tests. > */ > public class BaseTest extends TestCase implements Configurable { > > private TestMethod[] testMethod; > private boolean showStat; > > public BaseTest(String name) { > super(name); > } > > public void configure(Configuration configuration) > throws ConfigurationException > { > // list of test methods > Configuration testseq = configuration.getChild("testsequence"); > showStat = testseq.getAttributeAsBoolean("showStat"); > Configuration[] testconf = testseq.getChildren("testmethod"); > testMethod = new TestMethod[testconf.length]; > for ( int i = 0 ; i < testMethod.length ; i++ ) > testMethod[i] = new TestMethod(testconf[i].getValue()); > } > > public final int countTestCases() { > return testMethod.length; > } > > protected final void runTest() throws Throwable { > for ( int i = 0 ; i < testMethod.length ; i++ ) { > testMethod[i].invoke(this); > if ( showStat ) > System.out.println("stat: "+getName()+", > "+testMethod[i]); > } > } > } > > > > 1.1 jakarta- > james/src/java/org/apache/james/testing/Main.java > > Index: Main.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software > License > * version 1.1, a copy of which has been included with this distribution > in > * the LICENSE file. > */ > package org.apache.james.testing; > > import junit.framework.*; > import junit.extensions.*; > import junit.textui.*; > import java.io.*; > import org.apache.avalon.framework.configuration.*; > import java.lang.reflect.*; > > /** > * Run tests. > * - Reads test configuration file, constructs test suite > * - initiates tests, reports result. > */ > public class Main { > public static void main(String[] args) throws Exception { > System.out.println("Usage java org.apache.james.testing.Main > <testconfigfile>"); > > File testconfFile = new File(args[0]); > DefaultConfigurationBuilder builder = new > DefaultConfigurationBuilder(); > Configuration alltestconf = builder.buildFromFile(testconfFile); > Configuration[] testconf = alltestconf.getChildren("test"); > TestSuite alltests = new TestSuite(); > for ( int i = 0 ; i < testconf.length ; i++ ) { > Configuration conf = testconf[i]; > String clsname = conf.getAttribute("class"); > String name = conf.getAttribute("name"); > int repetition = conf.getAttributeAsInteger("repetition"); > boolean async = conf.getAttributeAsBoolean("async"); > > Class clazz = Class.forName(clsname); > Constructor cstr = clazz.getConstructor(new Class[] { > String.class }); > Test test = (Test)cstr.newInstance(new Object[] {name}); > if ( test instanceof Configurable ) > ((Configurable)test).configure(conf); > > if (repetition > 1) > test = new RepeatedTest(test,repetition); > > if ( async ) { > TestSuite ts = new ActiveTestSuite(); > ts.addTest(test); > test = ts; > } > alltests.addTest(test); > } > TestRunner.run(alltests); > } > } > > > > 1.1 jakarta- > james/src/java/org/apache/james/testing/POP3Test.java > > Index: POP3Test.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software > License > * version 1.1, a copy of which has been included with this distribution > in > * the LICENSE file. > */ > package org.apache.james.testing; > > import java.io.InputStream; > import java.io.FileOutputStream; > import java.io.OutputStream; > import javax.mail.internet.MimeMessage; > import org.apache.avalon.excalibur.io.IOUtil; > import org.apache.avalon.framework.configuration.Configuration; > import org.apache.avalon.framework.configuration.ConfigurationException; > import org.apache.commons.net.SocketClient; > import org.apache.commons.net.pop3.POP3; > import org.apache.commons.net.pop3.POP3Client; > import org.apache.commons.net.pop3.POP3MessageInfo; > import org.apache.james.fetchpop.ReaderInputStream; > > /** > * Fetch mail. Can be configured and extended to test specific pop3 > * operations. > */ > public class POP3Test extends BaseTest { > private String host, username, password; > > public POP3Test(String name) { > super(name); > } > > public void configure(Configuration configuration) > throws ConfigurationException > { > this.host = configuration.getChild("host").getValue(); > this.username = configuration.getChild("username").getValue(); > this.password = configuration.getChild("password").getValue(); > super.configure(configuration); > } > > private POP3Client client; > > protected void setUp() throws Exception { > client = new POP3Client(); > client.connect(host); > } > > protected void tearDown() throws Exception { > client.disconnect(); > } > > // ----------- pop3 operations ------------ > > private POP3MessageInfo[] msg; > private static int saveMsgCounter; > > public void login() throws Exception { > client.login(username, password); > } > public void logout() throws Exception { > client.logout(); > } > public void fetchMsgsInfo() throws Exception { > msg = client.listMessages(); > } > > public void fetchMsgs() throws Exception { > for ( int i = 0 ; i < msg.length ; i++ ) > fetchMsg(msg[i],false); > } > > public void fetchAndSaveMsgs() throws Exception { > for ( int i = 0 ; i < msg.length ; i++ ) > fetchMsg(msg[i],true); > } > > public void deleteMsgs() throws Exception { > for ( int i = 0 ; i < msg.length ; i++ ) > client.deleteMessage(msg[i].number); > } > > private void fetchMsg(POP3MessageInfo msg,boolean save) throws > Exception { > InputStream in = new > ReaderInputStream(client.retrieveMessage(msg.number)); > try { > MimeMessage message = new MimeMessage(null, in); > if ( save ) { > OutputStream out = new FileOutputStream > ("pop3test-"+host+"- > "+username+"."+(saveMsgCounter++)+".eml"); > try { > message.writeTo(out); > } finally { > IOUtil.shutdownStream(out); > } > } > } finally { > IOUtil.shutdownStream(in); > } > } > } > > > > 1.1 jakarta- > james/src/java/org/apache/james/testing/TestMethod.java > > Index: TestMethod.java > =================================================================== > /* > * Copyright (C) The Apache Software Foundation. All rights reserved. > * > * This software is published under the terms of the Apache Software > License > * version 1.1, a copy of which has been included with this distribution > in > * the LICENSE file. > */ > package org.apache.james.testing; > > import java.lang.reflect.Method; > > class TestMethod { > // stats > private int timeTaken; > private int attempts; > private int success; > > final String name; > TestMethod(String name) { > this.name = name; > } > > // invoke test > void invoke(Object obj) throws Exception { > Method m = obj.getClass().getMethod(name,new Class[0]); > attempts++; > long st = System.currentTimeMillis(); > try { > m.invoke(obj,new Object[0]); > success++; > } finally { > timeTaken = (int)(System.currentTimeMillis() - st); > } > } > // print report. > public String toString() { > return name+", "+timeTaken+", "+success+", "+attempts; > } > } > > > > 1.1 jakarta- > james/src/java/org/apache/james/testing/runtest.bat > > Index: runtest.bat > =================================================================== > echo 'runs james test suite and outputs result in csv file format' > echo 'test, method, time taken, successful invocations, invocation > attempt' > java org.apache.james.testing.Main testconf.xml | grep "stat: " | sed > "s/.*stat: //g" > > > 1.1 jakarta- > james/src/java/org/apache/james/testing/runtest.sh > > Index: runtest.sh > =================================================================== > echo 'runs james test suite and outputs result in csv file format' > echo 'test, method, time taken, successful invocations, invocation > attempt' > java org.apache.james.testing.Main testconf.xml | grep "stat: " | sed > "s/.*stat: //g" > > > > 1.1 jakarta- > james/src/java/org/apache/james/testing/testconf.xml > > Index: testconf.xml > =================================================================== > <!-- test configuration file --> > <testsuite> > <test name="pop3test" async="true" repetition="5" > class="org.apache.james.testing.POP3Test"> > <host>localhost</host> > <username>harmeet</username> > <password>harmeet</password> > > <!-- call these test methods --> > <testsequence showStat="true"> > <testmethod>login</testmethod> > <testmethod>fetchMsgsInfo</testmethod> > <testmethod>fetchMsgs</testmethod> > <testmethod>logout</testmethod> > </testsequence> > </test> > <test name="pop3test" async="true" repetition="5" > class="org.apache.james.testing.POP3Test"> > <host>localhost</host> > <username>user1</username> > <password>user1</password> > > <!-- call these test methods --> > <testsequence showStat="true"> > <testmethod>login</testmethod> > <testmethod>fetchMsgsInfo</testmethod> > <testmethod>fetchMsgs</testmethod> > <testmethod>logout</testmethod> > </testsequence> > </test> > <test name="pop3test" async="true" repetition="5" > class="org.apache.james.testing.POP3Test"> > <host>localhost</host> > <username>user2</username> > <password>user2</password> > > <!-- call these test methods --> > <testsequence showStat="true"> > <testmethod>login</testmethod> > <testmethod>fetchMsgsInfo</testmethod> > <testmethod>fetchMsgs</testmethod> > <testmethod>logout</testmethod> > </testsequence> > </test> > <test name="pop3test" async="true" repetition="5" > class="org.apache.james.testing.POP3Test"> > <host>localhost</host> > <username>user3</username> > <password>user3</password> > > <!-- call these test methods --> > <testsequence showStat="true"> > <testmethod>login</testmethod> > <testmethod>fetchMsgsInfo</testmethod> > <testmethod>fetchMsgs</testmethod> > <testmethod>logout</testmethod> > </testsequence> > </test> > <test name="pop3test" async="true" repetition="5" > class="org.apache.james.testing.POP3Test"> > <host>localhost</host> > <username>user4</username> > <password>user4</password> > > <!-- call these test methods --> > <testsequence showStat="true"> > <testmethod>login</testmethod> > <testmethod>fetchMsgsInfo</testmethod> > <testmethod>fetchMsgs</testmethod> > <testmethod>logout</testmethod> > </testsequence> > </test> > </testsuite> > > > > > -- > To unsubscribe, e-mail: <mailto:james-dev- > [EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:james-dev- > [EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
