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 2008/06/27 04:15:02 UTC

svn commit: r672077 - in /jakarta/jmeter/trunk: docs/images/screenshots/ src/core/org/apache/jmeter/resources/ src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/ src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/ xdocs/ xdocs/images...

Author: sebb
Date: Thu Jun 26 19:15:01 2008
New Revision: 672077

URL: http://svn.apache.org/viewvc?rev=672077&view=rev
Log:
Bug 45200 - MailReaderSampler: store the whole MIME message in the SamplerResult

Removed:
    jakarta/jmeter/trunk/docs/images/screenshots/mailreadersampler.png
    jakarta/jmeter/trunk/xdocs/images/screenshots/mailreadersampler.png
Modified:
    jakarta/jmeter/trunk/docs/images/screenshots/mailreader_sampler.png
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
    jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java
    jakarta/jmeter/trunk/xdocs/changes.xml
    jakarta/jmeter/trunk/xdocs/images/screenshots/mailreader_sampler.png
    jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml

Modified: jakarta/jmeter/trunk/docs/images/screenshots/mailreader_sampler.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/mailreader_sampler.png?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties Thu Jun 26 19:15:01 2008
@@ -448,6 +448,7 @@
 mail_reader_pop3s=POP3S
 mail_reader_server=Server:
 mail_reader_server_type=Server Type:
+mail_reader_storemime=Store the message using MIME
 mail_reader_title=Mail Reader Sampler
 mail_sent=Mail sent successfully
 mailer_attributes_panel=Mailing attributes

Modified: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java (original)
+++ jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java Thu Jun 26 19:15:01 2008
@@ -17,6 +17,7 @@
  */
 package org.apache.jmeter.protocol.mail.sampler;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.Properties;
@@ -54,6 +55,7 @@
 	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$
+	private final static String STORE_MIME_MESSAGE = "storeMimeMessage";
 	
 	// Needed by GUI
 	public final static String TYPE_POP3 = "pop3"; // $NON-NLS-1$
@@ -133,57 +135,10 @@
 				child.setSamplerData(cdata.toString());
 				cdata.setLength(0);
 				
