public void FactoryBasedLoggerHandler_LogError_Handles_Concurrent_Calls() { var originalLevel = Diagnostics.CassandraTraceSwitch.Level; try { Diagnostics.CassandraTraceSwitch.Level = TraceLevel.Verbose; var listener = new TestTraceListener(); Trace.Listeners.Add(listener); var loggerHandler = new Logger.TraceBasedLoggerHandler(typeof(int)); UseAllMethods(loggerHandler); Trace.Listeners.Remove(listener); Assert.AreEqual(6, listener.Messages.Count); var actions = Enumerable .Repeat(true, 1000) .Select <bool, Action>((_, index) => () => { loggerHandler.Error(new ArgumentException("Test exception " + index, new Exception("Test inner exception"))); }); TestHelper.ParallelInvoke(actions); } finally { Diagnostics.CassandraTraceSwitch.Level = originalLevel; } }
public void FactoryBasedLoggerHandler_Methods_Should_Output_To_Trace() { var originalLevel = Diagnostics.CassandraTraceSwitch.Level; Diagnostics.CassandraTraceSwitch.Level = TraceLevel.Verbose; var listener = new TestTraceListener(); Trace.Listeners.Add(listener); var loggerHandler = new Logger.TraceBasedLoggerHandler(typeof(int)); UseAllMethods(loggerHandler); Trace.Listeners.Remove(listener); Diagnostics.CassandraTraceSwitch.Level = originalLevel; Assert.AreEqual(6, listener.Messages.Count); var expectedMessages = new[] { "Test exception 1", "Message 1", "Message 2 Param1", "Message 3 Param2", "Message 4 Param3", "Message 5 Param4" }; var messages = listener.Messages.Keys.OrderBy(k => k).Select(k => listener.Messages[k]).ToArray(); for (var i = 0; i < expectedMessages.Length; i++) { StringAssert.Contains(expectedMessages[i], messages[i]); } }