diff --git a/logback-classic-blackbox/src/test/java/ch/qos/logback/classic/blackbox/net/SMTPAppender_GreenTest.java b/logback-classic-blackbox/src/test/java/ch/qos/logback/classic/blackbox/net/SMTPAppender_GreenTest.java index d514f0dc9a..162422ad95 100644 --- a/logback-classic-blackbox/src/test/java/ch/qos/logback/classic/blackbox/net/SMTPAppender_GreenTest.java +++ b/logback-classic-blackbox/src/test/java/ch/qos/logback/classic/blackbox/net/SMTPAppender_GreenTest.java @@ -151,6 +151,9 @@ private MimeMultipart verifyAndExtractMimeMultipart(String subject) int expectedEmailCount = 1; // wait for the server to receive the messages waitForServerToReceiveEmails(expectedEmailCount); + while (!ch.qos.logback.core.net.SMTPAppenderBase.getExecutionStatus()) { + Thread.yield(); + } MimeMessage[] mma = greenMailServer.getReceivedMessages(); assertNotNull(mma); assertEquals(expectedEmailCount, mma.length); @@ -304,6 +307,7 @@ private void configure(String file) throws JoranException { @Test public void testCustomEvaluator() throws Exception { + ch.qos.logback.core.net.SMTPAppenderBase.reset(); startSMTPServer(NO_SSL); configure(BlackboxClassicTestConstants.JORAN_INPUT_PREFIX + "smtp/customEvaluator.xml"); diff --git a/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java b/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java index eb0cd1e4fb..8c74a2b9f3 100755 --- a/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java +++ b/logback-core/src/main/java/ch/qos/logback/core/net/SMTPAppenderBase.java @@ -70,6 +70,7 @@ public abstract class SMTPAppenderBase extends AppenderBase { protected Layout subjectLayout; protected Layout layout; + public static volatile boolean hasExecuted; private List> toPatternLayoutList = new ArrayList>(); private String from; private String subjectStr = null; @@ -650,6 +651,14 @@ public void setSessionViaJNDI(boolean sessionViaJNDI) { this.sessionViaJNDI = sessionViaJNDI; } + public static boolean getExecutionStatus() { + return hasExecuted; + } + + public static void reset() { + hasExecuted = false; + } + /** * Set the character set encoding of the outgoing email messages. The default * encoding is "UTF-8" which usually works well for most purposes. @@ -680,6 +689,7 @@ class SenderRunnable implements Runnable { public void run() { sendBuffer(cyclicBuffer, e); + hasExecuted = true; } } }