2017-11-13 5 views
2

I 1つのメイン出力と1 sideoutput有するアパッチビームとPARDO機能テストユニットだ:私は主試験するためのユニット・テスト・クラスを設定ユニットテスト側出力

public class GetPubsubMessageDoFn extends DoFn<PubsubMessage, PubsubPayload.PubsubPayloadDTO> { 

    @ProcessElement 
    public void processContext(ProcessContext processContext) { 
    PubsubPayload pubsubPayload = new PubsubPayload(processContext.element()); 
    processContext.output(pubsubPayload.getPayload()); //main output 
    processContext.output(ORIGIN_PATH_TUPLE_TAG, GCSUtils.toGSURL(pubsubPayload.getPayload().bucket, pubsubPayload.getPayload().name)); //side output 
    } 
} 

- 及び側出力:

public class GetPubsubMessageDoFnTest { 

     private DoFnTester<PubsubMessage, PubsubPayloadDTO> getPubsubMessageDoFn; 
     private Injector injector; 
     private final TupleTagList tags = TupleTagList.of(PUBSUB_PAYLOAD_DTO_TUPLE_TAG).and(ORIGIN_PATH_TUPLE_TAG); 


     @Before 
     public void setup() { 
     injector = Guice.createInjector(new GetPubsubMessageTestModule()); 
     this.getPubsubMessageDoFn = DoFnTester.of(injector.getInstance(GetPubsubMessageDoFn.class)); 
     this.getPubsubMessageDoFn.setOutputTags(tags); //Does not compile 
     } 

    //Tests 

the documentationによると、私はDoFnTesterクラスに存在しないsetOutputTags(tags)だけでその機能を使用して側出力を設定することができるはずです。私はGoogle Cloud Dataflow dependencyバージョン2.1.0を使用していますが、これはApache Beamの機能のサブセットを使用していますが、DoFnTestersetOutputTagsのApache Beamリファレンスドキュメントも表示されていません(イントロで再度説明しています)。

答えて

0

これらのメソッドは、2.1.0では使用できません。実際、DoFnTesterは廃止予定です。https://issues.apache.org/jira/browse/BEAM-3159を参照してください。

アドバイスは、DirectPressとDirectRunnerを使用してDoDnのParDoをテストすることです。 TestStreamで入力の流れを慎重に制御することができます。このトピックのnice blogを参照してください。

関連する問題