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="§-num;.1.17" width="344" height="318" screenshot="mailreader_sampler.png"> -<description>TBA</description> +<component name="Mail Reader Sampler" index="§-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="§-num;.1.18" width="351" height="182" screenshot="test_action.png"> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]