Как создать источник, на который не влияет противодавление
Я хочу протестировать некоторые функции Akka streams, такие как conflate
. Для этого мне нужно построить источник, на который не влияет противодавление в рамках простого юнит-теста. Наивные попытки вроде
Source.tick(1.milli, 1.milli, "tick").map(_ => Random.nextDouble())
Не работают из-за противодавления. Ото, идущий через HTTP, вероятно, перебор.
Как бы я создал простой Source
для модульного теста, на который не влияет противодавление?
1 ответ:
Вы можете использовать
Source.actorRef
, который - по замыслу - не поддерживает противодавление. Смотрите пример ниже:val actorRef: ActorRef = Source.actorRef(0, OverflowStrategy.dropNew) .map(_ => Random.nextDouble()) .to(yourSink).run() system.scheduler.schedule(1.milli, 1.milli, actorRef, "tick")(system.dispatcher)
Параметр bufferSize и стратегия переполнения были выбраны здесь случайным образом, вам нужно будет настроить их в соответствии с потребностями вашего теста.
Более подробную информацию о
Source.actorRef
можно найти вdocs .