diff --git a/src/borg/testsuite/hashindex_pytest.py b/src/borg/testsuite/hashindex_pytest.py index 010aaec6e..90134bf67 100644 --- a/src/borg/testsuite/hashindex_pytest.py +++ b/src/borg/testsuite/hashindex_pytest.py @@ -8,21 +8,12 @@ import pytest from ..hashindex import NSIndex -@pytest.mark.skipif("BORG_TESTS_SLOW" not in os.environ, reason="slow tests not enabled, use BORG_TESTS_SLOW=1") -def test_hashindex_stress(): - """checks if the hashtable behaves as expected - - This can be used in _hashindex.c before running this test to provoke more collisions (don't forget to compile): - #define HASH_MAX_LOAD .99 - #define HASH_MAX_EFF_LOAD .999 - """ - ENTRIES = 10000 - LOOPS = 1000 +def make_hashtables(*, entries, loops): idx = NSIndex() kv = {} - for i in range(LOOPS): + for i in range(loops): # put some entries - for j in range(ENTRIES): + for j in range(entries): k = random.randbytes(32) v = random.randint(0, NSIndex.MAX_VALUE - 1) idx[k] = (v, v, v) @@ -37,3 +28,15 @@ def test_hashindex_stress(): assert idx[k] == (v, v, v) # check entry count assert len(kv) == len(idx) + return idx, kv + + +@pytest.mark.skipif("BORG_TESTS_SLOW" not in os.environ, reason="slow tests not enabled, use BORG_TESTS_SLOW=1") +def test_hashindex_stress(): + """checks if the hashtable behaves as expected + + This can be used in _hashindex.c before running this test to provoke more collisions (don't forget to compile): + #define HASH_MAX_LOAD .99 + #define HASH_MAX_EFF_LOAD .999 + """ + make_hashtables(entries=10000, loops=1000) # we do quite some assertions while making them