public static void Contains(TestLogProvider logProvider, params LogAssert[] asserts) { var remaining = new HashSet <LogAssert>(asserts); foreach (LogEntry logEntry in GetLogs(logProvider)) { foreach (LogAssert assert in remaining.ToArray()) { if (string.Equals(assert.EventName, logEntry.EventId.Name) && assert.EventId == logEntry.EventId.Id && assert.Level == logEntry.LogLevel && logEntry.Message.Contains(assert.MessageSubstring)) { remaining.Remove(assert); } } } Assert.Empty(remaining); }
public static void Sequence(TestLogProvider logProvider, params LogAssert[] asserts) { LogEntry[] actualLogs = GetLogs(logProvider).ToArray(); string expected = Environment.NewLine + string.Join(Environment.NewLine, asserts.Select(log => log.EventName)) + Environment.NewLine; string actual = Environment.NewLine + string.Join(Environment.NewLine, actualLogs.Select(log => log.EventId.Name)) + Environment.NewLine; for (int i = 0; i < actualLogs.Length; i++) { Assert.True(asserts.Length > i, $"{asserts.Length} log entries were expected but {actualLogs.Length} were found. Expected:{expected}Actual:{actual}"); Assert.Equal(asserts[i].EventName, actualLogs[i].EventId.Name); Assert.Equal(asserts[i].EventId, actualLogs[i].EventId.Id); Assert.Equal(asserts[i].Level, actualLogs[i].LogLevel); Assert.Contains(asserts[i].MessageSubstring, actualLogs[i].Message); ValidateStructuredLogFields(actualLogs[i]); } // If this fails, it means that more logs were expected. Assert.True( asserts.Length == actualLogs.Length, $"{asserts.Length} log entries were expected but only {actualLogs.Length} were found. Expected:{expected}Actual:{actual}"); }
public static void Sequence(TestLogProvider logProvider, params LogAssert[] asserts) => For(logProvider).Expect(asserts).EndOfLog();
public static IReadOnlyCollection <LogEntry> For(TestLogProvider logProvider) { Assert.True(logProvider.TryGetLogs("DurableTask.SqlServer", out IReadOnlyCollection <LogEntry> logs)); return(logs); }
public static void LogEntryCount(TestLogProvider logProvider, int expected) => Assert.Equal(expected, GetLogs(logProvider).Count);
public static void NoWarningsOrErrors(TestLogProvider logProvider) => Assert.Empty(GetLogs(logProvider).Where(entry => entry.LogLevel > LogLevel.Information));
public static void Contains(TestLogProvider logProvider, params LogAssert[] asserts) => For(logProvider).Contains(asserts).AllowAdditionalLogs();