!str #16902: Unify stream internal representation

also =str #16912: Fix StreamTcpSpec flakiness
This commit is contained in:
Endre Sándor Varga 2015-01-28 14:19:50 +01:00
parent cac9c9f2fb
commit 8d77fa8b29
230 changed files with 7814 additions and 9596 deletions

View file

@ -7,8 +7,6 @@ import akka.stream.ActorFlowMaterializer
import akka.stream.scaladsl.Broadcast
import akka.stream.scaladsl.Flow
import akka.stream.scaladsl.FlowGraph
import akka.stream.scaladsl.FlowGraphImplicits
import akka.stream.scaladsl.MaterializedMap
import akka.stream.scaladsl.Merge
import akka.stream.scaladsl.Sink
import akka.stream.scaladsl.Source
@ -27,44 +25,46 @@ class FlowGraphDocSpec extends AkkaSpec {
"build simple graph" in {
//format: OFF
//#simple-flow-graph
val g = FlowGraph { implicit b =>
import FlowGraphImplicits._
val g = FlowGraph.closed() { implicit b =>
import FlowGraph.Implicits._
val in = Source(1 to 10)
val out = Sink.ignore
val bcast = Broadcast[Int]
val merge = Merge[Int]
val bcast = b.add(Broadcast[Int](2))
val merge = b.add(Merge[Int](2))
val f1, f2, f3, f4 = Flow[Int].map(_ + 10)
in ~> f1 ~> bcast ~> f2 ~> merge ~> f3 ~> out
bcast ~> f4 ~> merge
in ~> f1 ~> bcast.in
bcast.out(0) ~> f2 ~> merge.in(0)
bcast.out(1) ~> f4 ~> merge.in(1)
merge.out ~> f3 ~> out
}
//#simple-flow-graph
//format: ON
//#simple-graph-run
val map: MaterializedMap = g.run()
g.run()
//#simple-graph-run
}
"build simple graph without implicits" in {
//#simple-flow-graph-no-implicits
val g = FlowGraph { b =>
val g = FlowGraph.closed() { b =>
val in = Source(1 to 10)
val out = Sink.ignore
val broadcast = Broadcast[Int]
val merge = Merge[Int]
val broadcast = b.add(Broadcast[Int](2))
val merge = b.add(Merge[Int](2))
val f1 = Flow[Int].map(_ + 10)
val f3 = Flow[Int].map(_.toString)
val f2 = Flow[Int].map(_ + 20)
b.addEdge(in, broadcast)
.addEdge(broadcast, f1, merge)
.addEdge(broadcast, f2, merge)
.addEdge(merge, f3, out)
b.addEdge(b.add(in), broadcast.in)
b.addEdge(broadcast.out(0), f1, merge.in(0))
b.addEdge(broadcast.out(1), f2, merge.in(1))
b.addEdge(merge.out, f3, b.add(out))
}
//#simple-flow-graph-no-implicits
@ -74,19 +74,19 @@ class FlowGraphDocSpec extends AkkaSpec {
"flow connection errors" in {
intercept[IllegalArgumentException] {
//#simple-graph
FlowGraph { implicit b =>
import FlowGraphImplicits._
FlowGraph.closed() { implicit b =>
import FlowGraph.Implicits._
val source1 = Source(1 to 10)
val source2 = Source(1 to 10)
val zip = Zip[Int, Int]
val zip = b.add(Zip[Int, Int]())
source1 ~> zip.left
source2 ~> zip.right
source1 ~> zip.in0
source2 ~> zip.in1
// unconnected zip.out (!) => "must have at least 1 outgoing edge"
}
//#simple-graph
}.getMessage should include("must have at least 1 outgoing edge")
}.getMessage should include("unconnected ports: Zip.out")
}
"reusing a flow in a graph" in {
@ -101,19 +101,20 @@ class FlowGraphDocSpec extends AkkaSpec {
// format: OFF
val g =
//#flow-graph-reusing-a-flow
FlowGraph { implicit b =>
import FlowGraphImplicits._
val broadcast = Broadcast[Int]
Source.single(1) ~> broadcast
FlowGraph.closed(topHeadSink, bottomHeadSink)((_, _)) { implicit b =>
(topHS, bottomHS) =>
import FlowGraph.Implicits._
val broadcast = b.add(Broadcast[Int](2))
Source.single(1) ~> broadcast.in
broadcast ~> sharedDoubler ~> topHeadSink
broadcast ~> sharedDoubler ~> bottomHeadSink
broadcast.out(0) ~> sharedDoubler ~> topHS.inlet
broadcast.out(1) ~> sharedDoubler ~> bottomHS.inlet
}
//#flow-graph-reusing-a-flow
// format: ON
val map = g.run()
Await.result(map.get(topHeadSink), 300.millis) shouldEqual 2
Await.result(map.get(bottomHeadSink), 300.millis) shouldEqual 2
val (topFuture, bottomFuture) = g.run()
Await.result(topFuture, 300.millis) shouldEqual 2
Await.result(bottomFuture, 300.millis) shouldEqual 2
}
}