可以使用scio JobTest控制输入处理时间吗?

时间:2019-04-19 14:56:31

标签: spotify-scio

我们正在使用com.spotify.scio.testing.JobTest对我们的scio管道进行端到端测试。管道包括对不经常到达的配置数据流敏感的数据排序的DoFn。

我们正在将配置值combinedSampleConfig的有序列表作为输入传递给JobTest Builder。当我们运行端到端测试时,有没有办法让JobTest保留此CustomIO输入流的顺序?

我看到测试框架在测试单个组件时可以很好地控制源到达时间(使用advanceProcessingTime),但是看不到如何将其应用于使用JobTest进行的端到端测试。

    JobTest[MyApp.type]
      .args(commonArgs ++ Seq(
        "--numWorkers=1",
        "--maxNumWorkers=1",
      ): _*
      )
      .input(CustomIO[PubsubMessage](CONFIG_ID), combinedSampleConfig)
      .input(CustomIO[IndicatorEntry](INPUT_ID), sampleInput)
      .output(CustomIO[EnrichedIndicatorEntry](AGG_ID)) {
        _ should containInAnyOrder (expectedAggs)
      }
      .output(CustomIO[EnrichedIndicatorEntry](EVENT_ID)) {
        _ should containInAnyOrder (expectedEvents)
      }
      .run()

1 个答案:

答案 0 :(得分:0)

https://github.com/spotify/scio/pull/1905

此PR最近被合并,应该允许这种用例。你可以试试看吗?