[devel] repocop 0.07 changes
Igor Vlasenko
=?iso-8859-1?q?vlasenko_=CE=C1_imath=2Ekiev=2Eua?=
Пн Мар 24 22:05:36 MSK 2008
Уважаемые коллеги,
В сизифе сейчас repocop 0.06, ориентированный на тесты без состояние.
Хочу рассказать о направлении разработки repocop 0.07.
repocop 0.07 полностью совместим и будет совместим c существующими
тестами, но в нем будет одно важное улучшение.
Больше всего в repocop 0.06 меня напрягала необходимость 2 часа прогонять
через тест весь репозиторий, если в тесте хоть что-то меняется.
Новая архитектура должна устранить этот недостаток.
Многие тесты совместно используют одни и те же данные. Примером может
служить база данных rpm.db, которая создается в процессе работы repocop 0.07.
Для каждого пакета в ней содержатся список файлов, значения
полей Group:, URL:, Requires:, Provides, скрипты %postun, и т. д.,
т.е. вся информация, которая содержится в заголовке rpm пакета.
Кроме того, логика обработки данных меняется гораздо чаще,
чем структура хранения данных.
Чтобы повысить повторную используемость кода и не прогонять весь репозиторий
через тесты каждый раз, когда в тесте меняется логика, в repocop 0.07 введена
новая сущность - коллекторы (сборщики данных).
Коллекторы устроены в точности как тесты, но не возвращают никаких результатов,
а только собирают данные для своей базы. Собранные коллекторами данные могут
использоваться в тестах при вызове скриптов <testname>/done.
Это позволяет дорогие по машинному времени вызовы <testname>/test
сосредоточить в коллекторах, а в тестах использовать дешевые вызовы
<testname>/done.
Рекомендуемый формат хранения собранных коллектором данных - файл SQLite.
Архитектура repocop не запрещает альтернативные форматы хранения,
но разнородные форматы данных могут затруднить обработку данных тестами.
Например, данные из разных файлов SQLite можно обработать одним запросом
SQLite, чего не скажешь о разнородных форматах.
--
Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine
Подробная информация о списке рассылки Devel