46 lines
1.1 KiB
Scala
46 lines
1.1 KiB
Scala
package docs.stream.cookbook
|
|
|
|
import akka.stream.scaladsl.{ Flow, Sink, Source }
|
|
import akka.stream.testkit.StreamTestKit
|
|
import akka.stream.testkit.StreamTestKit.{ SubscriberProbe, PublisherProbe }
|
|
|
|
import scala.concurrent.duration._
|
|
|
|
class RecipeSimpleDrop extends RecipeSpec {
|
|
|
|
"Recipe for simply dropping elements for a faster stream" must {
|
|
|
|
"work" in {
|
|
|
|
//#simple-drop
|
|
val droppyStream: Flow[Message, Message] =
|
|
Flow[Message].conflate(seed = identity)((lastMessage, newMessage) => newMessage)
|
|
//#simple-drop
|
|
|
|
val pub = PublisherProbe[Message]()
|
|
val sub = SubscriberProbe[Message]()
|
|
val messageSource = Source(pub)
|
|
val sink = Sink(sub)
|
|
|
|
messageSource.via(droppyStream).to(sink).run()
|
|
|
|
val manualSource = new StreamTestKit.AutoPublisher(pub)
|
|
|
|
val subscription = sub.expectSubscription()
|
|
sub.expectNoMsg(100.millis)
|
|
|
|
manualSource.sendNext("1")
|
|
manualSource.sendNext("2")
|
|
manualSource.sendNext("3")
|
|
|
|
subscription.request(1)
|
|
sub.expectNext("3")
|
|
|
|
manualSource.sendComplete()
|
|
subscription.request(1)
|
|
sub.expectComplete()
|
|
}
|
|
|
|
}
|
|
|
|
}
|