| ++ 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 <path/to/config_file.xml> <scenario1> [<scenario2> ... ] |
| |
| ++ 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 |
| |
| |
| |
| |
| |
| |