2012-10-08 18 views
7

Podczas wykonywania testu JUnit z tycho-surefire-plugin, teno wyświetla środowisko wykonawcze equinox. W rzadkich przypadkach może się zdarzyć, że niektóre pakiety w środowisku wykonawczym testów OSGi nie będą mogły zostać rozwiązane/uruchomione (np. Konflikty pakietów używają). Jeśli czytasz ten dziennik debugowania (opcja -X Maven CLI), można znaleźć coś podobnegoJak analizować problemy niskiego poziomu OSGi podczas wykonywania testu tycho?

!ENTRY org.eclipse.osgi 2 0 2012-10-08 16:41:31.635 
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists: 
!SUBENTRY 1 org.eclipse.osgi 2 0 2012-10-08 16:41:31.635 
An error has occurred. See the log file 
C:\mytestproject.tests\target\work\configuration\1349705136008.log. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 12:03.181s 
[INFO] Finished at: Mon Oct 08 16:17:16 CEST 2012 
[INFO] Final Memory: 20M/309M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-surefire-plugin:0.15.0:test (default-test) on project mytestproject.tests: An unexpected error occured (return c 
ode 13). See log for details. -> [Help 1] 

dzienniku konsoli Eclipse nie dostarcza wystarczających informacji w przypadku pakietu wykorzystuje konflikty.

Jak mogę analizować pakiety w środowisku wykonawczym testów OSGi rozwidlonym przez tycho?

Odpowiedz

7

rozpocząć testy w trybie zdalnego debugowania (wystarczy określić -DdebugPort=8000 w CLI) i uruchomić konsolę OSGi na porcie lokalnym, np. 1234:

 <plugin> 
      <groupId>org.eclipse.tycho</groupId> 
      <artifactId>tycho-surefire-plugin</artifactId> 
      <version>${tycho-version}</version> 
      <configuration> 
       <systemProperties> 
        <osgi.console>1234</osgi.console> 
       </systemProperties> 
      </configuration> 
     </plugin> 

ustawić punkt przerwania w jednej z klas testowych lub w org/eclipse/Tycho/murowany/osgibooter/OsgiSurefireBooter jeśli testy nie zostały jeszcze rozpoczęte. Następnie

telnet localhost 1234 

i można używać zwykłych OSGi poleceń konsoli jak ss, diag, bundle itp analiza problemu „in vivo”.

+0

Musiałem dodać jeden dodatkowy systemProperty: true. Dzięki temu zadziałało. Dzięki. –

0

Alternatywnie można uruchomić z -consolelog lub ustawić właściwość eclipse.consoleLog na właściwość true. Jeśli używasz Tycho, możesz użyć <argLine>-Declipse.consoleLog=true</argLine>.

Powiązane problemy