Author: berndf
Date: Wed Aug 30 07:07:15 2006
New Revision: 438486

URL: http://svn.apache.org/viewvc?rev=438486&view=rev
Log:
Ignore test mails found from previous runs (see jira POSTAGE-10)

Modified:
    
james/postage/trunk/src/main/java/org/apache/james/postage/PostageRunner.java
    
james/postage/trunk/src/main/java/org/apache/james/postage/client/POP3Client.java
    
james/postage/trunk/src/main/java/org/apache/james/postage/client/SMTPClient.java
    
james/postage/trunk/src/main/java/org/apache/james/postage/jmx/JVMResourceSampler.java
    
james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java
    
james/postage/trunk/src/main/java/org/apache/james/postage/mail/HeaderConstants.java
    
james/postage/trunk/src/main/java/org/apache/james/postage/result/MailProcessingRecord.java
    
james/postage/trunk/src/main/java/org/apache/james/postage/smtpserver/SimpleMailServer.java

Modified: 
james/postage/trunk/src/main/java/org/apache/james/postage/PostageRunner.java
URL: 
http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/PostageRunner.java?rev=438486&r1=438485&r2=438486&view=diff
==============================================================================
--- 
james/postage/trunk/src/main/java/org/apache/james/postage/PostageRunner.java 
(original)
+++ 
james/postage/trunk/src/main/java/org/apache/james/postage/PostageRunner.java 
Wed Aug 30 07:07:15 2006
@@ -74,6 +74,17 @@
     private int  m_minutesRunning = 0;
 
     /**
+     * defines the prefix for every mail id generated by the current runner, 
so they can be distinguished from
+     * next runs. the runner instance is responsable to initializing this 
value!
+     * NOTE: this construct becomes a problem when two runners are running in 
parallel
+     */
+    private static String m_messageIdPrefix = null;
+
+    public static String getMessageIdPrefix() {
+       return m_messageIdPrefix + "-";
+    }
+
+    /**
      * sends messages to James in two ways:
      * 1. internal users relay to internal or external users using (inbound) 
SMTP
      * 2. external users send mail to internal users using (inbound) SMTP
@@ -85,7 +96,9 @@
      * @param postageConfiguration
      */
     public PostageRunner(PostageConfiguration postageConfiguration) {
-        m_postageConfiguration = postageConfiguration;
+       m_messageIdPrefix = "" + System.currentTimeMillis();
+
+       m_postageConfiguration = postageConfiguration;
 
         int totalMailsPerMin = m_postageConfiguration.getTotalMailsPerMin();
         int durationMinutes = m_postageConfiguration.getDurationMinutes();

Modified: 
james/postage/trunk/src/main/java/org/apache/james/postage/client/POP3Client.java
URL: 
http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/client/POP3Client.java?rev=438486&r1=438485&r2=438486&view=diff
==============================================================================
--- 
james/postage/trunk/src/main/java/org/apache/james/postage/client/POP3Client.java
 (original)
+++ 
james/postage/trunk/src/main/java/org/apache/james/postage/client/POP3Client.java
 Wed Aug 30 07:07:15 2006
@@ -28,7 +28,7 @@
 import org.apache.james.postage.SamplingException;
 import org.apache.james.postage.StartupException;
 import org.apache.james.postage.execution.Sampler;
-import org.apache.james.postage.mail.HeaderConstants;
+import org.apache.james.postage.mail.MailMatchingUtils;
 import org.apache.james.postage.result.MailProcessingRecord;
 import org.apache.james.postage.result.PostageRunnerResult;
 import org.apache.james.postage.user.UserList;
@@ -42,7 +42,6 @@
 import java.io.InputStream;
 import java.io.Reader;
 import java.util.Iterator;
-import java.util.List;
 
 public class POP3Client implements Sampler {
 
@@ -117,8 +116,6 @@
         try {
             org.apache.commons.net.pop3.POP3Client pop3Client = 
openConnection(username);
 
-
-
             // retrieve all messages
             POP3MessageInfo[] entries = null;
             try {
@@ -173,19 +170,9 @@
 
         InputStream in = new ReaderInputStream(mailReader);
         MimeMessage message;
-        String id = null;
         try {
             message = new MimeMessage(null, in);
             in.close();
-
-            String[] idHeaders = 
message.getHeader(HeaderConstants.MAIL_ID_HEADER);
-            if (idHeaders != null && idHeaders.length > 0) {
-                id = idHeaders[0]; // there should be exactly one.
-            }
-            if (id == null) {
-                log.info("skipping non-postage mail. remains on server. 
subject was: " + message.getSubject());
-                return;
-            }
         } catch (IOException e) {
             log.info("failed to close mail reader.");
             return;
@@ -194,6 +181,10 @@
             return;
         }
 
+
+        if (!MailMatchingUtils.isMatchCandidate(message)) return;
+
+        String id = MailMatchingUtils.getMailIdHeader(message);
         try {
             mailProcessingRecord.setByteReceivedTotal(message.getSize());
 

Modified: 
james/postage/trunk/src/main/java/org/apache/james/postage/client/SMTPClient.java
URL: 
http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/client/SMTPClient.java?rev=438486&r1=438485&r2=438486&view=diff
==============================================================================
--- 
james/postage/trunk/src/main/java/org/apache/james/postage/client/SMTPClient.java
 (original)
+++ 
james/postage/trunk/src/main/java/org/apache/james/postage/client/SMTPClient.java
 Wed Aug 30 07:07:15 2006
@@ -22,6 +22,7 @@
 
 import org.apache.james.postage.SamplingException;
 import org.apache.james.postage.StartupException;
+import org.apache.james.postage.mail.HeaderConstants;
 import org.apache.james.postage.configuration.MailSender;
 import org.apache.james.postage.execution.Sampler;
 import org.apache.james.postage.result.MailProcessingRecord;
@@ -62,6 +63,7 @@
 
             MailProcessingRecord proformaMailProcessingRecord = new 
MailProcessingRecord();
             Session session = getMailSession();
+            
proformaMailProcessingRecord.setMailId(HeaderConstants.JAMES_POSTAGE_STARTUPCHECK_HEADER_ID);
             Message message = m_mailSender.createMail(session, 
proformaMailProcessingRecord);
             setMailFromAndTo(message, proformaMailProcessingRecord);
             Transport.send(message);

Modified: 
james/postage/trunk/src/main/java/org/apache/james/postage/jmx/JVMResourceSampler.java
URL: 
http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/jmx/JVMResourceSampler.java?rev=438486&r1=438485&r2=438486&view=diff
==============================================================================
--- 
james/postage/trunk/src/main/java/org/apache/james/postage/jmx/JVMResourceSampler.java
 (original)
+++ 
james/postage/trunk/src/main/java/org/apache/james/postage/jmx/JVMResourceSampler.java
 Wed Aug 30 07:07:15 2006
@@ -83,7 +83,7 @@
     public void connectRemoteJamesJMXServer() throws SamplingException {
         if(jvmResourceSampleWorker == null) throw new SamplingException("JSE 
specific features not present. (compile the project with JSE 5)");
         try {
-            m_connectMethod.invoke(jvmResourceSampleWorker, 
VOID_ARGUMENT_LIST);
+            m_connectMethod.invoke(jvmResourceSampleWorker, 
(Object[])VOID_ARGUMENT_LIST);
         } catch (Exception e) {
             throw new SamplingException("could not establish connection to 
remote James JMX. is James really configured for JMX and running under JSE5 or 
later?");
         }
@@ -92,7 +92,7 @@
     public void doSample() throws SamplingException {
         if(jvmResourceSampleWorker == null) throw new SamplingException("JSE 
specific features not present. (compile the project with JSE 5)");
         try {
-            m_doSampleMethod.invoke(jvmResourceSampleWorker, 
VOID_ARGUMENT_LIST);
+            m_doSampleMethod.invoke(jvmResourceSampleWorker, 
(Object[])VOID_ARGUMENT_LIST);
         } catch (Exception e) {
             throw new SamplingException(e);
         }

Modified: 
james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java
URL: 
http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java?rev=438486&r1=438485&r2=438486&view=diff
==============================================================================
--- 
james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java
 (original)
+++ 
james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java
 Wed Aug 30 07:07:15 2006
@@ -63,6 +63,10 @@
 
             if (mailProcessingRecord.getMailId() != null) {
                 message.addHeader(HeaderConstants.MAIL_ID_HEADER, 
mailProcessingRecord.getMailId());
+            } else {
+               // TODO resolve situations when ID is null
+               log.warn("ID header is NULL!");
+               throw new RuntimeException("could not create mail with ID = 
NULL");
             }
 
             if (mailSender.sendTextPart()) {

Modified: 
james/postage/trunk/src/main/java/org/apache/james/postage/mail/HeaderConstants.java
URL: 
http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/mail/HeaderConstants.java?rev=438486&r1=438485&r2=438486&view=diff
==============================================================================
--- 
james/postage/trunk/src/main/java/org/apache/james/postage/mail/HeaderConstants.java
 (original)
+++ 
james/postage/trunk/src/main/java/org/apache/james/postage/mail/HeaderConstants.java
 Wed Aug 30 07:07:15 2006
@@ -26,4 +26,6 @@
 public class HeaderConstants {
     public static final String MAIL_ID_HEADER = "X-James-Postage-Count";
     public static final String JAMES_POSTAGE_HEADER = "X-James-Postage";
+
+    public static final String JAMES_POSTAGE_STARTUPCHECK_HEADER_ID = 
"PROFORMA";
 }

Modified: 
james/postage/trunk/src/main/java/org/apache/james/postage/result/MailProcessingRecord.java
URL: 
http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/result/MailProcessingRecord.java?rev=438486&r1=438485&r2=438486&view=diff
==============================================================================
--- 
james/postage/trunk/src/main/java/org/apache/james/postage/result/MailProcessingRecord.java
 (original)
+++ 
james/postage/trunk/src/main/java/org/apache/james/postage/result/MailProcessingRecord.java
 Wed Aug 30 07:07:15 2006
@@ -20,6 +20,8 @@
 
 package org.apache.james.postage.result;
 
+import org.apache.james.postage.PostageRunner;
+
 /**
  * contains all gathered data concerning one mail message
  */
@@ -37,8 +39,8 @@
     String senderMailAddress;
     String receiver;
     String receiverMailAddress;
-    long timeSendStart;
     long timeSendEnd;
+    long timeSendStart;
     long byteSendText;
     long byteSendBinary;
     int errorNumberSending;
@@ -54,7 +56,7 @@
     String receivingQueue;
 
     public synchronized static String getNextId() {
-        return "" + (m_messageId++);
+        return PostageRunner.getMessageIdPrefix() + (m_messageId++);
     }
 
     public boolean isMatchedSentAndReceived() {

Modified: 
james/postage/trunk/src/main/java/org/apache/james/postage/smtpserver/SimpleMailServer.java
URL: 
http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/smtpserver/SimpleMailServer.java?rev=438486&r1=438485&r2=438486&view=diff
==============================================================================
--- 
james/postage/trunk/src/main/java/org/apache/james/postage/smtpserver/SimpleMailServer.java
 (original)
+++ 
james/postage/trunk/src/main/java/org/apache/james/postage/smtpserver/SimpleMailServer.java
 Wed Aug 30 07:07:15 2006
@@ -25,6 +25,7 @@
 import org.apache.james.postage.result.MailProcessingRecord;
 import org.apache.james.postage.result.PostageRunnerResult;
 import org.apache.james.postage.mail.HeaderConstants;
+import org.apache.james.postage.mail.MailMatchingUtils;
 import org.apache.james.services.MailRepository;
 import org.apache.james.services.MailServer;
 import org.apache.mailet.Mail;
@@ -58,12 +59,10 @@
         mailProcessingRecord.setByteReceivedTotal(msg.getSize());
 
         try {
-            String[] id = msg.getHeader(HeaderConstants.MAIL_ID_HEADER);
-            if (id == null || id.length == 0 ) {
-                log.info("skipping non-postage mail. message is lost. subject 
was: " + msg.getSubject());
-                return;
-            }
-            mailProcessingRecord.setMailId(id[0]);
+            if (!MailMatchingUtils.isMatchCandidate(msg)) return;
+
+            String id = MailMatchingUtils.getMailIdHeader(msg);
+            mailProcessingRecord.setMailId(id);
 
             String[] subjectHeader = msg.getHeader("Subject");
             if (subjectHeader != null && subjectHeader.length > 0) {



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

Reply via email to