Пример #1
0
        public void RegisterRequiredServicesIfMissingAndUDPMessageHandler()
        {
            AggregateCatalog _catalog    = new AggregateCatalog(new AssemblyCatalog("UAOOI.Networking.UDPMessageHandler.dll"), new AssemblyCatalog("UAOOI.Networking.SimulatorInteroperabilityTest.dll"));
            AggregateCatalog _newCatalog = DefaultServiceRegistrar.RegisterServices(_catalog);
            int _disposingCount          = 0;

            using (CompositionContainer _container = new CompositionContainer(_newCatalog))
            {
                IServiceLocator _serviceLocator = new ServiceLocatorAdapter(_container);
                ServiceLocator.SetLocatorProvider(() => _serviceLocator);
                Assert.AreEqual <int>(14, _container.Catalog.Parts.Count <ComposablePartDefinition>());
                foreach (ComposablePartDefinition _part in _container.Catalog.Parts)
                {
                    Debug.WriteLine($"New Part: {string.Join(", ", _part.Metadata.Keys.ToArray<string>())}");
                    foreach (ImportDefinition _import in _part.ImportDefinitions)
                    {
                        Debug.WriteLine(string.Format("Imported contracts name => '{0}'", _import.ContractName));
                    }
                    foreach (ExportDefinition _export in _part.ExportDefinitions)
                    {
                        Debug.WriteLine(string.Format("Exported contracts name => '{0}'", _export.ContractName));
                    }
                }
                //UDPMessageHandler
                IMessageHandlerFactory _messageHandlerFactory = _container.GetExportedValue <IMessageHandlerFactory>();
                Assert.IsNotNull(_messageHandlerFactory);
                INetworkingEventSourceProvider _baseEventSource = _messageHandlerFactory as INetworkingEventSourceProvider;
                Assert.IsNull(_baseEventSource);
                IEnumerable <INetworkingEventSourceProvider> _diagnosticProviders = _container.GetExportedValues <INetworkingEventSourceProvider>();
                Assert.AreEqual <int>(4, _diagnosticProviders.Count <INetworkingEventSourceProvider>());
                // DataLogger
                EventSourceBootstrapper _eventSourceBootstrapper = _container.GetExportedValue <EventSourceBootstrapper>();
                LoggerManagementSetup   _logger = _container.GetExportedValue <LoggerManagementSetup>();
                _logger.DisposeCheck(x => _disposingCount++);
                Assert.IsNotNull(_logger.BindingFactory);
                Assert.IsNotNull(_logger.ConfigurationFactory);
                Assert.IsNotNull(_logger.EncodingFactory);
                Assert.IsNotNull(_logger.MessageHandlerFactory);
                SimulatorDataManagementSetup _simulator = _container.GetExportedValue <IDataRepositoryStartup>() as SimulatorDataManagementSetup;
                Assert.IsNotNull(_simulator);
                Assert.IsNotNull(_simulator.BindingFactory);
                Assert.IsNotNull(_simulator.ConfigurationFactory);
                Assert.IsNotNull(_simulator.EncodingFactory);
                Assert.IsNotNull(_simulator.MessageHandlerFactory);
                _simulator.DisposeCheck(x => _disposingCount++);
                Assert.AreEqual <int>(0, _disposingCount);
            }
            Assert.AreEqual <int>(2, _disposingCount);
        }
 protected override void OnInitialized()
 {
     try
     {
         base.OnInitialized();
         m_EventSourceBootstrapper = Container.GetExportedValue <EventSourceBootstrapper>();
         m_EventSourceBootstrapper.Run(EventEntry => m_Log.Add(EventEntry));
         ReferenceApplicationEventSource.Log.StartingApplication(Settings.Default.MessageHandlerProvider);
         LoggerManagementSetup m_ConsumerConfigurationFactory = Container.GetExportedValue <LoggerManagementSetup>();
         m_ConsumerConfigurationFactory.Setup();
         m_Components.Add(m_ConsumerConfigurationFactory);
         ReferenceApplicationEventSource.Log.PartCreated(nameof(LoggerManagementSetup));
         IProducerDataManagementSetup m_Producer = Container.GetExportedValue <IProducerDataManagementSetup>();
         m_Producer.Setup();
         m_Components.Add(m_Producer);
         ReferenceApplicationEventSource.Log.PartCreated(nameof(IProducerDataManagementSetup));
     }
     catch (Exception _ex)
     {
         ReferenceApplicationEventSource.Log.EnteringMethod(nameof(AppBootstrapper), $"{nameof(AppBootstrapper)} at catch (Exception _ex)");
         ReferenceApplicationEventSource.Log.LogException(_ex);
         throw;
     }
 }