public async Task ParseEventsAsync(string input, int expectedEvents, string[] expectedMessage, string expectedType) { var events = await _parser.ParseEventsAsync(input, 2, "exceptionless/2.0.0.0"); Assert.Equal(expectedEvents, events.Count); for (int index = 0; index < events.Count; index++) { var ev = events[index]; Assert.Equal(expectedMessage[index], ev.Message); Assert.Equal(expectedType, ev.Type); Assert.NotEqual(DateTimeOffset.MinValue, ev.Date); } }
public async Task ParseErrorsAsync(string errorFilePath) { string json = File.ReadAllText(errorFilePath); var ctx = new EventUpgraderContext(json); await _upgrader.UpgradeAsync(ctx); ApprovalsUtility.VerifyFile(Path.ChangeExtension(errorFilePath, ".expected.json"), ctx.Documents.First.ToString()); var events = await _parser.ParseEventsAsync(ctx.Documents.ToString(), 2, "exceptionless/2.0.0.0"); Assert.Equal(1, events.Count); }
private async Task <List <PersistentEvent> > ParseEventPostAsync(EventPostInfo ep, DateTime createdUtc, byte[] uncompressedData, string queueEntryId, bool isInternalProject) { _logger.Debug().Message("Parsing EventPost: {0}", queueEntryId).Property("Id", queueEntryId).Tag("parsing").Project(ep.ProjectId).WriteIf(!isInternalProject); List <PersistentEvent> events = null; try { var encoding = Encoding.UTF8; if (!String.IsNullOrEmpty(ep.CharSet)) { encoding = Encoding.GetEncoding(ep.CharSet); } await _metricsClient.TimeAsync(async() => { string input = encoding.GetString(uncompressedData); events = await _eventParserPluginManager.ParseEventsAsync(input, ep.ApiVersion, ep.UserAgent).AnyContext() ?? new List <PersistentEvent>(0); foreach (var ev in events) { ev.CreatedUtc = createdUtc; // set the project id on all events ev.ProjectId = ep.ProjectId; // set the reference id to the event id if one was defined. if (!String.IsNullOrEmpty(ev.Id) && String.IsNullOrEmpty(ev.ReferenceId)) { ev.ReferenceId = ev.Id; } // the event id, stack id and organization id should never be set for posted events ev.Id = ev.StackId = ev.OrganizationId = null; } }, MetricNames.PostsParsingTime).AnyContext(); await _metricsClient.CounterAsync(MetricNames.PostsParsed).AnyContext(); await _metricsClient.GaugeAsync(MetricNames.PostsEventCount, events.Count).AnyContext(); } catch (Exception ex) { await _metricsClient.CounterAsync(MetricNames.PostsParseErrors).AnyContext(); _logger.Error().Exception(ex).Message("An error occurred while processing the EventPost '{0}': {1}", queueEntryId, ex.Message).WriteIf(!isInternalProject); } _logger.Debug().Message("Parsed {0} events from EventPost: {1}", events?.Count ?? 0, queueEntryId).Property("Id", queueEntryId).Tag("parsing").Project(ep.ProjectId).WriteIf(!isInternalProject); return(events); }