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); }
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(); }