使用sbt运行spark microbenchmarks

时间:2017-02-17 23:14:57

标签: scala apache-spark sbt scalatest microbenchmark

我已经克隆了Spark的设置。它有一个微基准套件,位于here。如果我浏览特定文件,例如AggregateBenchmark.scala,我在评论中看到了执行基准测试的说明。

 * To run this:
 *  build/sbt "sql/test-only *benchmark.AggregateBenchmark"

我在项目文件夹中尝试了上面的命令,但每次都忽略了基准测试。以下是上述命令的输出。

[info] AggregateBenchmark:
[info] - aggregate without grouping !!! IGNORED !!!
[info] - stat functions !!! IGNORED !!!
[info] - aggregate with linear keys !!! IGNORED !!!
[info] - aggregate with randomized keys !!! IGNORED !!!
[info] - aggregate with string key !!! IGNORED !!!
[info] - aggregate with decimal key !!! IGNORED !!!
[info] - aggregate with multiple key types !!! IGNORED !!!
[info] - cube !!! IGNORED !!!
[info] - hash and BytesToBytesMap !!! IGNORED !!!
[info] ScalaCheck
[info] Passed: Total 0, Failed 0, Errors 0, Passed 0
[info] Warning: Unknown ScalaCheck args provided: -oDF
[info] ScalaTest
[info] Run completed in 1 second, 393 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 9, pending 0
[info] No tests were executed.
[info] Passed: Total 0, Failed 0, Errors 0, Passed 0, Ignored 9
[success] Total time: 94 s, completed Feb 17, 2017 2:57:21 PM

这里有什么我想念的吗?需要传递哪些额外的标志,命令才能运行测试?

1 个答案:

答案 0 :(得分:1)

不幸的是,没有方法可以在不更改源的情况下从CLI运行忽略的测试。

您引用的微基准测试是使用FunSuite编写的,并使用Ignore标记系统。该API无法取消对测试的忽略。有关FunSuite和忽略测试的更多信息,请参阅此处:http://doc.scalatest.org/3.0.1/#org.scalatest.Ignore

忽略测试有点类似于仅在源代码中注释测试,但它具有保持源代码对编译器可见的优点,以便可以维护测试并使用他们测试的源保持最新。开发人员选择忽略测试有很多原因,但在这种情况下,因为运行微基准测试作为单元测试套件的一部分有点昂贵。

运行测试的唯一方法是使用您选择的编辑器进入并将测试的方法调用从ignore(...)更改为test(...),重新编译,然后运行基准测试。