Finish tests of disk cache
This commit is contained in:
parent
df00e9545d
commit
1b59a1c421
@ -92,7 +92,7 @@ open_cache_file(const char *cache_path) {
|
||||
size_t sz = strlen(cache_path) + 16;
|
||||
char *buf = calloc(1, sz);
|
||||
if (!buf) { errno = ENOMEM; return -1; }
|
||||
snprintf(buf, sz - 1, "%s/XXXXXXXXXXXX", cache_path);
|
||||
snprintf(buf, sz - 1, "%s/disk-cache-XXXXXXXXXXXX", cache_path);
|
||||
while (fd < 0) {
|
||||
fd = mkostemp(buf, O_CLOEXEC);
|
||||
if (fd > -1 || errno != EINTR) break;
|
||||
@ -539,6 +539,7 @@ clear_disk_cache(PyObject *self_) {
|
||||
HASH_DEL(self->entries, s);
|
||||
free_cache_entry(s);
|
||||
}
|
||||
self->total_size = 0;
|
||||
mutex(unlock);
|
||||
wakeup_write_loop(self);
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
# License: GPL v3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
||||
|
||||
import os
|
||||
import random
|
||||
import tempfile
|
||||
import time
|
||||
import unittest
|
||||
@ -176,7 +177,7 @@ class TestGraphics(BaseTest):
|
||||
def remove(key):
|
||||
bkey = key_as_bytes(key)
|
||||
data.pop(key, None)
|
||||
dc.remove(bkey)
|
||||
return dc.remove(bkey)
|
||||
|
||||
def check_data():
|
||||
for key, val in data.items():
|
||||
@ -207,6 +208,20 @@ class TestGraphics(BaseTest):
|
||||
time.sleep(0.001)
|
||||
self.assertEqual(dc.size_on_disk(), 0)
|
||||
|
||||
data.clear()
|
||||
for i in range(25):
|
||||
self.assertIsNone(add(i, f'{i}' * i))
|
||||
|
||||
before = dc.size_on_disk()
|
||||
while dc.total_size > before // 3:
|
||||
key = random.choice(tuple(data))
|
||||
self.assertTrue(remove(key))
|
||||
add('trigger defrag', 'XXX')
|
||||
dc.wait_for_write()
|
||||
self.assertLess(dc.size_on_disk(), before)
|
||||
self.assertEqual(dc.size_on_disk(), sum(map(len, data.values())))
|
||||
check_data()
|
||||
|
||||
def test_load_images(self):
|
||||
s, g, l, sl = load_helpers(self)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user