Esempio n. 1
0
        public void LoadTest()
        {
            const string app1 = "app1";
            const string app2 = "app2";
            const string userParam = "user";
            const string user1 = "*****@*****.**";
            const string user2 = "*****@*****.**";

            var message1 = new EAEPMessage("host1", app1, "purchase");
            message1[userParam] = user2;
            var message2 = new EAEPMessage("host1", app2, "login");
            message2[userParam] = user1;
            var message3 = new EAEPMessage("host1", app1, "purchase");
            message3[userParam] = user1;
            var message4 = new EAEPMessage("host1", app2, "purchase");
            message4[userParam] = user2;

            var expected = new EAEPMessages {message1, message2, message3, message4};

            var actual = new EAEPMessages();
            actual.Load(expected.ToString());

            Assert.AreEqual(expected.Count, actual.Count);
            for (var i = 0; i < expected.Count; i++)
            {
                Assert.AreEqual(expected[i], actual[i]);
            }
        }
Esempio n. 2
0
 public override void ProcessRequest(IServiceRequest request, IServiceResponse response, IResourceRepository resourceRepository)
 {
     EAEPMessages messages = new EAEPMessages(request.Body);
     monitorStore.PushMessages(messages);
     response.StatusCode = Constants.HTTP_200_OK;
     response.StatusDescription = "OK";
 }
Esempio n. 3
0
        public void CountTest()
        {
            // Arrange
            var expected = new[] { 1, 2, 0, 1 };

            const string app1 = "app1";
            const string app2 = "app2";

            var messages = new EAEPMessages
                           {
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 5, 0), "host1", app1, "purchase"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 10, 0), "host1", app2, "purchase"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 17, 0), "host1", app1, "purchase"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 18, 0), "host1", app2, "purchase"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 22, 0), "host1", app1, "purchase"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 36, 0), "host1", app2, "purchase"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 51, 0), "host1", app1, "purchase"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 55, 0), "host1", app2, "purchase")
                           };

            using (var monitorStore = new SQLMonitorStore(Configuration.MonitorStoreConnectionString))
            {
                foreach (var message in messages)
                {
                    monitorStore.PushMessage(message);
                }

                var target = new Aggregator(monitorStore);

            // Act
                var actual = target.Count(
                    string.Format("{0}:{1} AND {2}:{3}", EAEPMessage.FIELD_APPLICATION, app1, EAEPMessage.FIELD_EVENT, "purchase"),
                    new DateTime(2009, 9, 17, 12, 0, 0),
                    new DateTime(2009, 9, 17, 13, 0, 0),
                    4);

            // Assert
                Assert.AreEqual(expected.Length, actual.Length);

                for (var i = 0; i < expected.Length; i++)
                {
                    Assert.AreEqual(expected[i], actual[i]);
                }

            }
        }
Esempio n. 4
0
        public void ProcessRequestTest()
        {
            // Arrange

            EAEPMessages messages = new EAEPMessages();
            messages.Add(new EAEPMessage("host01", "app01", "DoneSomething"));
            messages.Add(new EAEPMessage("host01", "app02", "DoneSomething"));
            messages.Add(new EAEPMessage("host01", "app01", "DoneSomethingElse"));

            string query = "hello";
            string expectedContent = JsonConvert.SerializeObject(messages);

            var monitor = new Mock<IEAEPMonitorStore>();
            monitor
                .Setup(x => x.GetMessages(query))
                .Returns(messages)
                .Verifiable();

            var request = new Mock<IServiceRequest>();
            request
                .SetupGet(x => x.Query)
                .Returns(query);

            var response = new Mock<IServiceResponse>();
            MemoryStream contentStream = new MemoryStream();
            response
                .SetupGet(x => x.ContentStream)
                .Returns(contentStream);

            response
                .SetupProperty(x => x.ContentType);

            SearchService target = new SearchService(monitor.Object);

            // Act
            target.ProcessRequest(request.Object, response.Object, null);

            // Assert
            Assert.AreEqual("application/json", response.Object.ContentType);

            string actualContent = Encoding.UTF8.GetString(contentStream.ToArray());

            Assert.AreEqual(expectedContent, actualContent);
        }
