public void TestDuplicateRegistration() { var d1 = new Dataflow(DataflowOptions.Default); var d2 = new Dataflow(DataflowOptions.Default); d1.RegisterChild(d2); d1.RegisterChild(d2); }
public void TestCircularDependency() { var d1 = new Dataflow(DataflowOptions.Default); var d2 = new Dataflow(DataflowOptions.Default); var block = new ActionBlock <int>(i => { }); d2.RegisterChild(block); d1.RegisterChild(d2); d2.RegisterChild(d1); }
public async Task TestDuplicateRegistration2() { var d1 = new Dataflow(DataflowOptions.Default); var d2 = new Dataflow(DataflowOptions.Default); var block = new ActionBlock <int>(i => { }); d2.RegisterChild(block); d1.RegisterChild(d2); d1.RegisterChild(d2, allowDuplicate: true); Task.Run( async() => { await Task.Delay(500); block.Complete(); }); await d1.CompletionTask; await d2.CompletionTask; }
public async Task TestCleanUpOnFault() { var f = new MyDataflow <int>() { Name = "dataflow1" }; f.m_block2.RegisterChild(new BufferBlock <int>()); Task.Run( async() => { await Task.Delay(200); (f.m_block2.InputBlock).Fault(new InvalidOperationException()); }); var f2 = new Dataflow(DataflowOptions.Default) { Name = "dataflow2" }; f2.RegisterChild(f.m_block1); f2.RegisterChild(f.m_block2); var f3 = new Dataflow(DataflowOptions.Default) { Name = "dataflow3" }; f3.RegisterChild(f); f3.RegisterChild(f2); await this.AssertFlowError <InvalidOperationException>(f); Assert.AreEqual(-1, f.cleanUpSignal); await this.AssertFlowError <InvalidOperationException>(f2); await this.AssertFlowError <InvalidOperationException>(f3); }