|
|
|
@ -1110,10 +1110,10 @@ class TestLRU: |
|
|
|
self.assertEqual(currsize, 0) |
|
|
|
|
|
|
|
start = threading.Event() |
|
|
|
def full(f, *args): |
|
|
|
def full(k): |
|
|
|
start.wait(10) |
|
|
|
for _ in range(m): |
|
|
|
f(*args) |
|
|
|
self.assertEqual(f(k, 0), orig(k, 0)) |
|
|
|
|
|
|
|
def clear(): |
|
|
|
start.wait(10) |
|
|
|
@ -1124,19 +1124,24 @@ class TestLRU: |
|
|
|
sys.setswitchinterval(1e-6) |
|
|
|
try: |
|
|
|
# create n threads in order to fill cache |
|
|
|
threads = [threading.Thread(target=full, args=[f, k, k]) |
|
|
|
threads = [threading.Thread(target=full, args=[k]) |
|
|
|
for k in range(n)] |
|
|
|
with support.start_threads(threads): |
|
|
|
start.set() |
|
|
|
|
|
|
|
hits, misses, maxsize, currsize = f.cache_info() |
|
|
|
self.assertLessEqual(misses, n) |
|
|
|
self.assertEqual(hits, m*n - misses) |
|
|
|
if self.module is py_functools: |
|
|
|
# XXX: Why can be not equal? |
|
|
|
self.assertLessEqual(misses, n) |
|
|
|
self.assertLessEqual(hits, m*n - misses) |
|
|
|
else: |
|
|
|
self.assertEqual(misses, n) |
|
|
|
self.assertEqual(hits, m*n - misses) |
|
|
|
self.assertEqual(currsize, n) |
|
|
|
|
|
|
|
# create n threads in order to fill cache and 1 to clear it |
|
|
|
threads = [threading.Thread(target=clear)] |
|
|
|
threads += [threading.Thread(target=full, args=[f, k, k]) |
|
|
|
threads += [threading.Thread(target=full, args=[k]) |
|
|
|
for k in range(n)] |
|
|
|
start.clear() |
|
|
|
with support.start_threads(threads): |
|
|
|
|