You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2006/04/05 20:39:57 UTC

svn commit: r391700 - /jakarta/jmeter/branches/rel-2-1/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java

Author: sebb
Date: Wed Apr  5 11:39:57 2006
New Revision: 391700

URL: http://svn.apache.org/viewcvs?rev=391700&view=rev
Log:
Add some support for MimeMultipart
TODO - create subsamples for each message

Modified:
    jakarta/jmeter/branches/rel-2-1/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java

Modified: jakarta/jmeter/branches/rel-2-1/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
URL: http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java?rev=391700&r1=391699&r2=391700&view=diff
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java (original)
+++ jakarta/jmeter/branches/rel-2-1/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java Wed Apr  5 11:39:57 2006
@@ -16,14 +16,18 @@
  */
 package org.apache.jmeter.protocol.mail.sampler;
 
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.UnsupportedCharsetException;
 import java.util.Properties;
 
 import javax.mail.Address;
+import javax.mail.BodyPart;
 import javax.mail.Flags;
 import javax.mail.Folder;
 import javax.mail.Message;
 import javax.mail.Session;
 import javax.mail.Store;
+import javax.mail.internet.MimeMultipart;
 
 import org.apache.jmeter.samplers.AbstractSampler;
 import org.apache.jmeter.samplers.Entry;
