示例#1
0
        public void processEntirePipeline_SimpleAsyncConsumer_TargetAlways1()
        {
            //arrange
            _config.InputDataKind  = KindOfTextData.Raw;
            _config.IntakeSupplier = _inLine; //has SourceNo assigned in a round-robin fashion
            //default (no) transformation
            _config.RouterType     = RouterType.SourceToTarget;
            _config.OutputDataKind = KindOfTextData.Raw;
            _config.AsyncOutput    = true;
            _config.SetAsyncOutputConsumer(l => { _resultingLines.Add(l); return(Task.FromResult(0)); });

            var orchestrator = new EtlOrchestrator(_config);

            //act
            var counts = orchestrator.ExecuteAsync().Result;

            //assert
            counts.CompletionStatus.Should().Be(CompletionStatus.IntakeDepleted);
            counts.RowsRead.Should().Be(8);
            counts.ClustersRead.Should().Be(8);
            counts.RowsWritten.Should().Be(8);
            counts.ClustersWritten.Should().Be(8);

            _resultingLines.Count.Should().Be(9); //includes end-of-data mark
            _resultingLines[0].Should().Be("Line 01");
            _resultingLines[1].Should().Be("Line 02");
            _resultingLines[2].Should().Be("Line 03");
            _resultingLines[3].Should().Be("Line 04");
            _resultingLines[4].Should().Be("Line 05");
            _resultingLines[5].Should().Be("Line 06");
            _resultingLines[6].Should().Be("Line 07");
            _resultingLines[7].Should().Be("Line 08");
            _resultingLines[8].Should().BeNull();
        }