From: "Peter M. Goldstein" <[EMAIL PROTECTED]> > Please delete and move the code to a more appropriate set of > directories.
Can you suggest where ? > This is test code and thus shouldn't be wrapped up with the production > deliverable. Test code has been a part of src and shipped with production for many years in James.. Why the sudden shift ? Let us get more tests first and then do refactor. Harmeet ----- Original Message ----- From: "Peter M. Goldstein" <[EMAIL PROTECTED]> To: "'James Developers List'" <[EMAIL PROTECTED]> Sent: Saturday, October 12, 2002 1:05 PM Subject: RE: cvs commit: jakarta-james/src/java/org/apache/james/testing BaseTest.java Main.java POP3Test.java TestMethod.java runtest.bat runtest.sh testconf.xml > > -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]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