@@ -37,30 +41,21 @@
  * @author Thad Smith
  */
 public class MailReaderSampler extends AbstractSampler {
-	private static Logger log = LoggingManager.getLoggerForClass();
+	private static final Logger log = LoggingManager.getLoggerForClass();
 
-	// Where we keep all of the mail connection information
-	// NOTUSED private Properties props = new Properties();
+	private final static String SERVER_TYPE = "host_type"; // $NON-NLS-1$
+	private final static String SERVER = "host"; // $NON-NLS-1$
+	private final static String USERNAME = "username"; // $NON-NLS-1$
+	private final static String PASSWORD = "password"; // $NON-NLS-1$
+	private final static String FOLDER = "folder"; // $NON-NLS-1$
+	private final static String DELETE = "delete"; // $NON-NLS-1$
+	private final static String NUM_MESSAGES = "num_messages"; // $NON-NLS-1$
+	private static final String NEW_LINE = "\n"; // $NON-NLS-1$
+	
+	// Needed by GUI
+	public final static String TYPE_POP3 = "pop3"; // $NON-NLS-1$
+	public final static String TYPE_IMAP = "imap"; // $NON-NLS-1$
 
-	// Static data identifiers
-	private final static String SERVER_TYPE = "host_type";
-
-	private final static String SERVER = "host";
-
-	private final static String USERNAME = "username";
-
-	private final static String PASSWORD = "password";
-
-	private final static String FOLDER = "folder";
-
-	private final static String DELETE = "delete";
-
-	private final static String NUM_MESSAGES = "num_messages";
-
-	// Static data values
-	public final static String TYPE_POP3 = "pop3";
-
-	public final static String TYPE_IMAP = "imap";
 
 	public MailReaderSampler() {
 		setServerType(TYPE_POP3);
@@ -77,6 +72,7 @@
 	public SampleResult sample(Entry e) {
 		SampleResult res = new SampleResult();
 		boolean isOK = false; // Did sample succeed?
+		boolean deleteMessages = getDeleteMessages();
 
 		res.setSampleLabel(getName());
         res.setSamplerData(getServerType() + "://" + getUserName() + "@" + getServer());
@@ -97,49 +93,88 @@
 
 			// Get folder
 			Folder folder = store.getFolder(getFolder());
-			folder.open(Folder.READ_WRITE);
+			if (deleteMessages) {
+			    folder.open(Folder.READ_WRITE);
+			} else {
+			    folder.open(Folder.READ_ONLY);
+			}
 
 			// Get directory
 			Message messages[] = folder.getMessages();
 			Message message;
 			StringBuffer data = new StringBuffer();
-			data.append(messages.length + " new messages\n");
+			data.append(messages.length);
+			data.append(" messages found\n");
 
 			int n = getNumMessages();
 			if (n == -1 || n > messages.length)
 				n = messages.length;
 
+			// TODO - create a sample result for each message?
 			for (int i = 0; i < n; i++) {
 				message = messages[i];
 
-				if (i == 0)
+				if (i == 0) { // Assumes all the messaged have the same type ...
 					res.setContentType(message.getContentType());
+				}
 
-				data.append("Message " + message.getMessageNumber() + ":\n");
-				data.append("Date: " + message.getSentDate() + "\n");
+				data.append("Message "); // $NON-NLS-1$
+				data.append(message.getMessageNumber());
+				data.append(":\n"); // $NON-NLS-1$
+				
+				data.append("Date: "); // $NON-NLS-1$
+				data.append(message.getSentDate());
+				data.append(NEW_LINE);
 
-				data.append("To: ");
+				data.append("To: "); // $NON-NLS-1$
 				Address[] recips = message.getAllRecipients();
 				for (int j = 0; j < recips.length; j++) {
 					data.append(recips[j].toString());
 					if (j < recips.length - 1)
-						data.append("; ");
+						data.append("; "); // $NON-NLS-1$
 				}
-				data.append("\n");
+				data.append(NEW_LINE);
 
-				data.append("From: ");
+				data.append("From: "); // $NON-NLS-1$
 				Address[] from = message.getFrom();
 				for (int j = 0; j < from.length; j++) {
 					data.append(from[j].toString());
 					if (j < from.length - 1)
-						data.append("; ");
+						data.append("; "); // $NON-NLS-1$
 				}
-				data.append("\n");
+				data.append(NEW_LINE);
 
-				data.append("Subject: " + message.getSubject() + "\n");
-				data.append("\n" + message.getContent());
+				data.append("Subject: "); // $NON-NLS-1$
+				data.append(message.getSubject());
+				data.append(NEW_LINE);
+				
+				data.append(NEW_LINE);
+				Object content = message.getContent();
+				if (content instanceof MimeMultipart) {
+					MimeMultipart mmp = (MimeMultipart) content;
+					int count = mmp.getCount();
+					data.append("Multipart. Count: ");
+					data.append(count);
+					data.append(NEW_LINE);
+					for (int j=0; j<count;j++){
+						BodyPart bodyPart = mmp.getBodyPart(j);
+						data.append("Type: ");
+						data.append(bodyPart.getContentType());
+						data.append(NEW_LINE);
+						try {
+							data.append(bodyPart.getContent());
+						} catch (UnsupportedEncodingException ex){
+							data.append(ex.getLocalizedMessage());
+						}
+						data.append(NEW_LINE);
+					}
+				} else {
+				    data.append(content);
+					data.append(NEW_LINE);
+				}
+				data.append(NEW_LINE);
 
-				if (getDeleteMessages()) {
+				if (deleteMessages) {
 					message.setFlag(Flags.Flag.DELETED, true);
 				}
 			}
@@ -155,15 +190,15 @@
 			res.setDataType(SampleResult.TEXT);
 
 			res.setResponseCodeOK();
-			res.setResponseMessage("OK");
+			res.setResponseMessage("OK"); // $NON-NLS-1$
 			isOK = true;
         } catch (NoClassDefFoundError ex) {
             log.debug("",ex);// No need to log normally, as we set the status
-            res.setResponseCode("500");
+            res.setResponseCode("500"); // $NON-NLS-1$
             res.setResponseMessage(ex.toString());
 		} catch (Exception ex) {
 			log.debug("", ex);// No need to log normally, as we set the status
-			res.setResponseCode("500");
+			res.setResponseCode("500"); // $NON-NLS-1$
 			res.setResponseMessage(ex.toString());
 		}
 



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org