• Andres Freund's avatar
    Add basic spinlock tests to regression tests. · 3b37a6de
    Andres Freund authored
    As s_lock_test, the already existing test for spinlocks, isn't run in
    an automated fashion (and doesn't test a normal backend environment),
    adding tests that are run as part of a normal regression run is a good
    idea. Particularly in light of several recent and upcoming spinlock
    related fixes.
    
    Currently the new tests are run as part of the pre-existing
    test_atomic_ops() test. That perhaps can be quibbled about, but for
    now seems ok.
    
    The only operations that s_lock_test tests but the new tests don't are
    the detection of a stuck spinlock and S_LOCK_FREE (which is otherwise
    unused, not implemented on all platforms, and will be removed).
    
    This currently contains a test for more than INT_MAX spinlocks (only
    run with --disable-spinlocks), to ensure the recent commit fixing a
    bug with more than INT_MAX spinlock initializations is correct. That
    test is somewhat slow, so we might want to disable it after a few
    days.
    
    It might be worth retiring s_lock_test after this. The added coverage
    of a stuck spinlock probably isn't worth the added complexity?
    
    Author: Andres Freund
    Discussion: https://postgr.es/m/20200606023103.avzrctgv7476xj7i@alap3.anarazel.de
    3b37a6de
regress.c 25.4 KB