public void MultiThreadsMultiLogsTest() { Threads = new Thread[MaxThreads]; ManualResetEvents = new ManualResetEvent[MaxThreads]; SmartLogGeneratorsArray = new SmartLogGenerator[MaxThreads]; for (int threadIndex = 0; threadIndex < MaxThreads; threadIndex++) { string smartLoggerTestName = GetSmartLoggerTestName("MultiThreadsMultiLogsTest", threadIndex); SmartLoggerPerType <SmartLoggerTests> smartLoggerPerType = CreateSmartLoggerPerType(smartLoggerTestName); SmartLogGeneratorsArray[threadIndex] = CreateSmartLogGenerator(smartLoggerTestName, smartLoggerPerType); ManualResetEvents[threadIndex] = SmartLogGeneratorsArray[threadIndex].ManualResetEvent; Threads[threadIndex] = CreateThread(SmartLogGeneratorsArray[threadIndex]); Threads[threadIndex].Start(); Thread.Sleep(200); } // ReSharper disable once CoVariantArrayConversion WaitHandle.WaitAll(ManualResetEvents); for (int threadIndex = 0; threadIndex < MaxThreads; threadIndex++) { SmartLogGenerator smartLogGenerators = SmartLogGeneratorsArray[threadIndex]; smartLogGenerators?.Dispose(); } }
public void ThreadCallback() { SmartLoggerPerType.Log(SmartLogLevel.Trace, SmartLogLine.GetLine("Starting", SmartLogGeneratorName, ToString())); AssertGetSmartLog(SmartLogLevel.Trace, SmartLogLevel.Debug); AssertGetSmartLog(SmartLogLevel.Debug, SmartLogLevel.Debug); AssertGetSmartLog(SmartLogLevel.Warn, SmartLogLevel.Debug); AssertGetSmartLog(SmartLogLevel.Info, SmartLogLevel.Debug); AssertGetSmartLog(SmartLogLevel.Error, SmartLogLevel.Debug); AssertGetSmartLog(SmartLogLevel.Critical, SmartLogLevel.Debug); SmartLoggerPerType.Log(SmartLogLevel.Trace, SmartLogLine.GetLine("Complited", SmartLogGeneratorName, ToString())); Write(); ManualResetEvent.Set(); }
public SmartLogGenerator(string name, ManualResetEvent manualResetEvent, SmartLoggerPerType <SmartLoggerTests> SmartLoggerPerType) { Name = name; ManualResetEvent = manualResetEvent; this.SmartLoggerPerType = SmartLoggerPerType; }
private static SmartLogGenerator CreateSmartLogGenerator(string smartLoggerTestName, SmartLoggerPerType <SmartLoggerTests> smartLoggerPerType) { SmartLogGenerator smartLogGenerator = new SmartLogGenerator(smartLoggerTestName, new ManualResetEvent(false), smartLoggerPerType); return(smartLogGenerator); }
public static SmartLogPerTypeByLevel <T> Log <T>(this SmartLoggerPerType <T> smartLoggerPerType, SmartLogLevel smartLogLevel, string line) { SmartLogPerTypeByLevel <T> smartLogPerTypeByLevel = smartLoggerPerType.GetOrAdd(typeof(T), new SmartLogPerTypeByLevel <T>()); smartLogPerTypeByLevel.Log(smartLogLevel, line); return(smartLogPerTypeByLevel); }
public void CurrentThreadTest() { string smartLoggerPerTypeName = GetSmartLoggerTestName("CurrentThreadTest", 0); SmartLoggerPerType <SmartLoggerTests> smartLoggerPerType = CreateSmartLoggerPerType(smartLoggerPerTypeName); SmartLogGenerator smartLogGenerator = CreateSmartLogGenerator(smartLoggerPerTypeName, smartLoggerPerType); Assert.NotNull(smartLogGenerator); smartLogGenerator.ThreadCallback(); smartLogGenerator.Dispose(); }
public static SmartLogPerTypeByLevel <T> Log <T>(this SmartLoggerPerType <T> smartLoggerPerType, string action, SmartLogLevel smartLogLevel, string message) { string line = SmartLogLine.GetLine(action, smartLogLevel.ToLine(), message); SmartLogPerTypeByLevel <T> smartLogPerTypeByLevel = smartLoggerPerType.Log(smartLogLevel, line); return(smartLogPerTypeByLevel); }
private SmartLogPerTypeByLevel <SmartLoggerTests> AssertGetSmartLog(string action, SmartLogLevel smartLogLevel, SmartLogPerTypeByLevel <SmartLoggerTests> expectedSmartLogPerTypeByLevel) { Assert.NotNull(expectedSmartLogPerTypeByLevel); SmartLogPerTypeByLevel <SmartLoggerTests> smartLogPerTypeByLevel = SmartLoggerPerType.Log(action, smartLogLevel, SmartLogGeneratorName); Assert.NotNull(smartLogPerTypeByLevel); Assert.AreEqual(expectedSmartLogPerTypeByLevel, smartLogPerTypeByLevel); LogSize(smartLogLevel); return(smartLogPerTypeByLevel); }
private void AssertGetSmartLog(SmartLogLevel smartLogLevel, SmartLogLevel logLevel) { SmartLoggerPerType.TryGetValue(typeof(SmartLoggerTests), out SmartLogPerTypeByLevel <SmartLoggerTests> expectedSmartLogPerTypeByLevel); SmartLogPerTypeByLevel <SmartLoggerTests> smartLogPerTypeByLevel = AssertGetSmartLog(Getting, smartLogLevel, expectedSmartLogPerTypeByLevel); Thread.Sleep(100); LogSize(smartLogLevel); string line = SmartLogLine.GetLine(logLevel.ToLine(), SmartLogGeneratorName, smartLogLevel.ToLine()); smartLogPerTypeByLevel.Log(logLevel, line); Thread.Sleep(100); }
private void LogSize(SmartLogLevel smartLogLevel) { SmartLoggerPerType.TryGetValue(typeof(SmartLoggerTests), out SmartLogPerTypeByLevel <SmartLoggerTests> smartLogPerTypeByLevel); Assert.NotNull(smartLogPerTypeByLevel); smartLogPerTypeByLevel.TryGetValue(smartLogLevel, out SmartLogLines smartLogLines); Assert.NotNull(smartLogLines); string line = SmartLogLine.GetLine(SmartLogGeneratorName, Size, smartLogPerTypeByLevel.Size().ToString()); smartLogPerTypeByLevel.Log(smartLogLevel, line); Assert.IsNotEmpty(smartLogLines); Thread.Sleep(100); }
private void Write() { LogSize(SmartLogLevel.Debug); SmartLoggerPerType.Write(); }