Советы по ускорению разработки инфраструктуры PAX (тестирование OSGI)

Я знаю, что PAX делает много вещей, и что создание контейнера и копирование всех этих jar-файлов недешево, но есть ли общие советы по улучшению производительности. У меня есть тесты, которые выполняются вне контейнера за доли секунды, а внутри они занимают гораздо больше времени. Я использую PAX в первую очередь для проверки точности моих манифестов и возможности развертывания пакета без каких-либо недостающих зависимостей. Я пробовал Knopflerfish, Equinox, Felix, и в целом есть небольшая разница, они относительно медленны для бега без контейнеров.

2 ответа

Решение

Как вы поняли, лежащий в основе контейнер не имеет большого значения.

Если вы хотите, чтобы минимальные пакеты создавались на лету, вы можете попробовать Pax Tinybundles: если это применимо к вашему случаю, вы можете создать набор свернутых пакетов только с тем контентом, который действительно необходим для тестирования. Например, вы можете просто упаковать свой манифест. Я не проверял это сам для этой конкретной цели, но это стоит попробовать.

В качестве пояснения, пожалуйста, учтите, что в Pax Exam 2.3 появилась поддержка (см. Здесь) для @Before и @After, что поможет вам более гибко настраивать / разрушать нагрузку.

Использование Native Container выполняется быстрее, чем Pax Runner Container, что экономит накладные расходы на запуск внешнего процесса.

Использование EagerSingleStagedReactorFactory экономит накладные расходы при перезапуске инфраструктуры для каждого теста.

Чтобы избежать копирования JAR-файлов, предпочитайте mvn: URLs или mavenBundle() общим URL-адресам, тогда пакеты будут извлечены из вашего локального репозитория Maven после их загрузки.

Новая функция в Pax Exam 2.3.0 - эталонный: протокол, который позволяет вам подготовить пакеты на месте, без копирования - это работает даже для разорванных пакетов (то есть, для разархивированной структуры каталогов).

Другие вопросы по тегам