++ Overview What is it? A small stand-alone tool to put load onto a running James Server and record its performance. What's the name? Postage. (Well, maybe we can fix that soon.) How is the load generated? By sending mails from/to a number of internal/external accounts. How is the load measured? By matching sent and delivered test mails, and recording timestamps when sending and retrieving mails. Recording James' JVM memory data is a planned feature. How does the tool evaluate the recorded data? Does it paint nice diagrams? It doesn't. But you should be able to import the Comma Separated Data it generates into a spreadsheet of your choice. I want to simulate a large user base, how can I do that? Postage creates any number of users you want. See Postage configuration. How does Postage send mail? a. By sending mail in using James' SMTP service b. By sending mail out ('relaying') through James' SMTP service How does Postage know if delivery was successful? a. By polling internal accounts through James' POP3 service b. By acting as a mail gateway for James' outbound mail coming through SMTP ++ James configuration + incoming SMTP must be enabled for the machine running postage (TODO: add config part here) + POP3 must be enabled with "simple" authentication + James must handle mail for internal user domain (TODO: add config part here) + ++ start Postage org.apache.james.postage.Main [ ... ] ++ needed libraries the following libraries are expected on the classpath: for reading xml configuration file: commons-collections-3.1.jar commons-configuration-1.5.jar commons-lang-2.3.jar for logging: commons-logging-1.1.jar for telnet, SMTP & POP3 client: commons-net-1.4.1.jar for unit testing: junit-3.8.1.jar for embedded SMTP server from James: mail-1.4.1.jar activation-1.1.1.jar cornerstone-sockets-api-2.2.2.jar cornerstone-sockets-impl-2.2.2.jar cornerstone-threads-api-2.2.2.jar cornerstone-connection-impl-2.2.2.jar avalon-framework-api-4.3.1.jar avalon-framework-impl-4.3.1.jar excalibur-thread-api-2.2.1.jar excalibur-thread-impl-2.2.1.jar excalibur-pool-api-2.2.1.jar james-server-core-library-3.0-SNAPSHOT.jar james-server-smtpserver-function-3.0-SNAPSHOT.jar mailet-2.4-SNAPSHOT.jar james-server-domain-api-3.0-SNAPSHOT.jar concurrent-1.3.4.jar excalibur-pool-impl-2.2.1.jar apache-james-mailet-base-1.0-SNAPSHOT.jar cornerstone-connection-api-2.2.2.jar dnsjava-2.0.6.jar ++ How does it work? + Prepare James + Prepare the Postage configuration + Start Postage Postage selects the Scenario you want to run Postage checks if all services can be reached Postage starts to do its job Postage writes all recorded data