我正在对通过电子邮件发送链接的Web应用程序进行负载测试。我有一个专门设置为该收件人的Gmail帐户。生成新帐户时,我在收件人电子邮件中添加了一个Guid(例如loadtest_ nmndbiwpdi @ gmaildomain.com)。当我执行测试时,它要么全部成功,要么全部失败,但是失败似乎是随机的。
这是我的搜索摘要:
if (!inbox.isOpen()) {
inbox.open(Folder.READ_ONLY);
}
SearchTerm toTerm = new RecipientTerm(RecipientType.TO, new InternetAddress(to));
messages = inbox.search(toTerm);
脚本运行时,它将在100迭代循环中执行此操作,并暂停3秒。如果脚本输出失败,并且imap调试功能反复打开,则会显示以下内容:
A4 SEARCH TO loadtest_nmndbiwpdi@gmaildomain.com ALL
* SEARCH
A4 OK SEARCH completed (Success)
但没有实际结果。在执行期间,但是,我可以在gmail中搜索此收件人,并且它会立即弹出。有什么建议可以深入了解这个问题?
答案 0 :(得分:0)
Gmail并未完全实现IMAP规范,尤其是对于搜索。 Gmail搜索总是针对整个单词,尽管在这里这不是问题。
您可以尝试使用Gmail-specific support in JavaMail类,例如GmailRawSearchTerm类。
答案 1 :(得分:0)
我实现了本地缓存。我在负载测试方案开始时对其进行初始化,下载最后几天的消息并捕获最近的消息UID(使用gmail imap插件)。会话每次查找电子邮件时,都会在本地缓存中查找。如果不存在,它将设置一个标志,以便其他会话不会与缓存重叠并检索最新消息。
因为它是断断续续的,所以我想给它几天。在过去4天中,它运行良好。我可能可以再走一步,并在文件夹中为新邮件设置一个侦听器,但是现在我很满意gmail只是返回“成功”,但在连续多次imap搜索之后却没有进行搜索。
感谢大家的反馈和建议!