示例#1
0
 public ScheduleSettingsCacheService(
     ICqrsSender cqrsSender,
     IScheduleSettingsApi scheduleSettingsApi,
     IAssetPairsCache assetPairsCache,
     IDateService dateService,
     ILog log,
     OvernightMarginSettings overnightMarginSettings)
 {
     _cqrsSender          = cqrsSender;
     _scheduleSettingsApi = scheduleSettingsApi;
     _assetPairsCache     = assetPairsCache;
     _dateService         = dateService;
     _log = log;
     _overnightMarginSettings = overnightMarginSettings;
 }
示例#2
0
 public OvernightMarginService(
     IDateService dateService,
     ITradingEngine tradingEngine,
     IAccountsCacheService accountsCacheService,
     IAccountUpdateService accountUpdateService,
     IScheduleSettingsCacheService scheduleSettingsCacheService,
     IOvernightMarginParameterContainer overnightMarginParameterContainer,
     ILog log,
     IEventChannel <MarginCallEventArgs> marginCallEventChannel,
     OvernightMarginSettings overnightMarginSettings)
 {
     _dateService                       = dateService;
     _tradingEngine                     = tradingEngine;
     _accountsCacheService              = accountsCacheService;
     _accountUpdateService              = accountUpdateService;
     _scheduleSettingsCacheService      = scheduleSettingsCacheService;
     _overnightMarginParameterContainer = overnightMarginParameterContainer;
     _log = log;
     _marginCallEventChannel  = marginCallEventChannel;
     _overnightMarginSettings = overnightMarginSettings;
 }
