Ejemplo n.º 1
0
        public void FindNextIterationTest()
        {
            var account   = TestHelper.GetTestAccount();
            var component = account.CreateRandomComponentControl();

            // Создадим N + 1 записей, потом 1 запись с текстом
            var searchIterationRecordCount = 10;
            var text = Guid.NewGuid().ToString();
            var date = DateTime.Now.AddMinutes(-searchIterationRecordCount - 1);

            for (var i = 1; i <= searchIterationRecordCount + 1; i++)
            {
                component.Client.ApiService.SendLog(new Api.SendLogData()
                {
                    ComponentId = component.Info.Id,
                    Level       = Api.LogLevel.Info,
                    Message     = i.ToString(),
                    Date        = date
                });
                date = date.AddMinutes(1);
            }

            component.Client.ApiService.SendLog(new Api.SendLogData()
            {
                ComponentId = component.Info.Id,
                Level       = Api.LogLevel.Info,
                Message     = text,
                Date        = date
            });

            component.Client.Flush();

            // Получим записи лога
            var logRecords = component.GetLogs(new Api.GetLogsFilter()
            {
                Levels = new List <Api.LogLevel>()
                {
                    Api.LogLevel.Info
                }
            }).Data.OrderBy(t => t.Date).ThenBy(t => t.Order).ToArray();

            Assert.Equal(searchIterationRecordCount + 2, logRecords.Length);

            // Выполним поиск с начала лога
            var user    = TestHelper.GetAccountAdminUser(account.Id);
            var filters = new LogFiltersModel()
            {
                ComponentId = component.Info.Id,
                Date        = logRecords[0].Date,
                Text        = text.ToUpper()
            };

            JsonResult jsonResult1;

            using (var controller = new LogsController(account.Id, user.Id, OutputRecordCount, searchIterationRecordCount))
            {
                jsonResult1 = Assert.IsType <JsonResult>(controller.FindNextRecord(filters));
            }

            // Проверим, что ничего не найдено, но можно искать дальше
            var success = (bool)jsonResult1.Data.GetType().GetProperty("success").GetValue(jsonResult1.Data);

            Assert.True(success);
            var jsonData = jsonResult1.Data.GetType().GetProperty("data").GetValue(jsonResult1.Data);

            Assert.NotNull(jsonData);
            var found = (bool)jsonData.GetType().GetProperty("found").GetValue(jsonData);

            Assert.False(found);
            var id = new Guid((string)jsonData.GetType().GetProperty("id").GetValue(jsonData));

            Assert.NotNull(id);

            // Проверим, что этот Id указывает на запись N
            Assert.Equal(logRecords[searchIterationRecordCount].Id, id);

            // Поищем дальше с указанного Id
            filters = new LogFiltersModel()
            {
                ComponentId = component.Info.Id,
                Date        = logRecords[0].Date,
                Id          = id,
                Text        = text.ToUpper()
            };

            JsonResult jsonResult2;

            using (var controller = new LogsController(account.Id, user.Id, OutputRecordCount, searchIterationRecordCount))
            {
                jsonResult2 = Assert.IsType <JsonResult>(controller.FindNextRecord(filters));
            }

            // Проверим, что запись найдена
            success = (bool)jsonResult2.Data.GetType().GetProperty("success").GetValue(jsonResult2.Data);
            Assert.True(success);
            jsonData = jsonResult2.Data.GetType().GetProperty("data").GetValue(jsonResult2.Data);
            Assert.NotNull(jsonData);
            found = (bool)jsonData.GetType().GetProperty("found").GetValue(jsonData);
            Assert.True(found);
            id = new Guid((string)jsonData.GetType().GetProperty("id").GetValue(jsonData));
            Assert.NotNull(id);

            // Проверим, что найдена именно N + 1 запись
            Assert.Equal(logRecords.Last().Id, id);
        }
Ejemplo n.º 2
0
        public void FindNextRecordByPropertyTest()
        {
            var account   = TestHelper.GetTestAccount();
            var component = account.CreateRandomComponentControl();

            // Создадим N записей, потом 2 записи со свойством
            var text = Guid.NewGuid().ToString();

            for (var i = 1; i <= OutputRecordCount; i++)
            {
                component.Log.Info(i.ToString());
            }

            component.Log.Info((OutputRecordCount + 1).ToString(), new { PropName1 = text });
            component.Log.Info((OutputRecordCount + 2).ToString(), new { PropName2 = Guid.NewGuid() });

            component.Client.Flush();

            // Получим записи лога
            var logRecords = component.GetLogs(new Api.GetLogsFilter()
            {
                Levels = new List <Api.LogLevel>()
                {
                    Api.LogLevel.Info
                }
            }).Data.OrderBy(t => t.Date).ThenBy(t => t.Order).ToArray();

            Assert.Equal(OutputRecordCount + 2, logRecords.Length);

            // Выполним поиск с начала лога по тексту свойства
            var user    = TestHelper.GetAccountAdminUser(account.Id);
            var filters = new LogFiltersModel()
            {
                ComponentId = component.Info.Id,
                Date        = logRecords[0].Date,
                Text        = text.ToUpper()
            };

            JsonResult jsonResult;

            using (var controller = new LogsController(account.Id, user.Id, OutputRecordCount, SearchIterationRecordCount))
            {
                jsonResult = Assert.IsType <JsonResult>(controller.FindNextRecord(filters));
            }

            // Проверим, что нашли запись
            var success = (bool)jsonResult.Data.GetType().GetProperty("success").GetValue(jsonResult.Data);

            Assert.True(success);
            var jsonData = jsonResult.Data.GetType().GetProperty("data").GetValue(jsonResult.Data);

            Assert.NotNull(jsonData);
            var found = (bool)jsonData.GetType().GetProperty("found").GetValue(jsonData);

            Assert.True(found);
            var id = new Guid((string)jsonData.GetType().GetProperty("id").GetValue(jsonData));

            Assert.NotNull(id);

            // Проверим, что это именно запись N + 1
            Assert.Equal(logRecords[OutputRecordCount].Id, id);

            // Выполним поиск с начала лога по названию свойства
            filters = new LogFiltersModel()
            {
                ComponentId = component.Info.Id,
                Date        = logRecords[0].Date,
                Text        = "PROPNAME2"
            };

            using (var controller = new LogsController(account.Id, user.Id, OutputRecordCount, SearchIterationRecordCount))
            {
                jsonResult = Assert.IsType <JsonResult>(controller.FindNextRecord(filters));
            }

            // Проверим, что нашли запись
            success = (bool)jsonResult.Data.GetType().GetProperty("success").GetValue(jsonResult.Data);
            Assert.True(success);
            jsonData = jsonResult.Data.GetType().GetProperty("data").GetValue(jsonResult.Data);
            Assert.NotNull(jsonData);
            found = (bool)jsonData.GetType().GetProperty("found").GetValue(jsonData);
            Assert.True(found);
            id = new Guid((string)jsonData.GetType().GetProperty("id").GetValue(jsonData));
            Assert.NotNull(id);

            // Проверим, что это именно запись N + 2
            Assert.Equal(logRecords[OutputRecordCount + 1].Id, id);
        }
