0
私は Pubsubエミュレータで動作するように設定 TestPipelinePubsubIOすることができた

テストPubsubIOは地元のエミュレータで読み取る

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を使用しています。

答えて

0

ダイレクトランナーとは、私が知っている限り、これは現時点では不可能です(これは非常に残念です)。

Dataflowランナーを使用すると、おそらくプログラマチックにある程度の時間が経過した後にパイプライン上のドレインを開始することが最善の方法でしょう。

関連する問題