cyrusimap / cassandane

Other
6 stars 11 forks source link

CaldavAlarm: run all tests 300s in the future #148

Closed brong closed 3 years ago

brong commented 3 years ago

This is long enough to make sure slow valgrind doesn't break them. We were seeing spurious errors otherwise under valgrind.

elliefm commented 3 years ago

I haven't looked at this PR properly yet, but I'm skimming through the logs from the valgrind I ran a couple of days ago and it looks like Master.sighup_recycling is another one with timing problems when run under valgrind. Maybe a similar shape of fix might help.

This particular test is actually a frequent flier for sporadic unreproduceable failures anyway (it's been a while since I've seen it, but it pops up maybe every few months). I've looked at this a bunch of times over the years but not made any meaningful progress on understanding what or why, but maybe hardening the timing to work under valgrind could help. If you wanna look at it while you're thinking about this sorta thing, great; if you don't get around to it, I'll dig into it later.

n.b. I've only run the valgrind run once so far, so it's possible this isn't actually "reliably fails under valgrind", it might just be the same sporadic problem popping up by coincidence!

Master.sighup_recycling
 Perl exception: Timed out waiting for lemmings to reach the expected census
 at Cassandane/Util/Wait.pm line 66.
        Cassandane::Util::Wait::timed_wait(CODE(0x5569c3cecc28), "description", "lemmings to reach the expected census") called at Cassandane/Cyrus/Master.pm line 224
        Cassandane::Cyrus::Master::lemming_wait(Cassandane::Cyrus::Master=HASH(0x5569c21df910), "foo", HASH(0x5569c3cd7940)) called at Cassandane/Cyrus/Master.pm line 1056
        Cassandane::Cyrus::Master::test_sighup_recycling(Cassandane::Cyrus::Master=HASH(0x5569c21df910)) called at /usr/share/perl5/Test/Unit/TestCase.pm line 75
        [...framework calls elided...]
elliefm commented 3 years ago
3) Sieve.duplicate
 expected 2, got 5 at Cassandane/Cyrus/Sieve.pm line 1707.
        Cassandane::Cyrus::Sieve::test_duplicate(Cassandane::Cyrus::Sieve=HASH(0
        [...framework calls elided...]

This one looks like it's probably a timing thing too, that's not a valgrind error