Exemple #1
0
        public void Test_EndToEnd()
        {
            SequencePropertyInitializer initializer = new SequencePropertyInitializer();

            EventTelemetry tele1 = new EventTelemetry("Event1");

            initializer.Initialize(tele1);
            EventTelemetry tele2 = new EventTelemetry("Event2");

            initializer.Initialize(tele2);
            EventTelemetry tele3 = new EventTelemetry("Event3");

            initializer.Initialize(tele3);

            Assert.AreEqual(1, SequenceIdParser.GetOrder(tele1.Sequence));
            Assert.AreEqual(2, SequenceIdParser.GetOrder(tele2.Sequence));
            Assert.AreEqual(3, SequenceIdParser.GetOrder(tele3.Sequence));

            var prefix      = SequenceIdParser.GetPrefix(tele1.Sequence);
            var prefixAgain = SequenceIdParser.GetPrefix(prefix);

            Assert.IsTrue(!string.IsNullOrEmpty(prefix));

            Assert.AreEqual(prefix, prefixAgain);

            Assert.AreEqual(prefix, SequenceIdParser.GetPrefix(tele2.Sequence));
            Assert.AreEqual(prefix, SequenceIdParser.GetPrefix(tele3.Sequence));
        }
Exemple #2
0
        public async Task <UsageDataTableResult> GetSequenceHistory(Guid telemetryKey, string sequenceId, string searchValue)
        {
            Program program = await this.portalContext.Programs.FirstOrDefaultAsync(x => x.TelemetryKey == telemetryKey).ConfigureAwait(false);

            if (program == null)
            {
                throw new ArgumentException($"Program with key {telemetryKey} does not exist");
            }

            string sequencePrefix = SequenceIdParser.GetPrefix(sequenceId);

            if (string.IsNullOrEmpty(sequencePrefix))
            {
                return(new UsageDataTableResult {
                    TotalCount = 0, FilteredCount = 0, UsageData = new List <DataTableTelemetryData>()
                });
            }


            IEnumerable <TelemetryDetail> viewQuery       = (await this.telemetryContext.ViewTelemetryDetails.Where(x => x.Sequence.StartsWith(sequencePrefix)).ToListAsync().ConfigureAwait(false)).Cast <TelemetryDetail>();
            IEnumerable <TelemetryDetail> eventQuery      = (await this.telemetryContext.EventTelemetryDetails.Where(x => x.Sequence.StartsWith(sequencePrefix)).ToListAsync().ConfigureAwait(false)).Cast <TelemetryDetail>();
            List <LogMessage>             logsQuery       = (await this.telemetryContext.LogMessages.Where(x => x.ProgramId == program.Id && x.Sequence.StartsWith(sequencePrefix)).ToListAsync().ConfigureAwait(false));
            List <ExceptionInfo>          exceptionsQuery = (await this.telemetryContext.Exceptions.Where(x => x.ProgramId == program.Id && x.Sequence.StartsWith(sequencePrefix)).ToListAsync().ConfigureAwait(false));


            List <object> allResults = viewQuery.Concat(eventQuery).Cast <object>().ToList();

            allResults.AddRange(logsQuery);
            allResults.AddRange(exceptionsQuery);

            int totalCount = allResults.Count;

            List <SequenceHistoryData> result = new List <SequenceHistoryData>();

            foreach (object detail in allResults)
            {
                SequenceHistoryData data = this.BuildSequenceItem(detail);
                result.Add(data);
            }

            result = result.OrderByDescending(x => x.Order).ToList();

            return(new UsageDataTableResult {
                TotalCount = totalCount, FilteredCount = totalCount, UsageData = result
            });
        }
        private SequenceHistoryData BuildSequenceItem(object item)
        {
            SequenceHistoryData data = null;

            if (item is TelemetryDetail telemetryDetail)
            {
                data       = new SequenceHistoryData(telemetryDetail);
                data.Order = SequenceIdParser.GetOrder(telemetryDetail.Sequence);
            }
            else if (item is LogMessage logMessage)
            {
                data       = new SequenceHistoryData(logMessage);
                data.Order = SequenceIdParser.GetOrder(logMessage.Sequence);
            }
            else if (item is ExceptionInfo error)
            {
                data       = new SequenceHistoryData(error);
                data.Order = SequenceIdParser.GetOrder(error.Sequence);
            }

            return(data);
        }