Esempio n. 1
0
        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;
 }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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();
 }