1

我有 6 种技术在玩

easyB Selenium Gradle Ant Java Jenkins

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

这个 Gradle 脚本最终通过Jenkins作业执行

完整的执行大约需要3-4 小时。进行到一半,我们得到一个perm-gen 错误

我不确定哪个过程需要增加PermGen

易B?蚂蚁?摇篮?


错误信息
[ant:easyb] retry value is now: 2
[ant:easyb] objectID is set to: 60868
[ant:easyb] break after created subjectID 60868
[ant:easyb] Creating visit>>>>>>预处理
[ ant:easyb] 创建图像组>>>>>>auto-gp1
[ant:easyb] 运行您的 easyb 故事或规范时出错
[ant:easyb] java.lang.OutOfMemoryError: PermGen space
[ant:easyb] easyb执行失败

FAILURE:构建失败并出现异常。


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

詹金斯 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= 检查 -info

詹金斯 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-完整运行/workspace/trunk/lib/commons-lang-2.4.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/httpclient-4.1.1.jar:/jenkins/jobs/helium-完整运行/workspace/trunk/lib/xml-apis.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/activation.jar:/jenkins/jobs/helium-complete-run/workspace/ trunk/lib/xercesSamples.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/safe-client.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/security。 jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/json-lib-2.4-jdk15.jar:/jenkins/jobs/helium-complete-run/workspace/trunk/lib/http-builder- 0.5.1.jar:

4

2 回答 2

0

您需要增加 perm gen 空间,您可以通过 VM 设置设置 max 参数来做到这一点。在命令行上,使用以下选项启动 Java:

-XX:MaxPermSize=128m

另见:http ://www.freshblurbs.com/explaining-java-lang-outofmemoryerror-permgen-space

于 2012-01-20T17:02:06.690 回答
0

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

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

设置此选项的其他方法是properties.gradle(有关详细信息,请参阅Gradle 用户指南)或调整gradlew脚本(如果您碰巧使用 Gradle 包装器)。

于 2012-01-20T17:44:45.163 回答