运行easyb \ selenium时出现permgen错误

时间:2012-01-20 16:56:42

标签: ant selenium jenkins gradle easyb

我有6种技术在玩

easyb中 硒 摇篮 蚂蚁 Java的 詹金斯

我们使用 easyB 来编写场景
这些场景反过来调用 Selenium
最后,我们使用 Gradle 来启动所有故事。 由于我们没有easyB的gradle插件,gradle确实使用 ant 来运行easyB。

此Gradle脚本最终通过 Jenkins 作业

执行

完整执行需要 3-4小时。 中途,我们得到 perm-gen错误

我不确定哪个进程需要增加在PermGen中

EasyB? 蚂蚁? 摇篮?


错误消息
[ant:easyb]重试值现在是:2
[ant:easyb] objectID设置为:60868
[ant:easyb]创建subjectID 60868后中断 [ant:easyb]创建访问>>>>>>预处理
[ant:easyb]创建图像组>>>>>> auto-gp1
[ant:easyb]运行easyb故事或规范时出错 [ant:easyb] java.lang.OutOfMemoryError:PermGen space
[ant:easyb] easyb执行FAILED

失败:构建因异常而失败。


Gradle脚本

check << {
    def script = new GroovyShell()
    script.run(new File('InitializeReport.groovy'))

    ant.taskdef(name: "easyb", classname:"org.easyb.ant.BehaviorRunnerTask", classpath: sourceSets.test.runtimeClasspath.asPath)

    ant.easyb( classpath: sourceSets.test.runtimeClasspath.asPath, failureProperty:'easyb_failed' ,tags:tags) {
        report( location:"${project.testResultsDir}/story."+format, format:format )
        behaviors( dir: storiesHome ) {
            include( name:storyToBeExecuted )
        }
   }

    ant.fail( if:'easyb_failed', message: 'Failures in easyb stories' )
}

这是我在Jenkins控制台上看到的 注意 - 如何将内存选项传递给Gradle命令,而不是传递给运行easyB脚本的Java命令? 那就是 - 我认为问题是......

[jenkins @ bil-dev-006v bin] $ ps -ef | grep gradle

jenkins 18420 4714 9 23:04? 00:00:16 /usr/java/jdk1.6.0_20/bin/java -XX:MaxPermSize = 700m -Xmx512m -XX:MaxPermSize = 800m -Xmx512m -classpath / opt / jenkins / gradle- 1.0-milestone-1 / lib / gradle-launcher-1.0-milestone-1.jar -Dorg.gradle.appname = gradle org.gradle.launcher.GradleMain -PstoryName = -PstoriesHome = check -info

jenkins 18579 18420 13 23:04? 00:00:21 /usr/java/jdk1.6.0_20/jre/bin/java -classpath / jenkins / jobs / helium-complete-run / workspace / trunk / build / classes / main:/ jenkins / jobs / helium-完整的运行/工作区/主干/ lib目录/公地郎2.4.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/httpclient-4.1.1.jar:/詹金斯/职位/氦完整的运行/工作区/主干/ lib目录/ XML-apis.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/activation.jar:/詹金斯/职位/氦完整的运行/工作区/主干/ lib目录/ xercesSamples.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/safe-client.jar:/詹金斯/职位/氦完整的运行/工作区/主干/ lib / security中。罐子:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/json-lib-2.4-jdk15.jar:/詹金斯/职位/氦完整的运行/工作区/主干/ lib目录/ HTTP-builder- 0.5.1.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/safe-import.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/mail.jar: /jenkins/jobs/helium-complete-run/workspace/trunk/lib/ojdbc14.jar:/jenkins/jobs/helium-complet E-运行/工作区/主干/ lib中/的HttpCore-4.1.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/xercesImpl.jar:/詹金斯/职位/氦完整的运行/工作区/主干/ lib目录/ cacher.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/serializer.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/resolver.jar: /jenkins/jobs/helium-complete-run/workspace/trunk/lib/cache-verifier.jar:/opt/jenkins/.gradle/cache/org.easyb/easyb/jars/easyb-0.9.7.jar:/选择/詹金斯/ .gradle /缓存/公地CLI /公地CLI /瓶/公地CLI-1.1.jar:/opt/jenkins/.gradle/cache/org.codehaus.groovy/groovy-all/jars/groovy - 全1.7.2.jar:/opt/jenkins/.gradle/cache/org.seleniumhq.selenium.client-drivers/selenium-java-client-driver/jars/selenium-java-client-driver-1.0.1的.jar:/opt/jenkins/.gradle/cache/log4j/log4j/bundles/log4j-1.2.16.jar:/opt/jenkins/.gradle/cache/org.codehaus.groovy/groovy/jars/groovy-1.8 .2.jar:/opt/jenkins/.gradle/cache/antlr/antlr/jars/antlr-2.7.7.jar:/opt/jenkins/.gradle/cache/asm/asm/jars/asm-3.2.jar :/选择/詹金斯/ .gradle /缓存/ ASM / ASM-公地/瓶/ ASM-公地3.2.jar:/opt/jenkins/.gradle/cache/asm/asm-tree/jars/asm-tree-3.2.jar :/opt/jenkins/.gradle/cache/asm/asm-util/jars/asm-util-3.2.jar:/opt/jenkins/.gradle/cache/asm/asm-analysis/jars/asm-analysis-3.2 .jar org.easyb.BehaviorRunner -outfail failed.txt -html /jenkins/jobs/helium-complete-run/workspace/trunk/build/test-results/storycaseassigment_inter-intra.html / jenkins / jobs / helium-complete-run /workspace/trunk/src/test/stories/caseassigment/inter-intra/ca_interintra.story

2 个答案:

答案 0 :(得分:0)

您需要增加perm gen空间,您可以通过VM设置设置max参数来完成此操作。在命令行上,使用以下选项启动Java:

  

-XX:MaxPermSize参数=128米

另请参阅:http://www.freshblurbs.com/explaining-java-lang-outofmemoryerror-permgen-space

答案 1 :(得分:0)

你实现它的方式,easyB测试将在“主”Gradle JVM中运行(除非easyB Ant任务分叉一个新的JVM,我怀疑。)将JVM选项传递给该进程的一种方法是通过GRADLE_OPTS环境变量:

export GRADLE_OPTS="-XX:MaxPermSize=128m"

设置此选项的其他方法有properties.gradle(详见Gradle user guide)或调整gradlew脚本(如果您碰巧使用Gradle包装器)。