2016-01-26 81 views
2

我們使用jacoco來測量我們大部分系統的代碼覆蓋率,並且它工作正常。但是,通過spark-submit發送到Apache Spark的代碼無法訪問該代碼覆蓋實用程序。(Jacoco)代碼覆蓋了運往Apache Spark的代碼?

的互聯網絡表明我們可以將jacoco到正在運行的JVM進程,並從它收集覆蓋指標運行環境:http://www.javaworld.com/article/2074515/core-java/unit-test-code-coverage-with-maven-and-jacoco.html

什麼是不明確的是,是否其可能的儀器運行我們的代碼火花司機使用jacoco代理,以便它可以測量我們發佈的代碼的覆蓋範圍。

很想聽到過去曾試圖做過這樣的事情的人。

回答

2

好吧,經過更多努力之後,看起來像這樣做的方法是通過在調用spark-submit時設置spark.executor.extraJavaOptions

例如:

火花提交--conf「spark.executor.extraJavaOptions = -javaagent:/Users/aron/dev/env/jacoco-0.7.4.201502262128/lib/jacocoagent.jar=destfile= /tmp/jacoco/jacoco.exec,includes=com.mypackages.*「

...將導致spark程序使用運行代碼來指定程序包時指定的jacoco代理程序(com.mypackages。* in上面的例子),然後將代碼覆蓋率統計信息轉儲到一個文件中(例如/tmp/jacoco/jacoco.exec)。

您可以在http://spark.apache.org/docs/latest/configuration.html上看到如何使用這些類型的參數調用spark-submit的詳細信息。

然後,您可以指示jacoco使用統計信息轉儲生成覆蓋率報告!這是我要採取的方法,我希望這可以幫助某人。