예제 #1
0
        internal void InitializedPublisher_IsInCorrectState()
        {
            // Arrange
            // Act
            var publisher = new MockDataPublisher(
                this.container,
                DataBusFactory.Create(this.container),
                EncryptionSettings.None(),
                ZmqNetworkAddress.LocalHost(new Port(55555)));

            // Assert
            Assert.Equal(ComponentState.Initialized, publisher.ComponentState);
            Assert.Equal(0, publisher.SentCount);
        }
예제 #2
0
 public BarProviderTests(ITestOutputHelper output)
     : base(output)
 {
     // Fixture Setup
     this.container        = TestComponentryContainer.Create(output);
     this.messagingAdapter = new MockMessageBusProvider(this.container).Adapter;
     this.barSerializer    = new BarSerializer();
     this.repository       = new MockMarketDataRepository(
         this.container,
         new QuoteTickSerializer(),
         new TradeTickSerializer(),
         this.barSerializer,
         DataBusFactory.Create(this.container));
 }
        public RedisInstrumentRepositoryTests(ITestOutputHelper output)
        {
            // Fixture Setup
            var container = TestComponentryContainer.Create(output);

            this.redisConnection = ConnectionMultiplexer.Connect("localhost:6379,allowAdmin=true");
            this.redisConnection.GetServer(RedisConstants.Localhost, RedisConstants.DefaultPort).FlushAllDatabases();

            this.repository = new RedisInstrumentRepository(
                container,
                DataBusFactory.Create(container),
                new InstrumentSerializer(),
                this.redisConnection);
        }
예제 #4
0
        public RedisMarketDataRepositoryTests(ITestOutputHelper output)
        {
            // Fixture Setup
            var container = TestComponentryContainer.Create(output);

            this.redisConnection = ConnectionMultiplexer.Connect("localhost:6379,allowAdmin=true");
            this.repository      = new RedisMarketDataRepository(
                container,
                DataBusFactory.Create(container),
                this.redisConnection,
                1,
                new Dictionary <BarStructure, int> {
                { BarStructure.Minute, 1 }
            });

            this.redisConnection.GetServer(RedisConstants.Localhost, RedisConstants.DefaultPort).FlushAllDatabases();
        }
예제 #5
0
        public DataPublisherTests(ITestOutputHelper output)
            : base(output)
        {
            // Fixture Setup
            var container = TestComponentryContainer.Create(output);

            this.barSerializer        = new BarSerializer();
            this.instrumentSerializer = new InstrumentSerializer();

            this.publisher = new DataPublisher(
                container,
                DataBusFactory.Create(container),
                this.instrumentSerializer,
                new BypassCompressor(),
                EncryptionSettings.None(),
                new Port(55511));
        }
예제 #6
0
        public TickPublisherTests(ITestOutputHelper output)
            : base(output)
        {
            // Fixture Setup
            var container = TestComponentryContainer.Create(output);

            this.publisher = new TickPublisher(
                container,
                DataBusFactory.Create(container),
                new QuoteTickSerializer(),
                new TradeTickSerializer(),
                new BypassCompressor(),
                EncryptionSettings.None(),
                new Port(55606));

            this.publisher.Start().Wait();
        }
예제 #7
0
        internal void GivenMessageToPublish_WhenMessageValid_PublishesToSubscriber()
        {
            // Arrange
            var publisher = new MockDataPublisher(
                this.container,
                DataBusFactory.Create(this.container),
                EncryptionSettings.None(),
                ZmqNetworkAddress.LocalHost(new Port(55555)));

            publisher.Start().Wait();

            const string testAddress = "tcp://localhost:55555";
            var          subscriber  = new SubscriberSocket(testAddress);

            subscriber.Connect(testAddress);
            subscriber.Subscribe(TestTopic);

            Task.Delay(100).Wait(); // Allow sockets to subscribe

            // Act
            const string toSend = "1234,1234";

            publisher.Endpoint.SendAsync((TestTopic, toSend));

            var topic   = subscriber.ReceiveFrameBytes();
            var message = subscriber.ReceiveFrameBytes();

            // Assert
            Assert.Equal(TestTopic, Encoding.UTF8.GetString(topic));
            Assert.Equal(toSend, Encoding.UTF8.GetString(message));
            Assert.Equal(ComponentState.Running, publisher.ComponentState);
            Assert.Equal(1, publisher.SentCount);

            // Tear Down
            subscriber.Disconnect(testAddress);
            subscriber.Dispose();
            publisher.Stop().Wait();
            publisher.Dispose();
        }