polis-vk/2023-nosql-lsm

Тесты на windows

Opened this issue · 2 comments

Проблема неработающих тестов на windows (при выданных разрешениях) может быть связана со следующим:
Постпроцессинг тестов пытается удалить файл первого Dao, который еще используется вторым Dao, из-за чего вылетает исключение.
То есть второй объект Dao не создается через createDao(), в следствие чего не закрывается в конце теста.

Чтобы избежать такое поведение можно закрыть второй объект Dao, либо когда делаем reopen перезаписать поле делегата, а не создавать новый объект TestDao.

Пример с закрытием Dao (добавлен dao.close()):

 void variability(Dao<String, Entry<String>> dao) throws IOException {
        final Collection<Entry<String>> entries =
                List.of(
                        entry("key1", "value1"),
                        entry("key10", "value10"),
                        entry("key1000", "value1000"));
        entries.forEach(dao::upsert);
        dao.close();

        dao = DaoFactory.Factory.reopen(dao);
        for (final Entry<String> entry : entries) {
            assertSame(dao.get(entry.key()), entry);
        }
        dao.close();
    }

image

Второй вариант - измененный reopen:

public TestDao<Data, E> reopen() throws IOException {
        delegate = factory.createDao(config);
        return this;
    }

Pull request пришлёте?

Pull request пришлёте?

прислал