Example #1
0
        public void TestServerSubscribe()
        {
            var config = new AppConfiguration {
                MarketDataBrokerUrl = BrokerFactoryTest.Nyws802
            };

            var             server             = new ActiveMQRtdServer(config);
            IRTDUpdateEvent updateEventHandler = new TestEventHandler();
            var             startResult        = server.ServerStart(updateEventHandler);

            Assert.AreEqual(1, startResult);
            Assert.AreEqual(1, server.Heartbeat());

            // Use the default broker
            var   newValues  = false;
            Array parameters = new[] { "Test.Topic", "FieldName1" };

            Assert.AreEqual("N/A", server.ConnectData(1, ref parameters, ref newValues));
            Assert.IsTrue(newValues);
            Assert.AreEqual(1, server.TopicCount);
            Assert.AreEqual(1, server.FieldCount);

            var testBroker = BrokerFactory.Broker(BrokerFactoryTest.Nyws802);
            //PublishTestMessage(testBroker, "Test.Topic", "FieldName", "FieldValue");
            var multiFieldRecord = new Dictionary <string, string> {
                { "FieldName1", "FieldValue1" },
                { "FieldName2", "FieldValue2" }
            };

            PublishTestMessage(testBroker, "Test.Topic", multiFieldRecord);

            Thread.Sleep(1000);
            Assert.AreEqual("FieldValue1", server.ConnectData(2, ref parameters, ref newValues));
            Assert.AreEqual(2, server.TopicCount);
            Assert.AreEqual(1, server.FieldCount);

            // subscribe to field already in the message/cache
            parameters = new[] { "Test.Topic", "FieldName2" };
            Assert.AreEqual("FieldValue2", server.ConnectData(3, ref parameters, ref newValues));
            Assert.AreEqual(3, server.TopicCount);
            Assert.AreEqual(2, server.FieldCount);
            server.DisconnectData(3);
            Assert.AreEqual(2, server.TopicCount);
            Assert.AreEqual(1, server.FieldCount);

            var topicCount    = 0;
            var updatedTopics = server.RefreshData(ref topicCount);

            Assert.AreEqual(1, topicCount);
            Assert.IsNotNull(updatedTopics);

            // Publish again to ensure we get both updates
            Console.WriteLine("Publish second message, when we have two Excel topics");
            PublishTestMessage(testBroker, "Test.Topic", "FieldName1", "FieldValue1");
            Thread.Sleep(1000);

            Console.WriteLine("Calling Refresh");
            updatedTopics = server.RefreshData(ref topicCount);
            Assert.AreEqual(2, topicCount);
            Assert.IsNotNull(updatedTopics);

            server.DisconnectData(1);
            Assert.AreEqual(1, server.TopicCount);
            Assert.AreEqual(1, server.FieldCount);
            server.DisconnectData(2);
            Assert.AreEqual(0, server.TopicCount);
            Assert.AreEqual(0, server.FieldCount);

            // Check constant lookups
            var   newValues2  = false;
            Array parameters2 = new[] { "Test.Topic", "brokerUrl" };

            Assert.AreEqual(BrokerFactoryTest.Nyws802, server.ConnectData(10, ref parameters2, ref newValues2));

            parameters2 = new[] { "Test.Topic", "productVersion" };
            var productVersion = server.ConnectData(11, ref parameters2, ref newValues2);

            Assert.IsNotNull(productVersion);
            Assert.AreNotEqual("#Error", productVersion);
            Console.WriteLine(productVersion);
        }
Example #2
0
        public void TestServerFrequency()
        {
            var             server             = new NowRtdServer();
            IRTDUpdateEvent updateEventHandler = new TestEventHandler();
            var             startResult        = server.ServerStart(updateEventHandler);

            Assert.AreEqual(1, startResult);
            Assert.AreEqual(1, server.Heartbeat());
            Assert.AreEqual(0, server.TimerCount);

            var   newValues  = false;
            Array parameters = new[] { "FRQ:1S" };

            var connectResult = server.ConnectData(1, ref parameters, ref newValues);

            Assert.IsNotNull(connectResult);
            Assert.AreEqual(1, server.TimerCount);

            var topicCount = 0;
            var topicData  = server.RefreshData(ref topicCount);

            Assert.AreEqual(0, topicCount);
            Assert.IsNotNull(topicData);
            Assert.AreEqual(1, topicData.GetUpperBound(0));
            Assert.AreEqual(-1, topicData.GetUpperBound(1));
            Assert.AreEqual(2, topicData.Rank);
            // We are testing the 1 second timer, wait that long
            Thread.Sleep(1 * 1500);

            topicData = server.RefreshData(ref topicCount);
            Assert.AreEqual(1, topicCount);
            Assert.IsNotNull(topicData);
            Assert.AreEqual(1, topicData.GetUpperBound(0));
            Assert.AreEqual(0, topicData.GetUpperBound(1));
            Assert.AreEqual(2, topicData.Rank);
            Assert.AreEqual(topicData.GetValue(0, 0), 1);
            Assert.IsNotNull(topicData.GetValue(1, 0));

            // Add another topic with the same pattern
            Assert.IsNotNull(server.ConnectData(2, ref parameters, ref newValues));
            Assert.AreEqual(1, server.TimerCount);

            // Add another topic with a different pattern
            Array parameters2 = new[] { "FRQ:1M" };

            Assert.IsNotNull(server.ConnectData(3, ref parameters2, ref newValues));
            Assert.AreEqual(2, server.TimerCount);

            // Remove single topic pattern
            server.DisconnectData(3);
            Assert.AreEqual(1, server.TimerCount);

            // Remove duplicate topic pattern
            server.DisconnectData(1);
            Assert.AreEqual(1, server.TimerCount);
            // Remove last topic
            server.DisconnectData(2);
            Assert.AreEqual(0, server.TimerCount);

            server.ServerTerminate();
        }