public EtlSession[] GetEtlSessions(EtlSessionQuery query)
            {
                var result = new List<EtlSession>();

                foreach (var agent in _etlAgents)
                {
                    var logParser = agent.GetEtlLogParser();
                    result.AddRange(logParser.GetEtlSessions(query));
                }

                return result.ToArray();
            }
        public void CanGetEtlSessionResultById()
        {
            var agent = CreateAgent();
            var logParser = agent.GetEtlLogParser();

            var query = new EtlSessionQuery
            {
                FromDateTime = DateTime.Now.Subtract(_sessionTimeSpan),
                ToDateTime = DateTime.Now,
            };
            var sessions = logParser.GetEtlSessions(query);
            Assert.IsNotNull(sessions);
            Assert.IsTrue(sessions.Length > 0);

            var packageId = sessions[0].EtlPackageId;
            var sessionId = sessions[0].EtlSessionId;
            var session = logParser.GetEtlSession(packageId, sessionId);
            Assert.IsNotNull(session);
        }
        public void CanGenEtlSessionResultsWork()
        {
            var agent = CreateAgent();
            var logParser = agent.GetEtlLogParser();

            var query = new EtlSessionQuery
            {
                FromDateTime = DateTime.Now.Subtract(_sessionTimeSpan),
                ToDateTime = DateTime.Now,
                EtlPackageIds =
                {
                    Guid.Empty.ToString()
                },
                Variables =
                {
                    new EtlVariableFilter("aaa", "bbb"),
                    new EtlVariableFilter("ccc", "ddd")
                },
                MaxSessionCount = 10,
            };
            var sessions = logParser.GetEtlSessions(query);
            Assert.IsNotNull(sessions);
            Assert.AreEqual(0, sessions.Length);
        }
        private EtlSession[] GetEtlSessions(EtlSessionListModel model)
        {
            var dateTo = DateTime.ParseExact(model.DateTo, SharedStrings.DateFormat, null);
            var dateFrom = DateTime.ParseExact(model.DateFrom, SharedStrings.DateFormat, null);
            var oneDay = dateTo == dateFrom;
            dateTo = dateTo.AddDays(1);

            var query = new EtlSessionQuery
            {
                FromDateTime = dateFrom,
                ToDateTime = dateTo,
                MaxSessionCount = model.DefaultMaxSessionCount,
            };

            if (model.Status > 0)
            {
                query.EtlStatuses.Add(model.Status);
            }

            var agent = SiteConfiguration.GetEtlAgent();
            var logParser = agent.GetEtlLogParser();
            var sessions = logParser.GetEtlSessions(query);

            return sessions;
        }
        private static EtlSessionQuery CreateSessionQuery(EtlMailSubscription subscription)
        {
            var query = new EtlSessionQuery
            {
                ToDateTime = DateTime.Now,
                FromDateTime = DateTime.Now.Subtract(TimeSpan.FromSeconds(subscription.OnLastSeconds)),
            };

            query.EtlStatuses.AddRange(subscription.EtlStatuses);

            return query;
        }
        public void CannotGetEtlSessionResultsByAbsentId()
        {
            var agent = CreateAgent();
            var logParser = agent.GetEtlLogParser();

            var query = new EtlSessionQuery
            {
                FromDateTime = DateTime.Now.Subtract(_sessionTimeSpan),
                ToDateTime = DateTime.Now,
                EtlPackageIds =
                {
                    Guid.Empty.ToString()
                },
            };
            var sessions = logParser.GetEtlSessions(query);
            Assert.IsNotNull(sessions);
            Assert.AreEqual(0, sessions.Length);
        }
        private static EtlDump GetDump(IEtlAgent agent, int lastSeconds, List<EtlStatus> etlStatuses, List<string> etlPackageIds)
        {
            var writer = new EtlDumpWriter(new EtlDumpSettings());
            var query = new EtlSessionQuery
            {
                ToDateTime = DateTime.Now,
                FromDateTime = DateTime.Now.Subtract(TimeSpan.FromSeconds(lastSeconds)),
            };
            query.EtlStatuses.AddRange(etlStatuses);
            query.EtlPackageIds.AddRange(etlPackageIds);

            var logParser = agent.GetEtlLogParser();
            writer.Write(query, logParser);

            var dump = writer.GetDump();
            dump.Sessions.Sort(new Comparison<EtlSessionSummary>(SortSessionsDesc));
            return dump;
        }