Skip to content

Commit 04db7d6

Browse files
committed
Add a thread that IDLEs
1 parent b6d0b47 commit 04db7d6

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

greenmail-core/src/test/java/com/icegreen/greenmail/test/ImapServerTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,9 +804,21 @@ public void testMessageChangedListener() throws MessagingException {
804804
GreenMailUtil.sendTextEmail("foo@localhost", "bar@localhost", "Test subject", "Test message",
805805
ServerSetupTest.SMTP);
806806

807+
Thread thread = null;
807808
try {
808809
Folder inboxFolder = store.getFolder("INBOX");
809810
inboxFolder.open(Folder.READ_ONLY);
811+
thread = new Thread(() -> {
812+
try {
813+
while (!Thread.currentThread().isInterrupted()) {
814+
((IMAPFolder) inboxFolder).idle(true);
815+
}
816+
} catch (MessagingException ex) {
817+
assertThat(false).isTrue();
818+
}
819+
});
820+
thread.start();
821+
810822
int[] messages = new int[] { 0 };
811823
MessageChangedListener listener = new MessageChangedListener() {
812824
@Override
@@ -817,6 +829,7 @@ public void messageChanged(MessageChangedEvent e) {
817829
}
818830
};
819831
inboxFolder.addMessageChangedListener(listener);
832+
820833
new Thread(() -> {
821834
try {
822835
Thread.sleep(100);
@@ -831,6 +844,7 @@ public void messageChanged(MessageChangedEvent e) {
831844
assertThat(false).isTrue();
832845
}
833846
}).start();
847+
834848
try {
835849
assert latch.await(5, TimeUnit.SECONDS);
836850
} catch (InterruptedException e1) {
@@ -840,6 +854,9 @@ public void messageChanged(MessageChangedEvent e) {
840854
assertThat(messages[0]).isGreaterThan(0);
841855
inboxFolder.close();
842856
} finally {
857+
if (thread != null) {
858+
thread.interrupt();
859+
}
843860
store.close();
844861
}
845862
}

0 commit comments

Comments
 (0)