Esempio n. 5
0
        protected override void InternalWriteContent(StreamWriter writer, IServiceRequest request, IServiceResponse response, IResourceRepository resourceRepository)
        {
            resourceRepository.WriteResource("header.htm", writer);

            bool activeSearch = (request.Query != null);

            try
            {

                EAEPMessages messages = new EAEPMessages();
                string searchResultText = string.Empty;

                if (activeSearch)
                {
                    messages = monitor.GetMessages(request.Query);

                    searchResultText = string.Format("{0} message(s) found", messages.Count);
                }

                WriteSearchResultHeader(writer, request, resourceRepository, searchResultText);

                int maxItems = 100;
                if (maxItems > messages.Count) { maxItems = messages.Count; }

                string messageTemplate = resourceRepository.GetResourceAsString("eaepmsg.htm");

                for (int i = 0; i < maxItems; i++)
                {
                    WriteResultItem(writer, messageTemplate, messages[i]);
                }
            }
            catch (Exception ex)
            {
                writer.WriteLine(ReplaceCRLFwithHTMLLineBreaks(ex.ToString()));
            }

            resourceRepository.WriteResource("searchresultfooter.htm", writer);

            resourceRepository.WriteResource("footer.htm", writer);
        }
Esempio n. 6
0
        public void CountUniqueTest()
        {
            // Arrange
            var expected = new[] { 1, 2, 1, 1 };

            const string user1 = "user1";
            const string user2 = "user2";

            var messages = new EAEPMessages
                           {
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 5, 0), "host1", "webapp", "PageLoad"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 10, 0), "host1", "webapp", "PageLoad"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 17, 0), "host1", "webapp", "PageLoad"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 18, 0), "host1", "webapp", "PageLoad"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 22, 0), "host1", "webapp", "PageLoad"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 36, 0), "host1", "webapp", "PageLoad"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 51, 0), "host1", "webapp", "PageLoad"),
                               new EAEPMessage(new DateTime(2009, 9, 17, 12, 55, 0), "host1", "webapp", "PageLoad")
                           };

            messages[0][EAEPMessage.PARAM_USER] = user1;
            messages[1][EAEPMessage.PARAM_USER] = user1;
            messages[2][EAEPMessage.PARAM_USER] = user1;
            messages[3][EAEPMessage.PARAM_USER] = user2;
            messages[4][EAEPMessage.PARAM_USER] = user2;
            messages[5][EAEPMessage.PARAM_USER] = user1;
            messages[6][EAEPMessage.PARAM_USER] = user2;
            messages[7][EAEPMessage.PARAM_USER] = user2;

            using (var monitorStore = new SQLMonitorStore(Configuration.MonitorStoreConnectionString))
            {
                foreach (var message in messages)
                {
                    monitorStore.PushMessage(message);
                }

                var target = new Aggregator(monitorStore);

                // Act
                var actual = target.Count(
                    string.Format("{0}:{1} AND {2}:{3}", EAEPMessage.FIELD_APPLICATION, "webapp", EAEPMessage.FIELD_HOST, "host1"),
                    new DateTime(2009, 9, 17, 12, 0, 0),
                    new DateTime(2009, 9, 17, 13, 0, 0),
                    4,
                    EAEPMessage.PARAM_USER);

                // Assert
                Assert.AreEqual(expected.Length, actual.Length);

                for (var i = 0; i < expected.Length; i++)
                {
                    Assert.AreEqual(expected[i], actual[i]);
                }

            }
        }
Esempio n. 7
0
        public void ToStringTest()
        {
            // Arrange
            const string app1 = "app1";
            const string app2 = "app2";
            const string userParam = "user";
            const string user1 = "*****@*****.**";
            const string user2 = "*****@*****.**";

            var message1 = new EAEPMessage("host1", app1, "purchase");
            message1[userParam] = user2;
            var message2 = new EAEPMessage("host1", app2, "login");
            message2[userParam] = user1;
            var message3 = new EAEPMessage("host1", app1, "purchase");
            message3[userParam] = user1;
            var message4 = new EAEPMessage("host1", app2, "purchase");
            message4[userParam] = user2;

            var target = new EAEPMessages {message1, message2, message3, message4};

            var expected = string.Format("{0}{1}{2}{3}", message1, message2, message3, message4);

            // Act
            var actual = target.ToString();

            // Assert
            Assert.AreEqual(expected, actual);
        }
Esempio n. 8
0
        protected EAEPMessages ExecuteGetMessagesCommand(SqlCommand command)
        {
            try
            {
                using (SqlConnection connection = GetConnection())
                {
                    command.Connection = connection;
                    command.CommandTimeout = Configuration.DefaultQueryTimeout;

                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        EAEPMessages messages = new EAEPMessages();

                        while (reader.Read())
                        {
                            messages.Add(new EAEPMessage(reader.GetString(0)));
                        }

                        return messages;
                    }
                }
            }
            catch (SqlException ex)
            {
                log.Warn(ex);
                throw new MessageRetrievalException(ex.Message);
            }
            catch (Exception ex)
            {
                log.Error(ex);
                throw new MessageRetrievalException(ex.Message);
            }
        }
Esempio n. 9
0
 public void PushMessages(EAEPMessages messages)
 {
     foreach (EAEPMessage message in messages)
     {
         PushMessage(message);
     }
 }