On Sun, Feb 5, 2012 at 3:07 PM, sebb <[email protected]> wrote: > On 5 February 2012 13:30, Philippe Mouawad <[email protected]> > wrote: > > I committed fixes. > > Sorry, it was too late I think when I did this. > > > > Tell me if it's OK now. > > Mostly; however the orphaned comment still remains; lines 377-379 > > I suspect it can just be deleted as we no longer use the default instance. > It would be worth doing a test that uses different hosts > > Check done, it works
> == > > Also, I've just noticed that port is sometimes int and sometimes > Integer; I think it should always be int. > And rather than save the default port in the JMX file, it should be > dropped, by using > > setProperty(String name, int value, int dflt) > > as is done in other test elements. > > Similarly for the new String properties - there's no need to save the > empty string in the JMX files, it just wastes space. > > I think I have fixed them if I fully understood what you meant. > > On Sun, Feb 5, 2012 at 2:05 PM, sebb <[email protected]> wrote: > > > >> 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> > >> > > >> > > >> > > > > > > > > -- > > Cordialement. > > Philippe Mouawad. > -- Cordialement. Philippe Mouawad.
