MCPcopy Index your code
hub / github.com/python/cpython / test_hamt_stress

Method test_hamt_stress

Lib/test/test_context.py:800–887  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

798
799 @support.requires_resource('cpu')
800 def test_hamt_stress(self):
801 COLLECTION_SIZE = 7000
802 TEST_ITERS_EVERY = 647
803 CRASH_HASH_EVERY = 97
804 CRASH_EQ_EVERY = 11
805 RUN_XTIMES = 3
806
807 for _ in range(RUN_XTIMES):
808 h = hamt()
809 d = dict()
810
811 for i in range(COLLECTION_SIZE):
812 key = KeyStr(i)
813
814 if not (i % CRASH_HASH_EVERY):
815 with HaskKeyCrasher(error_on_hash=True):
816 with self.assertRaises(HashingError):
817 h.set(key, i)
818
819 h = h.set(key, i)
820
821 if not (i % CRASH_EQ_EVERY):
822 with HaskKeyCrasher(error_on_eq=True):
823 with self.assertRaises(EqError):
824 h.get(KeyStr(i)) # really trigger __eq__
825
826 d[key] = i
827 self.assertEqual(len(d), len(h))
828
829 if not (i % TEST_ITERS_EVERY):
830 self.assertEqual(set(h.items()), set(d.items()))
831 self.assertEqual(len(h.items()), len(d.items()))
832
833 self.assertEqual(len(h), COLLECTION_SIZE)
834
835 for key in range(COLLECTION_SIZE):
836 self.assertEqual(h.get(KeyStr(key), 'not found'), key)
837
838 keys_to_delete = list(range(COLLECTION_SIZE))
839 random.shuffle(keys_to_delete)
840 for iter_i, i in enumerate(keys_to_delete):
841 key = KeyStr(i)
842
843 if not (iter_i % CRASH_HASH_EVERY):
844 with HaskKeyCrasher(error_on_hash=True):
845 with self.assertRaises(HashingError):
846 h.delete(key)
847
848 if not (iter_i % CRASH_EQ_EVERY):
849 with HaskKeyCrasher(error_on_eq=True):
850 with self.assertRaises(EqError):
851 h.delete(KeyStr(i))
852
853 h = h.delete(key)
854 self.assertEqual(h.get(key, 'not found'), 'not found')
855 del d[key]
856 self.assertEqual(len(d), len(h))
857

Callers

nothing calls this directly

Calls 15

KeyStrClass · 0.85
HaskKeyCrasherClass · 0.85
setFunction · 0.85
listClass · 0.85
enumerateFunction · 0.85
strFunction · 0.85
shuffleMethod · 0.80
assertRaisesMethod · 0.45
setMethod · 0.45
getMethod · 0.45
assertEqualMethod · 0.45
itemsMethod · 0.45

Tested by

no test coverage detected