Scio тестирование не доступных счетчиков

Я строю некоторые тесты вокруг моего конвейера, и, в частности, у меня есть две ветви (одна, где рассматриваются ошибки, другая, где успехи), со стороны ошибок, у меня есть увеличивающийся счетчик (ScioMetrics.counter("MetricName").inc()) и при построении тестов для другой ветви я хочу утверждать, что счетчик ошибок равен 0.

JobTest.
 ...
.counter(ScioMetrics.counter("MetricName"))(_ shouldBe 0)
 ...

Я получаю NoSuchelementException когда тест успешно выполняется с сообщением, объясняющим, что метрика не была найдена, поскольку к ней, возможно, не был получен доступ внутри конвейера, что нормально, поскольку я могу утверждать, что исключение повышено, но. Разве не должно быть "более хорошего" способа проверить это?

Спасибо!

1 ответ

Из-за структуры API Beam Metrics счетчик, который не затрагивается в преобразовании, произведет NoSuchElementExcception так как имя никогда не зарегистрировано.

использование ScioContext#initCounter чтобы обойти это. Это в основном работает пустышка map преобразовать для инициализации каждого счетчика на 0. https://github.com/spotify/scio/blob/master/scio-core/src/main/scala/com/spotify/scio/ScioContext.scala

Другие вопросы по тегам