-				cdata.append("Date: "); // $NON-NLS-1$
-				cdata.append(message.getSentDate());
-				cdata.append(NEW_LINE);
-
-				cdata.append("To: "); // $NON-NLS-1$
-				Address[] recips = message.getAllRecipients();
-				for (int j = 0; j < recips.length; j++) {
-					cdata.append(recips[j].toString());
-					if (j < recips.length - 1) {
-						cdata.append("; "); // $NON-NLS-1$
-					}
-				}
-				cdata.append(NEW_LINE);
-
-				cdata.append("From: "); // $NON-NLS-1$
-				Address[] from = message.getFrom();
-				for (int j = 0; j < from.length; j++) {
-					cdata.append(from[j].toString());
-					if (j < from.length - 1) {
-						cdata.append("; "); // $NON-NLS-1$
-					}
-				}
-				cdata.append(NEW_LINE);
-
-				cdata.append("Subject: "); // $NON-NLS-1$
-				cdata.append(message.getSubject());
-				cdata.append(NEW_LINE);
-				
-				cdata.append(NEW_LINE);
-				Object content = message.getContent();
-				if (content instanceof MimeMultipart) {
-					MimeMultipart mmp = (MimeMultipart) content;
-					int count = mmp.getCount();
-					cdata.append("Multipart. Count: ");
-					cdata.append(count);
-					cdata.append(NEW_LINE);
-					for (int j=0; j<count;j++){
-						BodyPart bodyPart = mmp.getBodyPart(j);
-						cdata.append("Type: ");
-						cdata.append(bodyPart.getContentType());
-						cdata.append(NEW_LINE);
-						try {
-							cdata.append(bodyPart.getContent());
-						} catch (UnsupportedEncodingException ex){
-							cdata.append(ex.getLocalizedMessage());
-						}
-						cdata.append(NEW_LINE);
-					}
+				if (isStoreMimeMessage()) {
+                    appendMessageAsMime(cdata, message);
 				} else {
-				    cdata.append(content);
-					cdata.append(NEW_LINE);
+                    appendMessageData(cdata, message);
 				}
 
 				if (deleteMessages) {
@@ -232,6 +187,67 @@
 		parent.setSuccessful(isOK);
 		return parent;
 	}
+	
+	private void appendMessageData(StringBuffer cdata, Message message)
+			throws MessagingException, IOException {
+		cdata.append("Date: "); // $NON-NLS-1$
+		cdata.append(message.getSentDate());// TODO - use a different format here?
+		cdata.append(NEW_LINE);
+
+		cdata.append("To: "); // $NON-NLS-1$
+		Address[] recips = message.getAllRecipients();
+		for (int j = 0; j < recips.length; j++) {
+			cdata.append(recips[j].toString());
+			if (j < recips.length - 1) {
+				cdata.append("; "); // $NON-NLS-1$
+			}
+		}
+		cdata.append(NEW_LINE);
+
+		cdata.append("From: "); // $NON-NLS-1$
+		Address[] from = message.getFrom();
+		for (int j = 0; j < from.length; j++) {
+			cdata.append(from[j].toString());
+			if (j < from.length - 1) {
+				cdata.append("; "); // $NON-NLS-1$
+			}
+		}
+		cdata.append(NEW_LINE);
+
+		cdata.append("Subject: "); // $NON-NLS-1$
+		cdata.append(message.getSubject());
+		cdata.append(NEW_LINE);
+		
+		cdata.append(NEW_LINE);
+		Object content = message.getContent();
+		if (content instanceof MimeMultipart) {
+			MimeMultipart mmp = (MimeMultipart) content;
+			int count = mmp.getCount();
+			cdata.append("Multipart. Count: ");
+			cdata.append(count);
+			cdata.append(NEW_LINE);
+			for (int j=0; j<count;j++){
+				BodyPart bodyPart = mmp.getBodyPart(j);
+				cdata.append("Type: ");
+				cdata.append(bodyPart.getContentType());
+				cdata.append(NEW_LINE);
+				try {
+					cdata.append(bodyPart.getContent());
+				} catch (UnsupportedEncodingException ex){
+					cdata.append(ex.getLocalizedMessage());
+				}
+			}
+		} else {
+		    cdata.append(content);
+		}
+	}
+	
+	private void appendMessageAsMime(StringBuffer cdata, Message message)
+			throws MessagingException, IOException {
+		ByteArrayOutputStream bout = new ByteArrayOutputStream();
+		message.writeTo(bout);
+		cdata.append(bout);
+	}
 
 	/**
 	 * Sets the type of protocol to use when talking with the remote mail
@@ -363,4 +379,21 @@
 	public boolean getDeleteMessages() {
 		return getPropertyAsBoolean(DELETE);
 	}
+	
+	/**
+	 * @return Whether or not to store the retrieved message as MIME message in
+	 *         the sample result
+	 */
+	public boolean isStoreMimeMessage() {
+		return getPropertyAsBoolean(STORE_MIME_MESSAGE, false);
+	}
+
+	/**
+	 * @param storeMimeMessage
+	 *            Whether or not to store the retrieved message as MIME message in the
+	 *            sample result
+	 */
+	public void setStoreMimeMessage(boolean storeMimeMessage) {
+		setProperty(STORE_MIME_MESSAGE, storeMimeMessage, false);
+	}
 }

Modified: jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java (original)
+++ jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java Thu Jun 26 19:15:01 2008
@@ -60,6 +60,8 @@
 	private JTextField someMessagesField;
 
 	private JCheckBox deleteBox;
+	
+	private JCheckBox storeMimeMessageBox;
 
 	// Labels
 	private final static String POP3Label = JMeterUtils.getResString("mail_reader_pop3");// $NON-NLS-1$
@@ -86,6 +88,8 @@
 
 	private final static String FolderLabel = JMeterUtils.getResString("mail_reader_folder");// $NON-NLS-1$
 
