Статья описывает, что происходит с файлами из папки allure-results после загрузки в ТестОпс, где они лежат в S3-хранилище и когда удаляются. Описание соответствует версии 5.27 (сборка 527u05b).
Здесь описана загрузка через allurectl или плагин CI.
Путь файла при загрузке
- Отправка. allurectl upload или allurectl watch (или плагин CI) создаёт в запуске сессию загрузки и отправляет файлы в ТестОпс.
- Приём. ТестОпс сохраняет файлы во временные папки хранилища и сразу делит их на два вида:
- явные вложения — имя вида *-attachment.*, файлы .html, .txt, .js, .zip, любые файлы больше 2 МБ и пустые файлы — попадают во временную папку atc;
- файлы на разбор — всё остальное (*-result.json, *-container.json, environment.properties и т. п.) — попадают во временную папку upl.
- Разбор. Файлы из upl разбираются в фоне: ТестОпс поддерживает форматы Allure 1, Allure 2, xUnit, XCTest, JGiven, TRX, JUnit и Cucumber JSON. Из них создаются результаты тестов в базе данных. Файл, который не подошёл ни под один формат, считается вложением и переносится в atc.
- Вложения на постоянное место. Вложение, на которое ссылается результат теста, копируется в постоянную папку tr (вложения результатов) или tfr (вложения фикстур).
- Очистка временных файлов. После обработки временные файлы из upl и atc удаляются. Всё, что осталось необработанным или не привязалось к результатам, удаляется при закрытии запуска.
Удаление файлов из хранилища всегда отложенное: ТестОпс ставит файл в очередь на удаление, а фоновая задача удаляет его обычно в течение нескольких минут, при большой очереди — дольше. Поэтому сразу после загрузки или очистки в хранилище какое-то время видны файлы, которые уже не используются.
Рекомендации
- Закрывайте запуски. Пока запуск открыт, его временные файлы могут оставаться в хранилище. Настройте автоматическое закрытие запусков или закрывайте их после прогона.
- Отправляйте вложения вместе с результатами, в одной сессии. Вложения привязываются к результатам только в пределах одной сессии загрузки. Если отправить вложения и результаты двумя отдельными вызовами allurectl upload, вложения к результатам не привяжутся. Загружайте папку allure-results целиком одним вызовом или используйте allurectl watch.
- Настраивайте правила очистки под задачу. Правило очистки вложений (Attachment) освобождает место в S3-хранилище. Правило очистки сценариев (Scenario) уменьшает в первую очередь базу данных: сценарии результатов тестов хранятся в ней. Правило действует только для выбранного статуса тестов, поэтому для полной очистки нужны правила для всех статусов. Место в базе данных освобождается не сразу, а после VACUUM.
Где файлы лежат в бакете
Формат ключа при стандартной настройке хранилища: shard_0/<ID проекта>/<папка>/…. Например, вложение результата из проекта 5: shard_0/5/tr/1234XXX/1234567/<uuid>.png. Поскольку ID проекта входит в путь, объём, который занимает проект, можно посчитать по префиксу shard_0/<ID проекта>/.
| Папка | Что лежит | Когда удаляется |
|---|---|---|
| upl | файлы на разбор (временно) | после обработки или при закрытии запуска |
| atc | вложения до привязки к результату (временно) | после привязки или при закрытии запуска |
| tr / tfr | вложения результатов тестов / фикстур | правилом очистки вложений или при удалении результата / запуска |
| tc / ss | вложения тест-кейсов / общих шагов | при удалении вложения |
| imp / exp | файлы импорта / экспорта | при удалении записи импорта / экспорта |
Файлы, загруженные на версиях ТестОпс до 5.12, лежат в корне бакета по ключам <ID проекта>/… или v2/<ID проекта>/…. ТестОпс продолжает с ними работать, при подсчёте объёма проекта их нужно учитывать отдельно.