2017-11-13 9 views
2

I 1 개 메인 출력과 1 sideoutput 갖는다 아파치 빔 함께 파르 기능 테스트 유닛 해요 : I 주 검사하기위한 유닛 테스트 클래스를 설정유닛 테스트 측 출력

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 따르면 I는 DoFnTester 클래스에없는 setOutputTags(tags) 해당 함수를 사용하여 측 출력을 설정할 수있을 것이다. 아파치 빔 기능의 서브 세트를 사용하는 Google Cloud Dataflow dependency 버전 2.1.0을 사용하고 있지만 DoFnTestersetOutputTags에 대한 Apache Beam 참조 문서는 (소개에서 다시 언급 했음에도 불구하고) 보이지 않습니다.

답변

0

이러한 방법은 2.1.0에서 사용할 수 없습니다. 사실, DoFnTester는 더 이상 사용되지 않습니다. https://issues.apache.org/jira/browse/BEAM-3159을 참조하십시오.

DirectPhone을 DirectRunner와 함께 사용하여 DoDn에서 ParDo를 테스트하는 것이 좋습니다. TestStream을 사용하여 입력 흐름을 신중하게 제어 할 수 있습니다. 이 주제에 대해 blog을 참조하십시오.