public void TestSetSymbols() { TestListener listener = new TestListener(eventsTimeout, eventsSleepTime, IsConnected); EventType events = EventType.Order; using (var con = new NativeConnection(address, OnDisconnect)) { Interlocked.Exchange(ref isConnected, 1); using (IDxSubscription s = con.CreateSubscription(events, listener)) { s.AddSymbols("AAPL", "IBM"); listener.WaitEvents <IDxOrder>("AAPL", "IBM"); s.SetSymbols("XBT/USD"); listener.ClearEvents <IDxOrder>(); Thread.Sleep(10000); listener.WaitEvents <IDxOrder>("XBT/USD"); Assert.GreaterOrEqual(listener.GetEventCount <IDxOrder>("XBT/USD"), 1); Assert.AreEqual(0, listener.GetEventCount <IDxOrder>("AAPL", "IBM")); // add another symbols s.AddSymbols("AAPL", "IBM"); listener.WaitEvents <IDxOrder>("XBT/USD", "AAPL", "IBM"); } } }
public void TestClearSymbols() { TestListener listener = new TestListener(eventsTimeout, eventsSleepTime, IsConnected); string candleSymbolString = "XBT/USD{=d}"; string aaplSymbolString = "AAPL{=d,price=mark}"; using (var con = new NativeConnection(address, OnDisconnect)) { Interlocked.Exchange(ref isConnected, 1); using (IDxSubscription s = con.CreateSubscription(defaultDateTime, listener)) { s.AddSymbol(CandleSymbol.ValueOf(candleSymbolString)); listener.WaitEvents <IDxCandle>(candleSymbolString); s.Clear(); listener.ClearEvents <IDxCandle>(); Thread.Sleep(10000); Assert.AreEqual(0, listener.GetEventCount <IDxCandle>()); //try to restore symbols s.AddSymbol(CandleSymbol.ValueOf(candleSymbolString)); listener.WaitEvents <IDxCandle>(candleSymbolString); //set other symbol s.Clear(); listener.ClearEvents <IDxCandle>(); s.AddSymbol(CandleSymbol.ValueOf(aaplSymbolString)); listener.WaitEvents <IDxCandle>(aaplSymbolString); Assert.AreEqual(listener.GetEventCount <IDxCandle>(), listener.GetEventCount <IDxCandle>(aaplSymbolString)); } } }
public void CreateSubscriptionTypesTest() { //create default endpoint DXEndpoint.Create(); //try to create subscription with invalid event types parameters //all attempts to create subscription in this block must be failed with exception Assert.Catch(typeof(ArgumentException), () => { DXFeed.GetInstance().CreateSubscription <IDxOrder>(typeof(IDxCandle), typeof(IDxQuote)); }); Assert.Catch(typeof(ArgumentException), () => { DXFeed.GetInstance().CreateSubscription <IDxIndexedEvent>(typeof(IDxCandle), typeof(IDxQuote)); }); Assert.Catch(typeof(ArgumentException), () => { DXFeed.GetInstance().CreateSubscription <IDxLastingEvent>(typeof(IDxOrder), typeof(IDxQuote)); }); Assert.Catch(typeof(ArgumentException), () => { DXFeed.GetInstance().CreateSubscription <IDxMarketEvent>(typeof(IDxCandle)); }); Assert.Catch(typeof(ArgumentException), () => { DXFeed.GetInstance().CreateSubscription <IDxMarketEvent>(typeof(string)); }); var symbol = "SYMA"; var s = DXFeed.GetInstance().CreateSubscription <IDxEventType>(typeof(IDxOrder), typeof(IDxTrade)); s.AddSymbols(symbol); TestListener eventListener = new TestListener(); s.AddEventListener(eventListener); EventPlayer <IDxEventType> eventPlayer = new EventPlayer <IDxEventType>(s as DXFeedSubscription <IDxEventType>); var playedOrder = new PlayedOrder(symbol, 0, 0x4e54560000000006, 0, 0, 0, 0, 100, 25, Scope.Order, Side.Buy, 'A', OrderSource.NTV, "AAAA"); eventPlayer.PlayEvents(symbol, playedOrder); var playedTrade = new PlayedTrade(symbol, 0, 0, 0, 'B', 123.456, 100, 123, 1.1, 0, 2.2, 0.0, Direction.Undefined, false, Scope.Regional); eventPlayer.PlayEvents(symbol, playedTrade); Assert.AreEqual(eventListener.GetEventCount <IDxOrder>(symbol), 1); Assert.AreEqual(eventListener.GetEventCount <IDxTrade>(symbol), 1); //thread-safety case DXEndpoint.Create(); Parallel.For(ParallelFrom, ParallelTo, i => { Assert.DoesNotThrow(() => { DXFeed.GetInstance().CreateSubscription <IDxEventType>(typeof(IDxOrder), typeof(IDxTrade)); }); }); }
public void CreateTimeSeriesSubscriptionTypesTest() { //create default endpoint DXEndpoint.Create(); //try to create subscription with invalid event types parameters //all attempts to create subscription in this block must be failed with exception Assert.Catch(typeof(ArgumentException), () => { DXFeed.GetInstance().CreateTimeSeriesSubscription <IDxTimeSeriesEvent>(typeof(IDxCandle), typeof(IDxQuote)); }); Assert.Catch(typeof(ArgumentException), () => { DXFeed.GetInstance().CreateTimeSeriesSubscription <IDxTimeSeriesEvent>(typeof(IDxOrder), typeof(IDxQuote)); }); Assert.Catch(typeof(ArgumentException), () => { DXFeed.GetInstance().CreateTimeSeriesSubscription <IDxTimeSeriesEvent>(typeof(string)); }); var symbol = "SYMA"; var s = DXFeed.GetInstance().CreateTimeSeriesSubscription <IDxTimeSeriesEvent>(typeof(IDxCandle), typeof(IDxGreeks)); s.AddSymbols(symbol); TestListener eventListener = new TestListener(); s.AddEventListener(eventListener); EventPlayer <IDxTimeSeriesEvent> eventPlayer = new EventPlayer <IDxTimeSeriesEvent>(s as DXFeedSubscription <IDxTimeSeriesEvent>); var playedCandle = new PlayedCandle(symbol, Tools.DateToUnixTime(DateTime.Now), 123, 100, 12.34, 56.78, 9.0, 43.21, 1000, 999, 1001, 1002, 1, 777, 888, EventFlag.RemoveSymbol); eventPlayer.PlayEvents(symbol, playedCandle); var playedGreeks = new PlayedGreeks(symbol, EventFlag.RemoveSymbol, 1, Tools.DateToUnixTime(DateTime.Now), 456.789, 11, 555, 666, 777, 888, 999); eventPlayer.PlayEvents(symbol, playedGreeks); Assert.AreEqual(eventListener.GetEventCount <IDxCandle>(symbol), 1); Assert.AreEqual(eventListener.GetEventCount <IDxGreeks>(symbol), 1); //thread-safety case DXEndpoint.Create(); Parallel.For(ParallelFrom, ParallelTo, i => { Assert.DoesNotThrow(() => { DXFeed.GetInstance().CreateTimeSeriesSubscription <IDxTimeSeriesEvent>(typeof(IDxCandle), typeof(IDxGreeks)); }); }); }
public void CreateTimeSeriesSubscriptionTest() { var symbol = "SYMA"; var s = DXEndpoint.Create().Feed.CreateTimeSeriesSubscription <IDxCandle>(); s.AddSymbols(symbol); TestListener eventListener = new TestListener(); s.AddEventListener(eventListener); var playedCandle = new PlayedCandle(symbol, Tools.DateToUnixTime(DateTime.Now), 123, 100, 12.34, 56.78, 9.0, 43.21, 1000, 999, 1001, 1002, 1, 777, 888, EventFlag.RemoveSymbol); EventPlayer <IDxCandle> eventPlayer = new EventPlayer <IDxCandle>(s as DXFeedSubscription <IDxCandle>); eventPlayer.PlayEvents(symbol, playedCandle); Assert.AreEqual(eventListener.GetEventCount <IDxCandle>(symbol), 1); IDxCandle receivedCandle = eventListener.GetLastEvent <IDxCandle>().Event; Assert.AreEqual(symbol, receivedCandle.EventSymbol.ToString()); CompareCandles(playedCandle, receivedCandle); //thread-safety case DXEndpoint.Create(); Parallel.For(ParallelFrom, ParallelTo, i => { Assert.DoesNotThrow(() => { DXEndpoint.GetInstance().Feed.CreateTimeSeriesSubscription <IDxCandle>(); }); }); }
private void PrintEvents <TE>(TestListener listener, params string[] symbols) { Console.WriteLine(string.Format("Event {0}: Total data count: {1}", typeof(TE), listener.GetEventCount <TE>())); foreach (string symbol in symbols) { Console.WriteLine(" symbol {0}: data count: {1}", symbol, listener.GetEventCount <TE>(symbol)); } }
public void CreateSubscriptionTest() { var symbol = "SYMA"; var s = DXEndpoint.Create().Feed.CreateSubscription <IDxOrder>(); s.AddSymbols(symbol); TestListener eventListener = new TestListener(); s.AddEventListener(eventListener); var playedOrder = new PlayedOrder(symbol, 0, 0x4e54560000000006, 0, 0, 0, 0, 100, 25, Scope.Order, Side.Buy, 'A', OrderSource.NTV, "AAAA"); EventPlayer <IDxOrder> eventPlayer = new EventPlayer <IDxOrder>(s as DXFeedSubscription <IDxOrder>); eventPlayer.PlayEvents(symbol, playedOrder); Assert.AreEqual(eventListener.GetEventCount <IDxOrder>(symbol), 1); IDxOrder receivedOrder = eventListener.GetLastEvent <IDxOrder>().Event; Assert.AreEqual(symbol, receivedOrder.EventSymbol); CompareOrders(playedOrder, receivedOrder); //try to create subscription on closed endpoint DXEndpoint.GetInstance().Close(); Assert.Catch(typeof(InvalidOperationException), () => { DXFeed.GetInstance().CreateSubscription <IDxOrder>(); }); //thread-safety case DXEndpoint.Create(); Parallel.For(ParallelFrom, ParallelTo, i => { Assert.DoesNotThrow(() => { DXFeed.GetInstance().CreateSubscription <IDxOrder>(); }); }); }
public void ResetFromTimeStampTest() { string symbol = "SYMA"; TestListener eventListener = new TestListener(); var s = DXEndpoint.Create().Feed.CreateTimeSeriesSubscription <IDxCandle>(); s.OnSubscriptionClosed += OnSubscriptionClosed; s.OnSymbolsAdded += OnSymbolsAdded; s.OnSymbolsRemoved += OnSymbolsRemoved; s.AddEventListener(eventListener); s.AddSymbols(symbol); Assert.AreEqual(long.MaxValue, s.FromTimeStamp); //try to change FromTimeStamp property isFiresOnSubscriptionClosed = false; isFiresOnSymbolsAdded = false; isFiresOnSymbolsRemoved = false; long fromTime = Tools.DateToUnixTime(DateTime.Now.AddMonths(-1)); s.FromTimeStamp = fromTime; Assert.AreEqual(fromTime, s.FromTimeStamp); Assert.True(s.GetSymbols().SetEquals(new object[] { symbol })); Assert.True(s.EventTypes.SetEquals(new Type[] { typeof(IDxCandle) })); Assert.False(isFiresOnSubscriptionClosed); Assert.False(isFiresOnSymbolsAdded); Assert.False(isFiresOnSymbolsRemoved); var playedCandle = new PlayedCandle(symbol, Tools.DateToUnixTime(DateTime.Now), 123, 100, 12.34, 56.78, 9.0, 43.21, 1000, 999, 1001, 1002, 1, 777, 888, EventFlag.RemoveSymbol); EventPlayer <IDxCandle> eventPlayer = new EventPlayer <IDxCandle>(s as DXFeedSubscription <IDxCandle>); eventPlayer.PlayEvents(symbol, playedCandle); Assert.AreEqual(eventListener.GetEventCount <IDxCandle>(symbol), 1); IDxCandle receivedCandle = eventListener.GetLastEvent <IDxCandle>().Event; Assert.AreEqual(symbol, receivedCandle.EventSymbol.ToString()); DXFeedTest.CompareCandles(playedCandle, receivedCandle); }