测试PubsubIO使用本地模拟器读取

时间:2017-10-16 13:34:26

标签: java unit-testing google-cloud-dataflow google-cloud-pubsub

我能够设置TestPipelinePubsubIO以使用Pubsub模拟器:

  options = TestPipeline.testingPipelineOptions().as(PubsubOptions.class);
  options.setPubsubRootUrl(pubsubUrl);

但问题是如何在单元测试时绑定PubsubIO.readMessages(),实际进行有限测试:

  final PCollection<PubsubMessage> pCollection =
      pipeline.apply(PubsubIO.readMessagesWithAttributes().fromTopic("some-topic"));

  PAssert.that(pCollection).satisfies(pubsubMessages -> {
    pubsubMessages.forEach(System.out::println);
    return null;
  });

  pipeline.run();

我正在使用google-cloud-dataflow-java-sdk-all版本2.1.0

1 个答案:

答案 0 :(得分:0)

对于Direct runner,据我所知,目前这是不可能的(我同意这是非常不幸的。)

使用Dataflow运行程序,您最好的选择可能是在一段时间后以编程方式在管道上启动Drain。