示例#3
0
        private void RegisterDependenciesCore(bool mockEvents = false)
        {
            var builder = new ContainerBuilder();

            var overnightMarginSettings = new OvernightMarginSettings();
            var marginSettings          = new MarginTradingSettings
            {
                RabbitMqQueues =
                    new RabbitMqQueues
                {
                    MarginTradingEnabledChanged = new RabbitMqQueueInfo {
                        ExchangeName = ""
                    }
                },
                BlobPersistence = new BlobPersistenceSettings()
                {
                    FxRatesDumpPeriodMilliseconds    = 10000,
                    QuotesDumpPeriodMilliseconds     = 10000,
                    OrderbooksDumpPeriodMilliseconds = 5000,
                    OrdersDumpPeriodMilliseconds     = 5000
                },
                ReportingEquivalentPricesSettings = new[]
                { new ReportingEquivalentPricesSettings {
                      EquivalentAsset = "USD", LegalEntity = "LYKKETEST"
                  } },
                OvernightMargin = overnightMarginSettings,
            };

            builder.RegisterInstance(marginSettings).SingleInstance();
            builder.RegisterInstance(PositionHistoryEvents).As <List <PositionHistoryEvent> >().SingleInstance();
            builder.RegisterInstance(overnightMarginSettings).SingleInstance();
            builder.RegisterInstance(Mock.Of <ExchangeConnectorServiceClient>());
            builder.RegisterInstance(new RiskInformingSettings
            {
                Data = new[]
                {
                    new RiskInformingParams
                    {
                        EventTypeCode = "BE01",
                        Level         = "None",
                        System        = "QuotesMonitor",
                    },
                    new RiskInformingParams
                    {
                        EventTypeCode = "BE02",
                        Level         = "None",
                        System        = "QuotesMonitor",
                    }
                }
            }).SingleInstance();

            builder.RegisterModule(new MockBaseServicesModule());
            builder.RegisterModule(new MockRepositoriesModule());

            var brokerId = Guid.NewGuid().ToString();

            builder.RegisterModule(new MockExternalServicesModule(Accounts, brokerId));

            if (mockEvents)
            {
                builder.RegisterModule(new MockEventModule());
            }
            else
            {
                builder.RegisterModule(new EventModule());
            }

            builder.RegisterModule(new CacheModule());
            builder.RegisterModule(new ServicesModule());
            builder.RegisterModule(new ManagersModule());

            builder.RegisterType <EventChannel <AccountBalanceChangedEventArgs> >()
            .As <IEventChannel <AccountBalanceChangedEventArgs> >()
            .SingleInstance();

            var clientProfileSettingsCacheMock        = new Mock <IClientProfileSettingsCache>();
            var outClientProfileSettingsContractDummy = new ClientProfileSettingsContract();

            clientProfileSettingsCacheMock.Setup(s =>
                                                 s.TryGetValue(It.IsAny <string>(), It.IsAny <string>(), out outClientProfileSettingsContractDummy))
            .Returns(true);
            builder.RegisterInstance(clientProfileSettingsCacheMock.Object)
            .As <IClientProfileSettingsCache>()
            .SingleInstance();

            var settingsServiceMock = new Mock <IMarginTradingSettingsCacheService>();

            settingsServiceMock.Setup(s => s.IsMarginTradingEnabled(It.IsAny <string>()))
            .ReturnsAsync(new EnabledMarginTradingTypes {
                Live = true, Demo = true
            });
            settingsServiceMock.Setup(s => s.IsMarginTradingEnabled(It.IsAny <string>(), It.IsAny <bool>()))
            .ReturnsAsync(true);

            builder.RegisterInstance(settingsServiceMock.Object)
            .As <IMarginTradingSettingsCacheService>()
            .SingleInstance();

            var clientAccountClientMock = new Mock <IClientAccountClient>();

            clientAccountClientMock.Setup(s => s.CreateWalletAsync(It.IsAny <string>(), It.IsAny <WalletType>(),
                                                                   It.IsAny <OwnerType>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns((string clientId, WalletType walletType, OwnerType owner,
                      string name, string description) => Task.FromResult(
                         new WalletDtoModel
            {
                Id          = Guid.NewGuid().ToString(),
                Name        = name,
                Type        = walletType.ToString(),
                Description = description,
                ClientId    = clientId,
            }));
            clientAccountClientMock.Setup(s => s.GetByIdAsync(It.IsAny <string>()))
            .ReturnsAsync(() =>
                          new ClientModel {
                Email = "*****@*****.**", NotificationsId = Guid.NewGuid().ToString()
            });
            clientAccountClientMock.Setup(s => s.GetPushNotificationAsync(It.IsAny <string>()))
            .ReturnsAsync(() => new PushNotificationsSettingsModel {
                Enabled = true
            });

            builder.RegisterInstance(clientAccountClientMock.Object)
            .As <IClientAccountClient>()
            .SingleInstance();

            builder.RegisterInstance(new Mock <IOperationsLogService>().Object)
            .As <IOperationsLogService>()
            .SingleInstance();

            builder.RegisterType <ConvertService>().As <IConvertService>().SingleInstance();

            var scheduleSettingsApiMock = new Mock <IScheduleSettingsApi>();

            scheduleSettingsApiMock.Setup(m => m.StateList(It.IsAny <string[]>()))
            .ReturnsAsync(new List <CompiledScheduleContract>());
            scheduleSettingsApiMock.Setup(m => m.List(It.IsAny <string>()))
            .ReturnsAsync(new List <ScheduleSettingsContract>()
            {
                AlwaysOnMarketSchedule
            });
            builder.RegisterInstance(scheduleSettingsApiMock.Object).As <IScheduleSettingsApi>();

            var exchangeConnector = Mock.Of <IExchangeConnectorClient>();

            builder.RegisterInstance(exchangeConnector).As <IExchangeConnectorClient>();
            builder.RegisterInstance(new Mock <IMtSlackNotificationsSender>(MockBehavior.Loose).Object).SingleInstance();
            builder.RegisterInstance(Mock.Of <IRabbitMqService>()).As <IRabbitMqService>();

            builder.RegisterBuildCallback(c =>
            {
                void StartService <T>() where T: IStartable
                {
                    c.Resolve <T>().Start();
                }

                ContainerProvider.Container = c;

                // note the order here is important!
                StartService <TradingInstrumentsManager>();
                StartService <AccountManager>();
                StartService <OrderCacheManager>();
                StartService <PendingOrdersCleaningService>();
                StartService <QuoteCacheService>();
                StartService <FxRateCacheService>();
            });

            builder.RegisterType <SimpleIdentityGenerator>().As <IIdentityGenerator>();
            Container = builder.Build();

            Container.Resolve <OrderBookList>().Init(null);
            Container.Resolve <IScheduleSettingsCacheService>().UpdateAllSettingsAsync().GetAwaiter().GetResult();
        }