Я создаю прототип автоматизированной тестовой системы для очень большой библиотеки физики, которая просматривает каждый коммит, отправленный в хранилище, а затем запускает только те тесты, которые необходимы для проверки изменений нового кода. Однако полученный анализ и пользовательский интерфейс должны показать все тесты, а не только небольшое подмножество, на которое повлиял коммит, плюс их недавняя история.
То есть недостаточно просто показать: ' test $ foo занял 5 секунд '
Вместо этого мне нужно показать:' test $ foo занял 5 секунд, $ bar занял 7 с, $ baz взял 9s ', а также результаты ( некоторые, а не все) предшествующие коммиты для сравнения.
По сути, мне нужно иметь возможность прочитать все состояние всех тестов при произвольном коммите X, и сделать это быстро и с минимальным использованием места (- i sh) (много тестов, много-много данных на тест)
Учитывая, что тесты находятся в иерархии, похожей на файловую систему, в настоящее время я пытаюсь сохранить все это в Git репозиторий с результатами тестирования, отражающими отдельные тестовые файлы, и небольшая дополнительная таблица для сохранения ссылки из кода репо-кода на результаты теста репо.
Благодаря сжатию git это достаточно легко хранение, однако эффективность рекламы могла бы быть лучше.
Есть ли для этого специальный подход?
Дублирование всего дерева для каждого небольшого коммита вскоре приведет к чрезмерному раздутию, но я боюсь хранить только наборы изменений и рекурсивное восстановление состояния дерева будут слишком медленными.
Использование git для этого кажется неправильным, плюс мне не нужны некоторые функции git (например, весь криптографический материал), и я надеюсь, что его падение приведет к увеличению производительности.
Я проверил различные подходы на основе графиков и деревьев, но мне не хватает опыта, чтобы полностью выбрать один из них.
Кроме того, хотя я думаю, что это может быть сохранено в нашем экземпляре postgres или подобное - возможно, лучше подойдет мультимодельная база данных, такая как ArangoDB?
Спасибо!