Ejemplo n.º 3
0
        public void FindNextRecordTest()
        {
            var account   = TestHelper.GetTestAccount();
            var component = account.CreateRandomComponentControl();

            // Создадим 1 запись с текстом, потом N / 2 записей, ещё запись с текстом, и ещё N / 2 записей
            var text = Guid.NewGuid().ToString();

            component.Log.Info(text);

            for (var i = 2; i <= OutputRecordCount / 2 + 1; i++)
            {
                component.Log.Info(i.ToString());
            }

            component.Log.Info(text);

            for (var i = OutputRecordCount / 2 + 3; i <= OutputRecordCount + 2; i++)
            {
                component.Log.Info(i.ToString());
            }

            component.Client.Flush();

            // Получим записи лога
            var logRecords = component.GetLogs(new Api.GetLogsFilter()
            {
                Levels = new List <Api.LogLevel>()
                {
                    Api.LogLevel.Info
                }
            }).Data.OrderBy(t => t.Date).ThenBy(t => t.Order).ToArray();

            Assert.Equal(OutputRecordCount + 2, logRecords.Length);

            // Выполним поиск после 1-й записи
            LogPartialModel model;
            var             user    = TestHelper.GetAccountAdminUser(account.Id);
            var             filters = new LogFiltersModel()
            {
                ComponentId = component.Info.Id,
                Id          = logRecords[0].Id,
                Text        = text.ToUpper()
            };

            JsonResult jsonResult1;

            using (var controller = new LogsController(account.Id, user.Id, OutputRecordCount, SearchIterationRecordCount))
            {
                jsonResult1 = Assert.IsType <JsonResult>(controller.FindNextRecord(filters));
            }
            var success = (bool)jsonResult1.Data.GetType().GetProperty("success").GetValue(jsonResult1.Data);

            Assert.True(success);
            var jsonData = jsonResult1.Data.GetType().GetProperty("data").GetValue(jsonResult1.Data);

            Assert.NotNull(jsonData);
            var found = (bool)jsonData.GetType().GetProperty("found").GetValue(jsonData);

            Assert.True(found);
            var id = new Guid((string)jsonData.GetType().GetProperty("id").GetValue(jsonData));

            Assert.NotNull(id);

            filters = new LogFiltersModel()
            {
                ComponentId = component.Info.Id,
                Id          = id,
                Text        = text.ToUpper()
            };
            using (var controller = new LogsController(account.Id, user.Id, OutputRecordCount, SearchIterationRecordCount))
            {
                var result = Assert.IsType <PartialViewResult>(controller.Center(filters));
                model = Assert.IsType <LogPartialModel>(result.Model);
            }

            // Проверим, что получили записи с 2 до N + 1
            var foundRecord = model.Items[OutputRecordCount / 2];

            Assert.Equal(OutputRecordCount, model.Items.Length);
            Assert.Equal("2", model.Items.First().Message);
            Assert.Equal(text, foundRecord.Message);
            Assert.Equal((OutputRecordCount + 1).ToString(), model.Items.Last().Message);

            // Выполним поиск дальше
            filters = new LogFiltersModel()
            {
                ComponentId = component.Info.Id,
                Id          = id,
                Text        = text.ToUpper()
            };

            JsonResult jsonResult2;

            using (var controller = new LogsController(account.Id, user.Id, OutputRecordCount, SearchIterationRecordCount))
            {
                jsonResult2 = Assert.IsType <JsonResult>(controller.FindNextRecord(filters));
            }

            // Проверим, что больше ничего не найдено
            success = (bool)jsonResult2.Data.GetType().GetProperty("success").GetValue(jsonResult2.Data);
            Assert.True(success);
            jsonData = jsonResult2.Data.GetType().GetProperty("data").GetValue(jsonResult2.Data);
            Assert.NotNull(jsonData);
            found = (bool)jsonData.GetType().GetProperty("found").GetValue(jsonData);
            Assert.False(found);
            var message = (string)jsonData.GetType().GetProperty("message").GetValue(jsonData);

            Assert.NotNull(message);
            var id2 = (string)jsonData.GetType().GetProperty("id").GetValue(jsonData);

            Assert.Null(id2);
        }