public void ShouldResetAllValuesIfCallingBeginSeveralTimes()
        {
            ExecutionResultBuilder builder = new ExecutionResultBuilder();

            builder.Begin();
            builder.Increment();
            builder.Increment();
            builder.Increment();
            builder.AddError(new Exception(), null);
            var result = builder.Build();

            Assert.That(result.InsertCount, Is.EqualTo(3));
            Assert.That(result.Errors.Count, Is.EqualTo(1));

            ExpectedExceptionHappened <InvalidOperationException>(new Action(() => { builder.Build(); }), "should not be able to build again before calling begin");

            builder.Begin();
            builder.Increment();
            var result2 = builder.Build();

            Assert.That(result2.InsertCount, Is.EqualTo(1));
            Assert.That(result2.Errors.Count, Is.EqualTo(0));
        }
Пример #2
0
        public void ShouldConsumeOneRow()
        {
            builder = new ExecutionResultBuilder();
            builder.Begin();
            ExecutionNode rootNode = ExecutionNode.CreateLevelOneNode(1, "Root");

            rootNode.AddTable(new TableEntity("dbo", "Customer"));

            manager.RunWorkFlow(connectionString, wrapper, builder, options, rootNode);

            var result = builder.Build();

            Assert.That(result.Errors.Count, Is.EqualTo(0));
            Assert.That(result.InsertCount, Is.EqualTo(1));
        }
        public void ShouldStartAndBuildBuilder()
        {
            ExecutionResultBuilder builder = new ExecutionResultBuilder();

            builder.Begin();
            builder.AddError(new Exception(), new DataRowEntity(null));
            Thread.Sleep(1); // to get different enddate than startdate
            builder.Increment();

            ExecutionResult result = builder.Build();

            Assert.That(result.InsertCount, Is.EqualTo(1));
            Assert.That(result.Errors.Count, Is.EqualTo(1));
            Assert.That(result.Duration, Is.Not.Null);
            Assert.That(result.StartTime, Is.Not.Null);
            Assert.That(result.EndTime, Is.Not.Null);

            Assert.That(result.EndTime, Is.GreaterThan(result.StartTime));
        }
        public void RunWorkFlow(string connectionString, DataConsumerPluginWrapper consumerWrapper, ExecutionResultBuilder builder, ExecutionTaskOptions options, ExecutionNode rootNode)
        {
            using (var consumer = consumerWrapper.CreateInstance())
                using (iterator = new NodeIterator(rootNode))
                {
                    consumer.ReportInsertionCallback = builder.Increment;
                    consumer.ReportErrorCallback     = builder.AddError;

                    ValueStore   valueStore = new ValueStore();
                    DataProducer producer   = new DataProducer(valueStore);

                    builder.Begin();

                    consumer.Init(connectionString, consumerWrapper.OptionsTemplate);
                    // hmm: Iterator should hold the Ienumerable and reset it when ever it starts over on a node?

                    consumer.Consume(producer.ProduceRows(iterator.GetTablesRecursive()), valueStore);
                }
        }