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)); }
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); } }