2016-01-18 17:21:14 +02:00
|
|
|
/**
|
2016-02-23 12:58:39 +01:00
|
|
|
* Copyright (C) 2016 Lightbend Inc. <http://www.lightbend.com>
|
2016-01-18 17:21:14 +02:00
|
|
|
*/
|
|
|
|
|
package akka.stream.scaladsl
|
|
|
|
|
|
|
|
|
|
import akka.stream.{ ActorMaterializer, ActorMaterializerSettings }
|
|
|
|
|
import akka.stream.testkit._
|
|
|
|
|
import scala.concurrent.duration._
|
2016-02-25 14:27:45 +01:00
|
|
|
import akka.testkit.AkkaSpec
|
2016-01-18 17:21:14 +02:00
|
|
|
|
2016-01-19 23:03:36 +02:00
|
|
|
class FlowBatchWeightedSpec extends AkkaSpec {
|
2016-01-18 17:21:14 +02:00
|
|
|
|
|
|
|
|
val settings = ActorMaterializerSettings(system)
|
|
|
|
|
.withInputBuffer(initialSize = 2, maxSize = 2)
|
|
|
|
|
|
|
|
|
|
implicit val materializer = ActorMaterializer(settings)
|
|
|
|
|
|
2016-01-19 23:03:36 +02:00
|
|
|
"BatchWeighted" must {
|
2016-01-18 17:21:14 +02:00
|
|
|
"Not aggregate heavy elements" in {
|
|
|
|
|
val publisher = TestPublisher.probe[Int]()
|
|
|
|
|
val subscriber = TestSubscriber.manualProbe[Int]()
|
|
|
|
|
|
2016-01-19 23:03:36 +02:00
|
|
|
Source.fromPublisher(publisher).batchWeighted(max = 3, _ ⇒ 4, seed = i ⇒ i)(aggregate = _ + _).to(Sink.fromSubscriber(subscriber)).run()
|
2016-01-18 17:21:14 +02:00
|
|
|
val sub = subscriber.expectSubscription()
|
|
|
|
|
|
|
|
|
|
publisher.sendNext(1)
|
|
|
|
|
publisher.sendNext(2)
|
|
|
|
|
|
|
|
|
|
sub.request(1)
|
|
|
|
|
subscriber.expectNext(1)
|
|
|
|
|
|
|
|
|
|
publisher.sendNext(3)
|
|
|
|
|
subscriber.expectNoMsg(1.second)
|
|
|
|
|
|
|
|
|
|
sub.request(2)
|
|
|
|
|
subscriber.expectNext(2)
|
|
|
|
|
subscriber.expectNext(3)
|
|
|
|
|
|
|
|
|
|
sub.cancel()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|