+    private final static String STOREMIME = JMeterUtils.getResString("mail_reader_storemime");// $NON-NLS-1$
+
 	private static final String INBOX = "INBOX"; // $NON-NLS-1$
 
 	public MailReaderSamplerGui() {
@@ -128,6 +132,7 @@
 			someMessagesField.setText(mrs.getNumMessagesString());
 		}
 		deleteBox.setSelected(mrs.getDeleteMessages());
+		storeMimeMessageBox.setSelected(mrs.isStoreMimeMessage());
 		super.configure(element);
 	}
 
@@ -175,6 +180,7 @@
 			mrs.setNumMessages(someMessagesField.getText());
 		}
 		mrs.setDeleteMessages(deleteBox.isSelected());
+		mrs.setStoreMimeMessage(storeMimeMessageBox.isSelected());
 	}
 
 	// TODO - fix GUI layout problems
@@ -266,6 +272,9 @@
 
 		deleteBox = new JCheckBox(DeleteLabel);
 		add(deleteBox);
+		
+		storeMimeMessageBox = new JCheckBox(STOREMIME);
+		add(storeMimeMessageBox);
 	}
 
 	public void clearGui() {
@@ -278,9 +287,11 @@
 		//someMessagesButton.setSelected(false);
 		//someMessagesField.setText("0");
 		deleteBox.setSelected(false);
+		storeMimeMessageBox.setSelected(false);
 		folderBox.setText(INBOX);
-		passwordBox.setText("");
-		serverBox.setText("");
-		usernameBox.setText("");
+		serverTypeBox.setSelectedIndex(0);
+		passwordBox.setText("");// $NON-NLS-1$
+		serverBox.setText("");// $NON-NLS-1$
+		usernameBox.setText("");// $NON-NLS-1$
 	}
 }

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Thu Jun 26 19:15:01 2008
@@ -86,6 +86,7 @@
 <li>Add OUT variable to jexl function</li>
 <li>Save Responses to a file can save the generated filename(s) to variables.</li>
 <li>Add BSF Listener element</li>
+<li>Bug 45200 - MailReaderSampler: store the whole MIME message in the SamplerResult</li>
 </ul>
 
 <h3>Non-functional changes</h3>

Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/mailreader_sampler.png
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/mailreader_sampler.png?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Thu Jun 26 19:15:01 2008
@@ -1201,8 +1201,27 @@
 </properties>
 </component>
 
-<component name="Mail Reader Sampler"  index="&sect-num;.1.17"  width="344" height="318" screenshot="mailreader_sampler.png">
-<description>TBA</description>
+<component name="Mail Reader Sampler"  index="&sect-num;.1.17"  width="340" height="365" screenshot="mailreader_sampler.png">
+<description>
+<p>
+The Mail Reader Sampler can read (and optionally delete) mail messages using POP3(S) or IMAP(S) protocols.
+</p>
+<note>
+The sampler requires the JavaMail and JAF jars to be available on the classpath.
+To use POP3S or IMAPS requires a recent version of JavaMail (e.g. JavaMail 1.4.1 and JAF 1.1.1).
+</note>
+</description>
+<properties>
+<property name="Name" required="">Descriptive name for this element that is shown in the tree.</property>
+<property name="Server Type" required="Yes">The protocol used by the server: POP3, POP3S, IMAP, IMAPS</property>
+<property name="Server" required="Yes">Hostname or IP address of the server</property>
+<property name="Username" required="">User login name</property>
+<property name="Password" required="">User login password (N.B. this is stored unencrypted in the test plan)</property>
+<property name="Folder" required="Yes, if using IMAP(S)">The IMAP(S) folder to use</property>
+<property name="Number of messages to retrieve" required="Yes">Set this to retrieve all or some messages</property>
+<property name="Delete messages from the server" required="Yes">If set, messages will be deleted after retrieval</property>
+<property name="Store the message using MIME" required="Yes">Whether to store the message as MIME. If not, fewer headers are stored (Date, To, From, Subject).</property>
+</properties>
 </component>
 
 <component name="Test Action" index="&sect-num;.1.18"  width="351" height="182" screenshot="test_action.png">



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