On 5 February 2012 08:00, <[email protected]> wrote:
> Author: pmouawad
> Date: Sun Feb 5 08:00:38 2012
> New Revision: 1240674
>
> URL: http://svn.apache.org/viewvc?rev=1240674&view=rev
> Log:
> Bug 52603 - MailerVisualizer : Enable SSL , TLS and Authentication
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java
>
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
> jmeter/trunk/xdocs/changes.xml
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java?rev=1240674&r1=1240673&r2=1240674&view=diff
> ==============================================================================
> --- jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java
> (original)
> +++ jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java
> Sun Feb 5 08:00:38 2012
> @@ -24,8 +24,10 @@ import java.util.List;
> import java.util.Properties;
> import java.util.StringTokenizer;
>
> +import javax.mail.Authenticator;
> import javax.mail.Message;
> import javax.mail.MessagingException;
> +import javax.mail.PasswordAuthentication;
> import javax.mail.Session;
> import javax.mail.Transport;
> import javax.mail.internet.AddressException;
> @@ -34,6 +36,7 @@ import javax.mail.internet.MimeMessage;
> import javax.swing.event.ChangeEvent;
> import javax.swing.event.ChangeListener;
>
> +import org.apache.commons.lang.StringUtils;
> import org.apache.jmeter.samplers.SampleResult;
> import org.apache.jmeter.testelement.AbstractTestElement;
> import org.apache.jmeter.util.JMeterUtils;
> @@ -45,13 +48,31 @@ import org.apache.log.Logger;
> *
> */
> public class MailerModel extends AbstractTestElement implements Serializable
> {
> -
> + public static enum MailAuthType {
> + SSL("SSL"),
> + TLS("TLS"),
> + NONE("");
> +
> + final private String value;
> + MailAuthType(String value) {
> + this.value = value;
> + }
> + }
> +
> private static final long serialVersionUID = 233L;
>
> private static final Logger log = LoggingManager.getLoggerForClass();
>
> private static final String MAIL_SMTP_HOST = "mail.smtp.host";
> //$NON-NLS-1$
>
> + private static final String MAIL_SMTP_PORT = "mail.smtp.port";
> //$NON-NLS-1$
> +
> + private static final String MAIL_SMTP_AUTH = "mail.smtp.auth";
> //$NON-NLS-1$
> +
> + private static final String MAIL_SMTP_SOCKETFACTORY_CLASS =
> "mail.smtp.socketFactory.class"; //$NON-NLS-1$
> +
> + private static final String MAIL_SMTP_STARTTLS =
> "mail.smtp.starttls.enable"; //$NON-NLS-1$
> +
> private long failureCount = 0;
>
> private long successCount = 0;
> @@ -68,6 +89,8 @@ public class MailerModel extends Abstrac
>
> private static final String HOST_KEY = "MailerModel.smtpHost";
> //$NON-NLS-1$
>
> + private static final String PORT_KEY = "MailerModel.smtpPort";
> //$NON-NLS-1$
> +
> private static final String SUCCESS_SUBJECT =
> "MailerModel.successSubject"; //$NON-NLS-1$
>
> private static final String FAILURE_SUBJECT =
> "MailerModel.failureSubject"; //$NON-NLS-1$
> @@ -76,8 +99,16 @@ public class MailerModel extends Abstrac
>
> private static final String SUCCESS_LIMIT_KEY =
> "MailerModel.successLimit"; //$NON-NLS-1$
>
> + private static final String LOGIN = "MailerModel.login"; //$NON-NLS-1$
> +
> + private static final String PASSWORD = "MailerModel.password";
> //$NON-NLS-1$
> +
> + private static final String MAIL_AUTH_TYPE = "MailerModel.authType";
> //$NON-NLS-1$
> +
> private static final String DEFAULT_LIMIT = "2"; //$NON-NLS-1$
>
> + private static final int DEFAULT_SMTP_PORT = 25;
> +
> /** The listener for changes. */
> private transient ChangeListener changeListener;
>
> @@ -180,7 +211,9 @@ public class MailerModel extends Abstrac
> if (addressList.size() != 0) {
> try {
> sendMail(getFromAddress(), addressList,
> getFailureSubject(), "URL Failed: "
> - + sample.getSampleLabel(), getSmtpHost());
> + + sample.getSampleLabel(), getSmtpHost(),
> + getSmtpPort(), getLogin(), getPassword(),
> + getMailAuthType());
> } catch (Exception e) {
> log.error("Problem sending mail: "+e);
> }
> @@ -215,6 +248,8 @@ public class MailerModel extends Abstrac
> notifyChangeListeners();
> }
>
> +
> +
> /**
> * Resets the state of this object to its default. But: This method does
> not
> * reset any mail-specific attributes (like sender, mail-subject...) since
> @@ -257,8 +292,35 @@ public class MailerModel extends Abstrac
> * the message-body.
> * @param smtpHost
> * the smtp-server used to send the mail.
> + * @throws MessagingException
> + * @throws AddressException
AFAIK, @throws clauses need some text
> */
> - public void sendMail(String from, List<String> vEmails, String subject,
> String attText, String smtpHost)
> + public void sendMail(String from, List<String> vEmails, String subject,
> String attText, String smtpHost)
> + throws AddressException, MessagingException {
> + sendMail(from, vEmails, subject, attText, smtpHost, null, null,
> null, null);
> + }
> +
> + /**
> + * Sends a mail with the given parameters using SMTP.
> + *
> + * @param from
> + * the sender of the mail as shown in the mail-client.
> + * @param vEmails
> + * all receivers of the mail. The receivers are seperated by
> + * commas.
> + * @param subject
> + * the subject of the mail.
> + * @param attText
> + * the message-body.
> + * @param smtpHost
> + * the smtp-server used to send the mail.
> + */
@throws clauses?
> + public void sendMail(String from, List<String> vEmails, String subject,
> + String attText, String smtpHost,
> + Integer smtpPort,
> + final String user,
> + final String password,
> + MailAuthType mailAuthType)
> throws AddressException, MessagingException {
> String host = smtpHost;
> boolean debug = Boolean.valueOf(host).booleanValue();
> @@ -274,15 +336,39 @@ public class MailerModel extends Abstrac
> Properties props = new Properties();
>
> props.put(MAIL_SMTP_HOST, host);
> - Session session = Session.getDefaultInstance(props, null);
> + if(smtpPort != null) {
> + props.put(MAIL_SMTP_PORT, smtpPort);
> + }
> + Authenticator authenticator = null;
> + if(mailAuthType != MailAuthType.NONE) {
> + props.put(MAIL_SMTP_AUTH, "true");
> + switch (mailAuthType) {
> + case SSL:
> + props.put(MAIL_SMTP_SOCKETFACTORY_CLASS,
> + "javax.net.ssl.SSLSocketFactory");
> + break;
> + case TLS:
> + props.put(MAIL_SMTP_STARTTLS,
> + "true");
> + break;
> +
> + default:
> + break;
> + }
> + }
> +
> + if(!StringUtils.isEmpty(user)) {
> + authenticator =
> + new javax.mail.Authenticator() {
> + protected PasswordAuthentication
> getPasswordAuthentication() {
> + return new PasswordAuthentication(user,password);
> + }
> + };
> + }
> + Session session = Session.getInstance(props, authenticator);
> // N.B. properties are only used when the default session is first
> // created
> // so check if the mail host needs to be reset...
Do the above comments still apply?
If so, where is the code?
If not, please remove.
> - props = session.getProperties();
> - if (!host.equalsIgnoreCase(props.getProperty(MAIL_SMTP_HOST))) {
> - props.setProperty(MAIL_SMTP_HOST, host);
> - }
> -
> session.setDebug(debug);
>
> // create a message
> @@ -305,7 +391,11 @@ public class MailerModel extends Abstrac
>
> log.info(attText);
>
> - sendMail(from, getAddressList(), subject, attText, smtpHost);
> + sendMail(from, getAddressList(), subject, attText, smtpHost,
> + getSmtpPort(),
> + getLogin(),
> + getPassword(),
> + getMailAuthType());
> log.info("Test mail sent successfully!!");
> }
>
> @@ -327,6 +417,26 @@ public class MailerModel extends Abstrac
> setProperty(HOST_KEY, str);
> }
>
> + public void setSmtpPort(Integer str) {
> + if(str== null) {
> + setProperty(PORT_KEY, DEFAULT_SMTP_PORT);
> + } else {
> + setProperty(PORT_KEY, str);
> + }
> + }
> +
> + public void setLogin(String login) {
> + setProperty(LOGIN, login);
> + }
> +
> + public void setPassword(String password) {
> + setProperty(PASSWORD, password);
> + }
> +
> + public void setMailAuthType(String value) {
> + setProperty(MAIL_AUTH_TYPE, value, "");
> + }
> +
> public void setFailureSubject(String str) {
> setProperty(FAILURE_SUBJECT, str);
> }
> @@ -365,6 +475,10 @@ public class MailerModel extends Abstrac
> return getPropertyAsString(HOST_KEY);
> }
>
> + public int getSmtpPort() {
> + return getPropertyAsInt(PORT_KEY, DEFAULT_SMTP_PORT);
> + }
> +
> public String getFailureSubject() {
> return getPropertyAsString(FAILURE_SUBJECT);
> }
> @@ -388,4 +502,17 @@ public class MailerModel extends Abstrac
> public long getFailureCount() {
> return this.failureCount;
> }
> -}
> +
> + public String getLogin() {
> + return getPropertyAsString(LOGIN);
> + }
> +
> + public String getPassword() {
> + return getPropertyAsString(PASSWORD);
> + }
> +
> + public MailAuthType getMailAuthType() {
> + String authType = getPropertyAsString(MAIL_AUTH_TYPE,
> MailAuthType.NONE.toString());
> + return MailAuthType.valueOf(authType);
> + }
> +}
> \ No newline at end of file
>
> Modified:
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java?rev=1240674&r1=1240673&r2=1240674&view=diff
> ==============================================================================
> ---
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
> (original)
> +++
> jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java
> Sun Feb 5 08:00:38 2012
> @@ -24,19 +24,23 @@ import java.awt.GridBagLayout;
> import java.awt.Insets;
> import java.awt.event.ActionEvent;
> import java.awt.event.ActionListener;
> +
> import javax.mail.MessagingException;
> import javax.mail.internet.AddressException;
> import javax.swing.BorderFactory;
> import javax.swing.JButton;
> +import javax.swing.JComboBox;
> import javax.swing.JLabel;
> import javax.swing.JOptionPane;
> import javax.swing.JPanel;
> +import javax.swing.JPasswordField;
> import javax.swing.JTextField;
> import javax.swing.border.Border;
> import javax.swing.border.EmptyBorder;
> import javax.swing.event.ChangeEvent;
> import javax.swing.event.ChangeListener;
>
> +import org.apache.commons.lang.StringUtils;
> import org.apache.jmeter.gui.util.VerticalPanel;
> import org.apache.jmeter.reporters.MailerModel;
> import org.apache.jmeter.reporters.MailerResultCollector;
> @@ -72,6 +76,8 @@ public class MailerVisualizer extends Ab
>
> private JTextField smtpHostField;
>
> + private JTextField smtpPortField;
> +
> private JTextField failureSubjectField;
>
> private JTextField successSubjectField;
> @@ -82,6 +88,13 @@ public class MailerVisualizer extends Ab
>
> private JTextField successLimitField;
>
> + private JTextField smtpLoginField;
> +
> + private JTextField smtpPasswordField;
> +
> + private JComboBox authTypeCombo;
> +
> +
> // private JPanel mainPanel;
> // private JLabel panelTitleLabel;
>
> @@ -180,6 +193,45 @@ public class MailerVisualizer extends Ab
> mailerPanel.add(smtpHostField);
>
> c.gridwidth = 1;
> + mailerPanel.add(new JLabel("SMTP Port:"));
> +
> + smtpPortField = new JTextField(25);
> + smtpPortField.setEditable(true);
> + c.gridwidth = GridBagConstraints.REMAINDER;
> + g.setConstraints(smtpPortField, c);
> + mailerPanel.add(smtpPortField);
> +
> + c.gridwidth = 1;
> + mailerPanel.add(new JLabel("SMTP Login:"));
> +
> + smtpLoginField = new JTextField(25);
> + smtpLoginField.setEditable(true);
> + c.gridwidth = GridBagConstraints.REMAINDER;
> + g.setConstraints(smtpLoginField, c);
> + mailerPanel.add(smtpLoginField);
> +
> + c.gridwidth = 1;
> + mailerPanel.add(new JLabel("SMTP Password:"));
> +
> + smtpPasswordField = new JPasswordField(25);
> + smtpPasswordField.setEditable(true);
> + c.gridwidth = GridBagConstraints.REMAINDER;
> + g.setConstraints(smtpPasswordField, c);
> + mailerPanel.add(smtpPasswordField);
> +
> + c.gridwidth = 1;
> + mailerPanel.add(new JLabel("AUTH TYPE"));
> +
> + authTypeCombo = new JComboBox(new Object[] {
> + MailerModel.MailAuthType.NONE.toString(),
> + MailerModel.MailAuthType.SSL.toString(),
> + MailerModel.MailAuthType.TLS.toString()});
> + c.gridwidth = GridBagConstraints.REMAINDER;
> + g.setConstraints(authTypeCombo, c);
> + mailerPanel.add(authTypeCombo);
> +
> +
> + c.gridwidth = 1;
> mailerPanel.add(new JLabel("Failure Subject:"));
>
> failureSubjectField = new JTextField(25);
> @@ -322,6 +374,13 @@ public class MailerVisualizer extends Ab
> mailerModel.setFailureSubject(failureSubjectField.getText());
> mailerModel.setFromAddress(fromField.getText());
> mailerModel.setSmtpHost(smtpHostField.getText());
> + mailerModel.setSmtpPort(
> + StringUtils.isEmpty(smtpPortField.getText()) ?
> + null : Integer.valueOf(smtpPortField.getText()));
> + mailerModel.setLogin(smtpLoginField.getText());
> + mailerModel.setPassword(smtpPasswordField.getText());
> + mailerModel.setMailAuthType(
> + authTypeCombo.getSelectedItem().toString());
> mailerModel.setSuccessLimit(successLimitField.getText());
> mailerModel.setSuccessSubject(successSubjectField.getText());
> mailerModel.setToAddress(addressField.getText());
> @@ -341,6 +400,10 @@ public class MailerVisualizer extends Ab
> addressField.setText(model.getToAddress());
> fromField.setText(model.getFromAddress());
> smtpHostField.setText(model.getSmtpHost());
> + smtpPortField.setText(Integer.toString(model.getSmtpPort()));
> + smtpLoginField.setText(model.getLogin());
> + smtpPasswordField.setText(model.getPassword());
> + authTypeCombo.setSelectedItem(model.getMailAuthType().toString());
> successSubjectField.setText(model.getSuccessSubject());
> failureSubjectField.setText(model.getFailureSubject());
> failureLimitField.setText(String.valueOf(model.getFailureLimit()));
>
> Modified: jmeter/trunk/xdocs/changes.xml
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1240674&r1=1240673&r2=1240674&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/changes.xml (original)
> +++ jmeter/trunk/xdocs/changes.xml Sun Feb 5 08:00:38 2012
> @@ -118,6 +118,7 @@ or a Debug Sampler with all fields set t
>
> <h3>Listeners</h3>
> <ul>
> +<li>Bug 52603 - MailerVisualizer : Enable SSL , TLS and Authentication</li>
> </ul>
>
> <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3>
>
>