diff --git a/online-tests/conftest.py b/online-tests/conftest.py index 4ca451ad..de2a9bdb 100644 --- a/online-tests/conftest.py +++ b/online-tests/conftest.py @@ -52,6 +52,7 @@ class SmtpConn: @pytest.fixture def gencreds(maildomain): count = itertools.count() + next(count) def gen(): while 1: diff --git a/online-tests/test_1_deltachat.py b/online-tests/test_1_deltachat.py index 86e0d5d7..5c45ca1f 100644 --- a/online-tests/test_1_deltachat.py +++ b/online-tests/test_1_deltachat.py @@ -1,5 +1,6 @@ import random import pytest +import time class TestMailSending: @@ -36,18 +37,22 @@ class TestMailSending: msgs.append(msg) lp.indent(f"Sent out msg {i}, size {attachsize/(1024*1024)}MB") - lp.sec("ac2: check that at least one message failed due to quota") + lp.sec("ac2: check messages are arriving until quota is reached") bytes_sent = 0 for i, msg in enumerate(msgs): - # wait for the message to be received - msg_received = ac2.wait_next_incoming_message() - if msg.is_out_failed(): - assert bytes_sent + 10 * 1024*1024 > quota, "quota kicked in too early" - lp.indent("good, message sending failed because quota was exceeded") - lp.indent(chat.get_messages()[i].get_message_info()) - return - assert msg.is_out_delivered(), msg.get_message_info() - bytes_sent += attachsize - mb = bytes_sent // (1024*1024) - lp.indent(f"message {i} success, bytes transmitted so far {mb}MB") + # wait for the message to be received or to fail + start = time.time() + while time.time() < (start + 30): + if msg.is_out_delivered(): + bytes_sent += attachsize + mb = bytes_sent // (1024*1024) + lp.indent(f"message {i} success, bytes transmitted so far {mb}MB") + break + elif msg.is_out_failed(): + assert i > num_to_send/2, "quota kicked in too early" + lp.indent("good, message sending failed because quota was exceeded") + lp.indent(chat.get_messages()[i].get_message_info()) + return + else: + time.sleep(1) pytest.fail("sending succeeded although messages should exceed quota")