2017-02-17 89 views
0

我有一个克隆的设置Spark。它有一个位于here的microbenchmark套件。如果我浏览一个特定的文件,例如AggregateBenchmark.scala,我看到评论中的指示来执行基准。运行火花microbenchmarks使用sbt

* 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

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

您参考的微基准测试是使用FunSuite编写的,并使用Ignore标记系统。该API没有能力对测试进行统一管理。有关FunSuite和忽略测试的更多信息,请参阅:http://doc.scalatest.org/3.0.1/#org.scalatest.Ignore

忽略测试有点类似于在源代码中仅对注释进行注释,但其优点是可以让源代码对编译器保持可见,以便测试可以保持并与他们测试的来源保持同步。开发人员选择忽略测试的原因很多,但在这种情况下,这是因为运行微型基准测试作为单元测试套件的一部分开销比较昂贵。

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

+0

回答我的问题。谢谢! – user2512324