=str - Various Flow and FlowMaterializer improvements
- Switches from using size-of-1/2 Vectors to using Lists - Fixes an issue where processorForNode wouldn't use the dispatcher form the settings - Adds a dedicated Collect fusion op - Adds various simplifications to ActorBasedFlowMaterializer - Adds FIXMEs where appropriate - Switches `grouped` to use a VectorBuilder - Adds support for `scan` - ActorBasedFlowMaterializer now uses Iterator instead of head+tail decomp on Seqs - Identity and Completed Transformers are now cached - Adds dedicated AstNodes for all combinators - Adds a hook-in point for fusion in `ActorBasedFlowMaterializer` - Adds support for `Operate` an AstNode with a function that create a fusing.Op - Adds experimental and slow optimizer as a PoC - Adds verification that Ast.Fused does not exist in optimizer input
This commit is contained in:
parent
efe9331b69
commit
db4e5c4a29
51 changed files with 678 additions and 732 deletions
|
|
@ -20,9 +20,9 @@ class GraphMergeSpec extends TwoStreamsSetup {
|
|||
|
||||
"work in the happy case" in {
|
||||
// Different input sizes (4 and 6)
|
||||
val source1 = Source((0 to 3).iterator)
|
||||
val source2 = Source((4 to 9).iterator)
|
||||
val source3 = Source(List.empty[Int].iterator)
|
||||
val source1 = Source(0 to 3)
|
||||
val source2 = Source(4 to 9)
|
||||
val source3 = Source(List[Int]())
|
||||
val probe = StreamTestKit.SubscriberProbe[Int]()
|
||||
|
||||
FlowGraph { implicit b ⇒
|
||||
|
|
@ -54,7 +54,7 @@ class GraphMergeSpec extends TwoStreamsSetup {
|
|||
val source3 = Source(List(3))
|
||||
val source4 = Source(List(4))
|
||||
val source5 = Source(List(5))
|
||||
val source6 = Source(List.empty[Int])
|
||||
val source6 = Source(List[Int]())
|
||||
|
||||
val probe = StreamTestKit.SubscriberProbe[Int]()
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ class GraphMergeSpec extends TwoStreamsSetup {
|
|||
commonTests()
|
||||
|
||||
"work with one immediately completed and one nonempty publisher" in {
|
||||
val subscriber1 = setup(completedPublisher, nonemptyPublisher((1 to 4).iterator))
|
||||
val subscriber1 = setup(completedPublisher, nonemptyPublisher(1 to 4))
|
||||
val subscription1 = subscriber1.expectSubscription()
|
||||
subscription1.request(4)
|
||||
subscriber1.expectNext(1)
|
||||
|
|
@ -94,7 +94,7 @@ class GraphMergeSpec extends TwoStreamsSetup {
|
|||
subscriber1.expectNext(4)
|
||||
subscriber1.expectComplete()
|
||||
|
||||
val subscriber2 = setup(nonemptyPublisher((1 to 4).iterator), completedPublisher)
|
||||
val subscriber2 = setup(nonemptyPublisher(1 to 4), completedPublisher)
|
||||
val subscription2 = subscriber2.expectSubscription()
|
||||
subscription2.request(4)
|
||||
subscriber2.expectNext(1)
|
||||
|
|
@ -105,7 +105,7 @@ class GraphMergeSpec extends TwoStreamsSetup {
|
|||
}
|
||||
|
||||
"work with one delayed completed and one nonempty publisher" in {
|
||||
val subscriber1 = setup(soonToCompletePublisher, nonemptyPublisher((1 to 4).iterator))
|
||||
val subscriber1 = setup(soonToCompletePublisher, nonemptyPublisher(1 to 4))
|
||||
val subscription1 = subscriber1.expectSubscription()
|
||||
subscription1.request(4)
|
||||
subscriber1.expectNext(1)
|
||||
|
|
@ -114,7 +114,7 @@ class GraphMergeSpec extends TwoStreamsSetup {
|
|||
subscriber1.expectNext(4)
|
||||
subscriber1.expectComplete()
|
||||
|
||||
val subscriber2 = setup(nonemptyPublisher((1 to 4).iterator), soonToCompletePublisher)
|
||||
val subscriber2 = setup(nonemptyPublisher(1 to 4), soonToCompletePublisher)
|
||||
val subscription2 = subscriber2.expectSubscription()
|
||||
subscription2.request(4)
|
||||
subscriber2.expectNext(1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue