예제 #1
0
 private SessionData(Guid sessionId)
 {
     _sessionId = sessionId;
     _messageFilter = new DuplicateQueryDetectionMessageFilter();
     // _notificationTimer = new DispatcherTimer(DispatcherPriority.Normal, Dispatcher.FromThread(Thread.CurrentThread)) {Interval = TimeSpan.FromMilliseconds(300)};
     // _notificationTimer.Tick += NotificationTimerOnTick;
 }
        public void DuplicateQueryDetectionMessageFilter_MergesEqualQueriesWithDuplicate_ToDuplicateQueryInstance() {
            // given
            IMessageFilter messageFilter = new DuplicateQueryDetectionMessageFilter();
            QueryMessage first = MakeDuplicateQueryMessage("SELECT 1", 4);
            QueryMessage second = MakeQueryMessage("SELECT 1");

            // when
            DuplicateQueryMessage output = (DuplicateQueryMessage) messageFilter.FilterTwo(first, second);

            // assert
            Assert.That(output.NumberOfQueries, Is.EqualTo(1 + 4));
        }
        public void DuplicateQueryDetectionMessageFilter_MergesNonEqualQueries_ToNullInstance() {
            // given
            IMessageFilter messageFilter = new DuplicateQueryDetectionMessageFilter();
            QueryMessage first = MakeQueryMessage("SELECT 2");
            QueryMessage second = MakeQueryMessage("SELECT 1");

            // when
            Message output = messageFilter.FilterTwo(first, second);

            // assert
            Assert.That(output, Is.Null, "Expected not to merge");
        }
        public void DuplicateQueryDetectionMessageFilter_GroupsAdjecentQueryMessages(QueryData queryData) {
            // given
            IMessageFilter messageFilter = new DuplicateQueryDetectionMessageFilter();

            // when
            Queue<Message> messages = new Queue<Message>(messageFilter.Filter(queryData.Messages));

            // then
            foreach (int msgCount in queryData.ReturnedMessages) {
                if (msgCount == Single) {
                    Message message = messages.Dequeue();

                    Assert.That(message, Is.Not.InstanceOf<DuplicateQueryMessage>(), "Expected a singular message to be returned");
                    continue;
                }

                // find group
                DuplicateQueryMessage groupMessage = (DuplicateQueryMessage)messages.Dequeue();

                // assert group size
                Assert.IsNotNull(groupMessage, "Cannot find grouped query - expected at least a group to be found of size "+msgCount);
                Assert.That(groupMessage.NumberOfQueries, Is.EqualTo(msgCount), "Incorrect query group message size");
            }
        }