Пакеты OSGi не активируются при запуске Tycho surefire

У меня есть несколько пакетов OSGi, которые встроены в Eclipse с использованием обычных зависимостей, управляемых манифестом, и внешних сборок с помощью Maven Tycho.

Запуск пакетов внутри Eclipse на Equinox работает нормально. Создание их с помощью Tycho отлично работает.

Теперь я хочу использовать Tycho Surefire для запуска интеграционных тестов, и для этого я создал простой тестовый пакет, содержащий несколько базовых тестов. Тестируемые пакеты полагаются на некоторые другие пакеты, присутствующие в OSGi-контейнере, и некоторые незначительные настройки уровня запуска для правильной работы - как я уже сказал, сами пакеты прекрасно запускаются при обычном запуске на Equinox.

Итак, чтобы имитировать это для Tycho Surefire, я указал следующее в pom.xml тестового пакета:

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-surefire-plugin</artifactId>
            <version>0.21.0</version>
            <configuration>
                <bundleStartLevel>
                    <bundle>
                        <id>org.hibernate.osgi</id>
                        <level>6</level>
                        <autoStart>true</autoStart>
                    </bundle>
                    <!-- plus a few more bundles in the real pom.xml -->
                </bundleStartLevel>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <configuration>
                <dependency-resolution>
                    <extraRequirements>
                        <requirement>
                            <type>eclipse-plugin</type>
                            <id>org.hibernate.entitymanager</id>
                            <versionRange>4.2.12.Final</versionRange>
                        </requirement>
                        <requirement>
                            <type>eclipse-plugin</type>
                            <id>org.hibernate.osgi</id>
                            <versionRange>4.2.12.Final</versionRange>
                        </requirement>
                        <!-- plus a few more bundles in the real pom.xml -->
                    </extraRequirements>
                </dependency-resolution>
            </configuration>
        </plugin>
    </plugins>
</build>

Интересно, что тесты провалились. После некоторых исследований я узнал, как я могу получить доступ к консоли OSGi во время/после неудачного запуска теста для дальнейшего изучения проблемы (консоль OSGi после запуска тестов tycho).

Мои выводы таковы, что хотя все необходимые пакеты (все транзитивно производные пакеты и все указанные вручную) присутствуют в OSGi-контейнере, были запущены только те, у которых есть характерный <bundleStartLevel> (плюс, конечно, OSGi-core-bundles).

Итак, учитывая приведенный выше пример, я пришел к выводу, что, хотя и org.hibernate.osgi, и org.hibernate.entitymanager были разрешены, только первый находится в состоянии «АКТИВНО». Это явно портит весь запуск, и я предполагаю, что тесты будут работать нормально, если пакеты запустятся, как ожидалось.

Когда я смотрю на «нормальную» конфигурацию Eclipse-OSGi-Launch, есть параметр «Автозапуск по умолчанию», для которого по умолчанию установлено значение true. Я не нашел ничего подобного в документации Tycho Surefire, но возможно ли, что установка определенного уровня запуска для некоторых пакетов каким-то образом переопределяет автоматический запуск других пакетов? По крайней мере, я бы не догадался, что Tycho вообще не запускает автоматически какие-либо пакеты по умолчанию...

Я был бы признателен за любые подсказки о том, как исследовать эту проблему дальше, или любые подсказки о том, как я могу заставить Tycho запускать свои пакеты без необходимости указывать отдельный начальный уровень для каждого.


person sina    schedule 27.11.2014    source источник
comment
Есть ли системное свойство Equinox, позволяющее запускать все пакеты? Если да, вы можете попробовать установить его как системное свойство. Я не уверен, что вас заденет ошибка 356193. хотя.   -  person oberlies    schedule 28.11.2014


Ответы (1)


Если кто-то все еще натыкается на это:

Начиная с Tycho 0.23 автоматический запуск пакета можно настроить.

<configuration>
  <defaultStartLevel>
    <level>7</level>
    <autoStart>true</autoStart>
  </defaultStartLevel>
</configuration>
person sina    schedule 08.01.2016