Рекомендации по настройкам правил очистки

Последние изменения: 20.09.2024

ТестОпс хранит артефакты результатов тестов, в хранилище артефактов и в базе данных.

Артефакты занимают значительное количество места, поэтому их необходимо регулярно удалять.

Встроенная процедура очистки ТестОпс удаляет артефакты только для закрытых запусков, то есть, даже если ваше правило указывает, что файлы должны быть удалены через 24 часа, и запуск находится в открытом состоянии, ни один из артефактов такого запуска не будет удален до тех пор, пока запуск находится в открытом состоянии.

В ТестОпс есть три типа артефактов (в порядке убывания объема занимаемого пространства):

  1. Файлы вложенные в результаты тестов, например, скриншоты, таблицы или другие файлы, которые генерируют ваши тесты. Они занимают больше всего места, их обычно несколько на каждый результат теста. Такие артефакты хранятся в хранилище артефактов (AWS S3 совместимое решение).

  2. Файлы вложенные в фикстуры (блоки кода, которые выполняются до и после тестов, т.н. SetUp/TeardDown блоки), их как правило не так много. Такие артефакты хранятся в хранилище артефактов (AWS S3 совместимое решение).

  3. Шаги сценариив и фикстур. Эти артефакты выполнения тестов хранятся в БД.

При создании правил очистки вам нужно учитывать удаление всех описанных артефактов.

Существуют отдельные правила для удаления артефактов для результатов тестов с разным статусом, например, для успешных/неудачных тестов.

Для каждого статуса результата вам нужно создать 3 правила для удаления каждого типа артефактов.

Для успешных тестов (прошедших) имеет смысл сохранять 1-2 копии артефактов, исходя из частоты выполнения ваших тестов, то есть, если ваши тесты выполняются 1 раз в 24 часа, то разумно удалять все артефакты после, скажем, 36 часов с учетом информации о работе планировщика.

Правила для сохранения артефактов для других статусов зависят от потребностей вашей команды: вам требуется учитывать, сколько времени обычно требуется для анализа неудачных тестов, и добавить некоторый защитный интервал.

Например, если по вашим процессам требуется 5 рабочих дней на разбор то удаляйте артефакты для неудачных тестов через 168 часов (7 полных дней).

Траблшутинг:

ТестОпс собирает список файлов на основе политики очистки и создает задачи blob remove (запись в базе данных, которая указывает на определенный файл), затем каждые 5 минут ТестОпс запускает задачу blob remove. Файлы удаляются батчами. Значение размера батча по умолчанию составляет 1000. Это означает, что каждые 5 минут ТестОпс будет запрашивать у хранилища blob remove 1000 файлов.

Если ваши тесты создают огромное количество файлов, они сохраняются быстрее, чем процедура очистки удаляет файлы, поэтому вы будете наблюдать рост используемого пространства. Вы можете управлять (увеличивать) размер батча для удаления файлов, добавив специальный параметр в конфигурацию.

Проверка:

Помимо роста используемого пространства, вы должны увидеть рост очереди файлов, отмеченных для удаления.
Чтобы понять, недостаточен ли размер батча по умолчанию для удаления файлов, выполните следующее:

Запустите следующий SQL-запрос для базы данных утром (09:00), в середине дня (около 14:00) и в конце дня (скажем, в 19:00).

select count(*) from blob_remove_task;

Если к концу рабочего дня размер очереди на удаление больше нуля, то необходимо увеличить размер партии.

ALLURE_SCHEDULER_CLEANER_BLOB_BATCHSIZE: 2000

Если размер очереди составляет несколько сотен тысяч или миллионов записей, то вам необходимо установить очень агрессивное значение для удаления файлов, но это необходимо сделать во время минимальной рабочей нагрузки (выходные или ночное время), в противном случае большая батч может повлиять на общую производительность ТестОпс, так как во время обработки результатов теста ТестОпс активно использует хранилище, а обработка результатов теста и операции удаления будут конкурировать за ресурсы хранилища.


Когда стоит применять?

ALLURE_SCHEDULER_CLEANER_BLOB_BATCHSIZE необходимо корректировать только в том случае, если вы видите, что размер пространства, используемого для хранения артефактов результатов теста, растет или не меняется со временем, а также действуют правила очистки с растущей очередью задач blob remove, т. е. вы создаете больше файлов чем удаляете.

Помогла ли вам статья?