Сбой виртуальной машины при использовании Docker-Maven-Plugin для запуска интеграционных тестов - PullRequest
0 голосов
/ 25 августа 2018

У меня есть многомодульное приложение с весенней загрузкой, и я использую Citrus Framework для написания интеграционных тестов.

Я использую профиль maven для запуска интеграционных тестов в Docker-контейнере. Тем не менее, я получаю сбой сборки с сообщением

Разветвленная виртуальная машина прервалась без должного прощания

и стек ошибок, как показано ниже.


    [INFO] ------------------------------------------------------------------------                                           
    [INFO] BUILD FAILURE                                                                                                      
    [INFO] ------------------------------------------------------------------------                                           
    [INFO] Total time: 03:04 min                                                                                              
    [INFO] Finished at: 2018-08-25T15:59:45+05:30                                                                             
    [INFO] ------------------------------------------------------------------------                                           
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.22.0:verify (default) on project kt-tourle
    ader-integration-tests: There are test failures.                                                                          
    [ERROR]                                                                                                                   
    [ERROR] Please refer to C:\dev\sourcecode\bitbucket\kt-tourleader\kt-tourleader-integration-tests\target\failsafe-reports 
    for the individual test results.                                                                                          
    [ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream
    .                                                                                                                         
    [ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goo
    dbye. VM crash or System.exit called?                                                                                     
    [ERROR] Command was cmd.exe /X /C "C:\dev\plang\java\jdk1.8.0_172\jre\bin\java -jar C:\Users\811361\AppData\Local\Temp\sur
    efire7907863986784178610\surefirebooter5648218167016296478.jar C:\Users\811361\AppData\Local\Temp\surefire7907863986784178
    610 2018-08-25T15-56-45_274-jvmRun1 surefire7488758955999237834tmp surefire_07817517722767731539tmp"                      
    [ERROR] Process Exit Code: 0                                                                                              
    [ERROR] Crashed tests:                                                                                                    
    [ERROR] com.kt.tourleader.api.client.TourleaderRestApiCitrusIT                                                            
    [ERROR]         at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:671)                   
    [ERROR]         at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:533)                   
    [ERROR]         at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:278)                    
    [ERROR]         at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:244)                    
    [ERROR]         at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1194)  
    [ERROR]         at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefire
    Mojo.java:1022)                                                                                                           
    [ERROR]         at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:868)           
    [ERROR]         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)      
    [ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)                        
    [ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)                        
    [ERROR]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)                        
    [ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117
    )                                                                                                                         
    [ERROR]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)

    [ERROR]         at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBu
    ilder.java:56)                                                                                                            
    [ERROR]         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)                
    [ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)                                         
    [ERROR]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)                                         
    [ERROR]         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)                                           
    [ERROR]         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)                                               
    [ERROR]         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)                                                
    [ERROR]         at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)                                                  
    [ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                                            
    [ERROR]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)                          
    [ERROR]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)                  
    [ERROR]         at java.lang.reflect.Method.invoke(Method.java:498)                                                       
    [ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)                    
    [ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)                            
    [ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)                  
    [ERROR]         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)                              
    [ERROR] -> [Help 1]                        

Странно, когда я запускаю тесты с ключом "-X", чтобы включить полное ведение журнала отладки, тогда сборка завершается успешно.

Вот конфигурация плагина в pom-файлах.

Родитель pom.xml

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${surefire.version}</version>
                <configuration>
                    <includes>
                        <include>**/*Test.java</include>
                    </includes>
                    <excludes>
                        <exclude>**/*IT.java</exclude>
                    </excludes>
                    <forkCount>1C</forkCount>
                    <reuseForks>true</reuseForks>
                    <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${failsafe.version}</version>
                <executions>
                    <execution>
                        <id>integration-tests</id>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <forkCount>1C</forkCount>
                            <reuseForks>true</reuseForks>
                            <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                            <failIfNoTests>false</failIfNoTests>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>io.fabric8</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.26.1</version>
            </plugin>
        </plugins>
    </pluginManagement>

    <!-- default plugin for all modules -->
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>docker</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>io.fabric8</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>start</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>stop</goal>
                                <goal>build</goal>
                                <goal>start</goal>
                            </goals>
                        </execution>
                        <!-- <execution> <id>clean image</id> <phase>post-integration-test</phase> 
                            <goals> <goal>stop</goal> </goals> </execution> -->
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

pom.xml модуля, содержащего актуальные REST API на основе весенней загрузки

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.kt.tourleader.Swagger2SpringBoot</mainClass>
                <classifier>exec</classifier>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <configuration>
                <images>
                    <image>
                        <name>kt-tourleader-rest-api-dockerimage:${project.version}</name>
                        <alias>kt-tourleader-rest-api-dockerimage</alias>
                        <build>
                            <dockerFileDir>${project.basedir}</dockerFileDir>
                        </build>
                        <run>
                            <namingStrategy>alias</namingStrategy>
                            <ports>
                                <port>9999:8989</port>
                            </ports>
                            <log>
                                <prefix>TC</prefix>
                                <date>default</date>
                                <color>cyan</color>
                            </log>
                        </run>
                    </image>
                </images>
            </configuration>
        </plugin>
    </plugins>
</build>

В файле pom.xml модуля интеграционных тестов нет конкретной конфигурации.

Как показано в родительском pom.xml, я использую версию 0.26.1 maven-docker-plugin.

Когда я запускаю команду ошибки, показанную в трассировке стека ошибок, я получаю следующее сообщение.

cmd.exe /X /C "C:\dev\plang\java\jdk1.8.0_172\jre\bin\java -jar C:\Users\811361\AppData\Local\Temp\surefire1876047502962221585\surefirebooter5968414325723209179.jar C:\Users\811361\AppData\Local\Temp\surefire1876047502962221585 2018-08-25T16-23-23_039-jvmRun1 surefire7969799570305236720tmp surefire_01549635010934355144tmp"                                       

Ошибка: невозможно получить доступ к jarfile C: \ Users \ 811361 \ AppData \ Local \ Temp \ surefire1876047502962221585 \ surefirebooter5968414325723 209179.jar

Что здесь может быть не так и как я могу это исправить?

...