/// <summary> /// Initializes a new instance of the <see cref="Feed"/> class /// </summary> /// <param name="config">A <see cref="IOddsFeedConfiguration"/> instance representing feed configuration</param> /// <param name="isReplay">Value indicating whether the constructed instance will be used to connect to replay server</param> protected Feed(IOddsFeedConfiguration config, bool isReplay) { Contract.Requires(config != null); LogInit(); var container = new UnityContainer(); container.EnableDebugDiagnostic(); container.RegisterBaseTypes(config); var internalConfig = container.Resolve <IOddsFeedConfigurationInternal>(); if (isReplay || internalConfig.Environment == SdkEnvironment.Replay) { internalConfig.EnableReplayServer(); } internalConfig.Load(); // loads bookmaker_details container.RegisterTypes(this); container.RegisterAdditionalTypes(); CurrentUnityContainer = container; EventRecoveryRequestIssuer = CurrentUnityContainer.Resolve <IEventRecoveryRequestIssuer>(); SportDataProvider = CurrentUnityContainer.Resolve <ISportDataProvider>(); CashOutProbabilitiesProvider = CurrentUnityContainer.Resolve <ICashOutProbabilitiesProvider>(); _feedRecoveryManager = CurrentUnityContainer.Resolve <IFeedRecoveryManager>(); _connectionValidator = CurrentUnityContainer.Resolve <ConnectionValidator>(); InternalConfig = CurrentUnityContainer.Resolve <IOddsFeedConfigurationInternal>(); BookingManager = CurrentUnityContainer.Resolve <IBookingManager>(); MarketDescriptionManager = CurrentUnityContainer.Resolve <IMarketDescriptionManager>(); BookmakerDetails = InternalConfig.BookmakerDetails; CustomBetManager = CurrentUnityContainer.Resolve <ICustomBetManager>(); try { ProducerManager = CurrentUnityContainer.Resolve <IProducerManager>(); if (isReplay || internalConfig.Environment == SdkEnvironment.Replay) { ((ProducerManager)ProducerManager).SetIgnoreRecovery(0); } } catch (Exception e) { Log.Error("Error getting available producers.", e); throw; } }
public static void Init(TestContext context) { IUnityContainer container = new UnityContainer().EnableDiagnostic(); var config = TestConfigurationInternal.GetConfig(); _dispatcher = new Mock <IGlobalEventDispatcher>().Object; container.RegisterBaseTypes(config, null, null); // we need to override initial loading of bookmaker details and producers var bookmakerDetailsProviderMock = new Mock <BookmakerDetailsProvider>("bookmakerDetailsUriFormat", new TestDataFetcher(), new Deserializer <bookmaker_details>(), new BookmakerDetailsMapperFactory()); bookmakerDetailsProviderMock.Setup(x => x.GetData(It.IsAny <string>())).Returns(TestConfigurationInternal.GetBookmakerDetails()); var defaultBookmakerDetailsProvider = bookmakerDetailsProviderMock.Object; container.RegisterInstance <IDataProvider <BookmakerDetailsDTO> >(defaultBookmakerDetailsProvider, new ContainerControlledLifetimeManager()); container.RegisterInstance <BookmakerDetailsProvider>(defaultBookmakerDetailsProvider, new ContainerControlledLifetimeManager()); //override container.RegisterType <IProducerManager, ProducerManager>( new ContainerControlledLifetimeManager(), new InjectionConstructor( new TestProducersProvider(), config)); container.RegisterTypes(_dispatcher, config); //var x = container.Registrations.Where(w => w.MappedToType == typeof(ProducerManager)); var newConfig = new OddsFeedConfigurationInternal(config, defaultBookmakerDetailsProvider); newConfig.Load(); container.RegisterInstance <IOddsFeedConfiguration>(newConfig, new ContainerControlledLifetimeManager()); container.RegisterInstance <IOddsFeedConfigurationInternal>(newConfig, new ContainerControlledLifetimeManager()); container.RegisterAdditionalTypes(); _childContainer1 = container.CreateChildContainer(); _childContainer2 = container.CreateChildContainer(); }