コード例 #1
0
        public void NoMessageInterestTest()
        {
            var keys = FeedRoutingKeyBuilder.GenerateKeys(new List <MessageInterest>());

            Assert.IsNotNull(keys);
            Assert.IsTrue(keys.Any());
        }
コード例 #2
0
        /// <summary>
        /// Constructs and returns a <see cref="IEnumerable{String}"/> containing routing keys for the specified session
        /// </summary>
        /// <param name="session">The <see cref="OddsFeedSession"/> for which to get the routing keys</param>
        /// <returns>The <see cref="IEnumerable{String}"/> containing routing keys for the specified session</returns>
        private IEnumerable <string> GetSessionRoutingKeys(OddsFeedSession session)
        {
            var interests = Sessions.Select(s => ((OddsFeedSession)s).MessageInterest);
            var keys      = FeedRoutingKeyBuilder.GenerateKeys(interests, InternalConfig.NodeId).ToList();

            return(keys[Sessions.IndexOf(session)]);
        }
コード例 #3
0
        public void MessageReceivedEventIsRaisedForUnparsableRoutingKey()
        {
            _messageReceiver.Open(MessageInterest.AllMessages, FeedRoutingKeyBuilder.GetStandardKeys());
            var eventRaised = false;

            _messageReceiver.FeedMessageReceived += (sender, args) => { eventRaised = true; };
            _mock.Raise(mock => mock.Received    += null, new BasicDeliverEventArgs("", 1, false, ",", "routing_key", null, GetFileContent("odds_change.xml")));

            Assert.IsTrue(eventRaised, "eventRaised flag should be set to true");
        }
コード例 #4
0
        /// <summary>
        /// Opens the current instance
        /// </summary>
        /// <exception cref="InvalidOperationException">Current FeedSystemSession is already opened</exception>
        public void Open()
        {
            if (Interlocked.CompareExchange(ref _isOpened, 1, 0) == 1)
            {
                throw new InvalidOperationException("Current FeedSystemSession is already opened");
            }

            _messageReceiver.FeedMessageReceived += OnFeedMessageReceived;
            _messageReceiver.FeedMessageDeserializationFailed += OnFeedMessageDeserializationFailed;
            _messageReceiver.Open(null, FeedRoutingKeyBuilder.GetLiveKeys());
        }
コード例 #5
0
        public void NullOrEmptyDataDoesNotRaiseDeserializationFailedEvent()
        {
            _messageReceiver.Open(MessageInterest.AllMessages, FeedRoutingKeyBuilder.GetStandardKeys());

            var deserializationFailed = false;

            _messageReceiver.FeedMessageDeserializationFailed += (sender, args) => { deserializationFailed = true; };
            _mock.Raise(mock => mock.Received += null, new BasicDeliverEventArgs("", 1, false, ",", null, null, null));
            _mock.Raise(mock => mock.Received += null, new BasicDeliverEventArgs("", 1, false, ",", null, null, new byte[0]));

            Assert.IsFalse(deserializationFailed, "deserializationFailed should be false");
        }
コード例 #6
0
        public void CorrectDataIsPassedToDeserializationFailedEvent()
        {
            _messageReceiver.Open(MessageInterest.AllMessages, FeedRoutingKeyBuilder.GetStandardKeys());

            byte[] data        = null;
            var    messageData = new byte[] { 1, 2, 3, 4, 100, 99 };

            _messageReceiver.FeedMessageDeserializationFailed += (sender, args) => { data = args.RawData.ToArray(); };
            _mock.Raise(mock => mock.Received += null, new BasicDeliverEventArgs("", 1, false, ",", null, null, messageData));

            var areEqual = messageData.SequenceEqual(data);

            Assert.IsTrue(areEqual, "both arrays should be equal");
        }
コード例 #7
0
        public void MessageReceivedEventIsRaisedForOddsChange()
        {
            _messageReceiver.Open(MessageInterest.AllMessages, FeedRoutingKeyBuilder.GetStandardKeys());
            var         routingKey = "hi.-.live.odds_change.2.sr:match.9900415";
            FeedMessage message    = null;

            _messageReceiver.FeedMessageReceived += (sender, args) => { message = args.Message; };
            _mock.Raise(mock => mock.Received    += null, new BasicDeliverEventArgs("", 1, false, ",", routingKey, null, GetFileContent("odds_change.xml")));

            Assert.IsNotNull(message, "message should not be a null reference");
            var expectedSportId = URN.Parse("sr:sport:2");

            Assert.AreEqual(expectedSportId, message.SportId, $"SportId on the messages should be {expectedSportId}");
        }
コード例 #8
0
        public void SingleMessageInterestTest()
        {
            var interests = new List <MessageInterest> {
                MessageInterest.AllMessages
            };
            var keys = FeedRoutingKeyBuilder.GenerateKeys(interests);

            Assert.IsNotNull(keys);
            Assert.IsTrue(keys.Any());

            interests = new List <MessageInterest> {
                MessageInterest.PrematchMessagesOnly
            };
            keys = FeedRoutingKeyBuilder.GenerateKeys(interests);
            Assert.IsNotNull(keys);
            Assert.IsTrue(keys.Any());

            interests = new List <MessageInterest> {
                MessageInterest.LiveMessagesOnly
            };
            keys = FeedRoutingKeyBuilder.GenerateKeys(interests);
            Assert.IsNotNull(keys);
            Assert.IsTrue(keys.Any());

            interests = new List <MessageInterest> {
                MessageInterest.HighPriorityMessages
            };
            keys = FeedRoutingKeyBuilder.GenerateKeys(interests);
            Assert.IsNotNull(keys);
            Assert.IsTrue(keys.Any());

            interests = new List <MessageInterest> {
                MessageInterest.LowPriorityMessages
            };
            keys = FeedRoutingKeyBuilder.GenerateKeys(interests);
            Assert.IsNotNull(keys);
            Assert.IsTrue(keys.Any());

            interests = new List <MessageInterest> {
                MessageInterest.VirtualSportMessages
            };
            keys = FeedRoutingKeyBuilder.GenerateKeys(interests);
            Assert.IsNotNull(keys);
            Assert.IsTrue(keys.Any());
        }
コード例 #9
0
        public void EventsAreRaisedWhenTheReceiverIsOpened()
        {
            _messageReceiver.Open(MessageInterest.AllMessages, FeedRoutingKeyBuilder.GetStandardKeys());

            var messageReceived       = false;
            var deserializationFailed = false;

            var messageData = GetFileContent("odds_change.xml");

            _messageReceiver.FeedMessageReceived += (sender, args) => { messageReceived = true; };
            _messageReceiver.FeedMessageDeserializationFailed += (sender, args) => { deserializationFailed = true; };

            _mock.Raise(mock => mock.Received += null, new BasicDeliverEventArgs("", 1, false, ",", null, null, messageData));
            _mock.Raise(mock => mock.Received += null, new BasicDeliverEventArgs("", 1, false, ",", null, null, new [] { (byte)1 }));

            Assert.IsTrue(messageReceived, "messageReceived should be true");
            Assert.IsTrue(deserializationFailed, "deserializationFailed should be true");
        }
コード例 #10
0
 public void EventsAreNotRaisedAfterTheReceiverIsClosed()
 {
     _messageReceiver.Open(MessageInterest.AllMessages, FeedRoutingKeyBuilder.GetStandardKeys());
     _messageReceiver.Close();
     EventsAreNotRaisedBeforeTheReceiverIsOpened();
 }