// reproduces GH issue 3877
        public void ConfigurationForAddedSubscriptionIsAlwaysPresent()
        {
            var dataFeed    = new TestDataFeed();
            var dataManager = new DataManager(dataFeed,
                                              new UniverseSelection(_algorithm,
                                                                    _securityService),
                                              _algorithm,
                                              _algorithm.TimeKeeper,
                                              MarketHoursDatabase.AlwaysOpen,
                                              false,
                                              new RegisteredSecurityDataTypesProvider());

            var config = new SubscriptionDataConfig(typeof(TradeBar),
                                                    Symbols.SPY,
                                                    Resolution.Daily,
                                                    TimeZones.NewYork,
                                                    TimeZones.NewYork,
                                                    false,
                                                    false,
                                                    false);

            // Universe A: adds the config
            dataManager.SubscriptionManagerGetOrAdd(config);

            var request = new SubscriptionRequest(false,
                                                  null,
                                                  new Security(Symbols.SPY,
                                                               SecurityExchangeHours.AlwaysOpen(DateTimeZone.Utc),
                                                               new Cash(Currencies.USD, 1, 1),
                                                               SymbolProperties.GetDefault(Currencies.USD),
                                                               new IdentityCurrencyConverter(Currencies.USD),
                                                               new RegisteredSecurityDataTypesProvider(),
                                                               new SecurityCache()),
                                                  config,
                                                  new DateTime(2019, 1, 1),
                                                  new DateTime(2019, 1, 1));

            dataFeed.Subscription = new Subscription(request,
                                                     new EnqueueableEnumerator <SubscriptionData>(),
                                                     null);

            // Universe A: adds the subscription
            dataManager.AddSubscription(request);

            // Universe B: adds the config
            dataManager.SubscriptionManagerGetOrAdd(config);

            // Universe A: removes the subscription
            Assert.IsTrue(dataManager.RemoveSubscription(config));
            Assert.AreEqual(0, dataManager.GetSubscriptionDataConfigs(config.Symbol).Count);

            // Universe B: adds the subscription
            Assert.IsTrue(dataManager.AddSubscription(request));

            // the config should be present
            Assert.AreEqual(1, dataManager.GetSubscriptionDataConfigs(config.Symbol).Count);

            dataManager.RemoveAllSubscriptions();
        }
Ejemplo n.º 2
0
        public TanpActorSystem()
        {
            ActorSystem = ActorSystem.Create("TANP");

            // initialize structure
            IActorRef productManager = ActorSystem.ActorOf <ProductManagementActor>(ActorNames.ProductManager());
            IActorRef basketManager  = ActorSystem.ActorOf <ProductManagementActor>(ActorNames.BasketManager());

            // populate with hard coded test feed
            TestDataFeed.GetProducts().ForEach(m => productManager.Tell(m));
        }