【发布时间】:2021-11-12 09:34:53
【问题描述】:
我已经创建了一个这样的测试管道:
Pipeline pipeline;
PipelineOptions pipelineOptions = TestPipeline.testingPipelineOptions();
pipeline = Pipeline.create(pipelineOptions);
FlattenLight flattenLight = new FlattenLight();
DataflowMessage dataflowMessage = getTestDataflowMessage();
PCollection<TableRow> flatttened = pipeline
.apply("Create Input", Create.of(dataflowMessage))
.apply(ParDo.of(flattenLight));
我想测试 FlattenLight 类,它是一个带有 processElement(ProcessContext c) 方法的 DoFn 子类。
问题是使用getTestDataflowMessage() 生成的测试数据没有通过管道。 FlattenLight 对象接收一个具有空值作为字段的对象。
getTestDataflowMessage() 按预期创建字段。您可以看到存在许多不同的测试值:
debugger step at test data creation
但是 FlattenLight 类接收到的 Object 大部分是空的:
debugger step entering the FlattenLight object
如您所见,数据创建和 FlattenLight 处理之间没有步骤。为什么会发生这种情况?如何解决?
【问题讨论】:
-
DataflowMessage 使用的是什么编码器?
-
@robertwb 我没有使用。有必要吗?
-
我的猜测是 DataflowMessage 不知何故没有正确序列化。它的定义是什么?
标签: java testing apache-beam