java - 使用 Aggregator 测试 Metrics.Counter 值的方法

标签 java google-cloud-dataflow apache-beam

Aggregators being removed从 Beam 2 开始,是否有一种首选方法来测试 Counter 值,就像我对 Aggregators 所做的那样:

assertThat(tester.getAggregatorValue(fn.success)).isEqualTo(1);
assertThat(tester.getAggregatorValue(fn.failure)).isEqualTo(0);
assertThat(tester.getAggregatorValue(fn.empty)).isEqualTo(0);

其中 tester 是我的 DoFn 实现的 DoFnTester 类的实例和 fn 实例,带有聚合器successfailureempty 是最终的包私有(private)可见字段。

最佳答案

这与最近在 user@beam.apache.org 列表上提出的问题类似。

answer there suggested installing在运行测试之前创建一个 MetricsContainerImpl 并与之交互,就像 Beam 对其现有测试所做的那样(例如 LateDataDroppingDoFnRunnerTest )。

他们还将其封装在 TestRule 中:

@Rule TestMetrics metrics = new TestMetrics();

@Test
public void invalids() {
  final DoFnTester<InputT, OutputT> doFnTester =
    DoFnTester.of(fixture);
  doFnTester.processElement(input);

  assertThat(metrics,counterValue(fixture.ctr), is(1L));
}

关于java - 使用 Aggregator 测试 Metrics.Counter 值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43930585/

相关文章:

java - 无效响应

java - 是否可以使用 KafkaIO.read 为单个管道的两个不同集群指定 Kafka 引导服务器?

java - 使用 JAVA REPL 解释 Dataflow JAVA SDK 命令

google-cloud-platform - 优化内存密集型数据流管道的 GCP 成本

python - 导入 WriteToDatastore 时出错(Apache Beam/Google DataFlow)

python - 将 pcollection 的每一行拆分为多个 pcollection?

java - IntelliJ 中的自动格式化行

java - 从另一个类调用非静态方法

java - 使用PreparedStatement读取 ".0"列时返回额外的 "smalldatetime"

java - 如何以编程方式从工作人员处终止 Beam Dataflow 作业