public void TestThatDeliveryEngineCanExecute() { IDeliveryEngine deliveryEngine = _container.Resolve <IDeliveryEngine>(); Assert.That(deliveryEngine, Is.Not.Null); Assert.That(deliveryEngine.ExceptionHandler, Is.Not.Null); deliveryEngine.ExceptionHandler.OnException += (s, e) => { Assert.That(s, Is.Not.Null); Assert.That(e, Is.Not.Null); Assert.That(e.Message, Is.Not.Null); Assert.That(e.Message, Is.Not.Empty); Assert.That(e.Exception, Is.Not.Null); Debug.WriteLine(e.Message); e.CanContinue = false; Assert.Fail(e.Message); }; IDeliveryEngineExecuteCommand command = new DeliveryEngineExecuteCommand { OverrideArchiveInformationPackageId = "AVID.SA.40330", ValidationOnly = false, RemoveMissingRelationshipsOnForeignKeys = false, NumberOfForeignTablesToCache = 10, IncludeEmptyTables = _configurationRepository.IncludeEmptyTables }; deliveryEngine.Execute(command); }
public void TestValidation() { int warnings = 0; IExceptionHandler exceptionHandlerMock = MockRepository.GenerateMock <IExceptionHandler>(); exceptionHandlerMock.OnException += (sender, eventArgs) => { Assert.That(sender, Is.Not.Null); Assert.That(eventArgs, Is.Not.Null); Assert.That(eventArgs.Exception, Is.Not.Null); throw eventArgs.Exception; }; exceptionHandlerMock.Expect(m => m.HandleException(Arg <Exception> .Is.NotNull, out Arg <bool> .Out(true).Dummy)) .WhenCalled(e => { if (e.Arguments.ElementAt(0) is DeliveryEngineValidateException validationException) { Debug.WriteLine("{0}: {1}", "WARNING", validationException.Message); warnings++; e.Arguments[1] = warnings < 25; return; } if (e.Arguments.ElementAt(0) is DeliveryEngineMappingException mappingException) { Debug.WriteLine("{0}: {1}", "WARNING", mappingException.Message); warnings++; e.Arguments[1] = warnings < 25; return; } Exception exception = (Exception)e.Arguments.ElementAt(0); Debug.WriteLine(exception); e.Arguments[1] = false; exceptionHandlerMock.Raise(f => f.OnException += null, exceptionHandlerMock, new HandleExceptionEventArgs(exception)); }) .Repeat.Any(); exceptionHandlerMock.Expect(m => m.HandleException(Arg <Exception> .Is.NotNull)) .WhenCalled(e => { Exception exception = (Exception)e.Arguments.ElementAt(0); Debug.WriteLine(exception.Message); Debug.WriteLine(exception.StackTrace); exceptionHandlerMock.Raise(f => f.OnException += null, exceptionHandlerMock, new HandleExceptionEventArgs(exception)); }) .Repeat.Any(); IDeliveryEngine deliveryEngine = CreateSut(true, exceptionHandlerMock); Assert.That(deliveryEngine, Is.Not.Null); deliveryEngine.BeforeGetDataSource += (sender, eventArgs) => { Assert.That(sender, Is.Not.Null); Assert.That(eventArgs, Is.Not.Null); Debug.WriteLine("Getting the data source. Please wait..."); }; deliveryEngine.BeforeGetDataForTargetTable += (sender, eventArgs) => { Assert.That(sender, Is.Not.Null); Assert.That(eventArgs, Is.Not.Null); Assert.That(eventArgs.DataSource, Is.Not.Null); Assert.That(eventArgs.TargetTable, Is.Not.Null); Debug.WriteLine("Getting data for the table named '{0}' (reading data from block {1}). Please wait...", eventArgs.TargetTable.NameTarget, eventArgs.DataBlock); }; deliveryEngine.BeforeValidateDataInTargetTable += (sender, eventArgs) => { Assert.That(sender, Is.Not.Null); Assert.That(eventArgs, Is.Not.Null); Assert.That(eventArgs.DataSource, Is.Not.Null); Assert.That(eventArgs.TargetTable, Is.Not.Null); Debug.WriteLine("Validating data from table named '{0}' (validating data from block {1}). Please wait...", eventArgs.TargetTable.NameTarget, eventArgs.DataBlock); }; IConfigurationRepository configurationRepository = new ConfigurationRepository(ConfigurationManager.AppSettings); IDeliveryEngineExecuteCommand command = new DeliveryEngineExecuteCommand { OverrideArchiveInformationPackageId = "AVID.SA.12549", ValidationOnly = true, TablesHandledSimultaneity = 3, IncludeEmptyTables = configurationRepository.IncludeEmptyTables }; deliveryEngine.Execute(command); }
/// <summary> /// Entry point. /// </summary> /// <param name="args">Arguments</param> static void Main(string[] args) { Console.WriteLine(Resource.GetText(Text.ArchiveMaker)); Console.WriteLine(); ValidationOnly = false; AcceptWarnings = 1024; string archiveInformationPackageId = null; int tablesHandledSimultaneity = 5; bool removeMissingRelationshipsOnForeignKeys = false; int numberOfForeignTablesToCache = 10; bool? includeEmptyTables = null; try { if (args != null && args.Length > 0) { archiveInformationPackageId = args.Single(m => string.IsNullOrEmpty(m) == false && m.Length > 29 && m.Substring(0, 29).Equals("/ArchiveInformationPackageID:")).Substring(29); string optionalArg = args.SingleOrDefault(m => string.IsNullOrEmpty(m) == false && m.Length > 16 && m.Substring(0, 16).Equals("/ValidationOnly:")); if (optionalArg != null) { ValidationOnly = bool.Parse(optionalArg.Substring(16)); } optionalArg = args.SingleOrDefault(m => string.IsNullOrEmpty(m) == false && m.Length > 28 && m.Substring(0, 30).Equals("/TablesHandledSimultaneity:")); if (optionalArg != null) { tablesHandledSimultaneity = int.Parse(optionalArg.Substring(28)); } optionalArg = args.SingleOrDefault(m => string.IsNullOrEmpty(m) == false && m.Length > 16 && m.Substring(0, 16).Equals("/AcceptWarnings:")); if (optionalArg != null) { AcceptWarnings = int.Parse(optionalArg.Substring(16)); } optionalArg = args.SingleOrDefault(m => string.IsNullOrEmpty(m) == false && m.Length > 41 && m.Substring(0, 41).Equals("/RemoveMissingRelationshipsOnForeignKeys:")); if (optionalArg != null) { removeMissingRelationshipsOnForeignKeys = bool.Parse(optionalArg.Substring(41)); } optionalArg = args.SingleOrDefault(m => string.IsNullOrEmpty(m) == false && m.Length > 30 && m.Substring(0, 30).Equals("/NumberOfForeignTablesToCache:")); if (optionalArg != null) { numberOfForeignTablesToCache = int.Parse(optionalArg.Substring(30)); } optionalArg = args.SingleOrDefault(m => string.IsNullOrEmpty(m) == false && m.Length > 20 && m.Substring(0, 20).Equals("/IncludeEmptyTables:")); if (optionalArg != null) { includeEmptyTables = Convert.ToBoolean(optionalArg.Substring(20)); } } if (string.IsNullOrEmpty(archiveInformationPackageId)) { Console.WriteLine(Resource.GetText(Text.UsageArchiveMaker, new FileInfo(Process.GetCurrentProcess().MainModule.FileName).Name)); Console.WriteLine(); return; } } catch { Console.WriteLine(Resource.GetText(Text.UsageArchiveMaker, new FileInfo(Process.GetCurrentProcess().MainModule.FileName).Name)); Console.WriteLine(); return; } try { IContainer container = ContainerFactory.Create(); InformationLogger = container.Resolve <IInformationLogger>(); IExceptionHandler exceptionHandler = container.Resolve <IExceptionHandler>(); exceptionHandler.OnException += ExceptionEventHandler; IDeliveryEngine deliveryEngine = container.Resolve <IDeliveryEngine>(); deliveryEngine.BeforeGetDataSource += BeforeGetDataSourceEventHandler; deliveryEngine.BeforeArchiveMetadata += BeforeArchiveMetadataEventHandler; deliveryEngine.BeforeGetDataForTargetTable += BeforeGetDataForTargetTableEventHandler; deliveryEngine.BeforeValidateDataInTargetTable += BeforeValidatingDataInTargetTableEventHandler; deliveryEngine.BeforeArchiveDataForTargetTable += BeforeArchiveDataForTargetTableEventHandler; IConfigurationRepository configurationRepository = container.Resolve <IConfigurationRepository>(); IDeliveryEngineExecuteCommand command = new DeliveryEngineExecuteCommand { OverrideArchiveInformationPackageId = archiveInformationPackageId, ValidationOnly = ValidationOnly, TablesHandledSimultaneity = tablesHandledSimultaneity, RemoveMissingRelationshipsOnForeignKeys = removeMissingRelationshipsOnForeignKeys, NumberOfForeignTablesToCache = numberOfForeignTablesToCache, IncludeEmptyTables = includeEmptyTables ?? configurationRepository.IncludeEmptyTables }; deliveryEngine.Execute(command); } catch (Exception ex) { while (ex.InnerException != null) { ex = ex.InnerException; } Console.WriteLine(Resource.GetText(Text.ErrorMessage, ex.Message)); Console.WriteLine(); } }