Added method to test if LocalMutex LockStrategy actually perform lock

Project: http://git-wip-us.apache.org/repos/asf/logging-log4net/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4net/commit/8fccdd34
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4net/tree/8fccdd34
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4net/diff/8fccdd34

Branch: refs/heads/feature/rfa-configurable-rolling-mutex
Commit: 8fccdd3492a965ed49e09d8c95ceb683b0a64377
Parents: 1782679
Author: Andrei Stryia <andrei_str...@epam.com>
Authored: Mon Oct 1 16:20:58 2018 +0300
Committer: Andrei Stryia <andrei_str...@epam.com>
Committed: Mon Oct 1 16:20:58 2018 +0300

----------------------------------------------------------------------
 tests/src/Appender/RollingFileAppenderTest.cs | 29 +++++++---------------
 1 file changed, 9 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/8fccdd34/tests/src/Appender/RollingFileAppenderTest.cs
----------------------------------------------------------------------
diff --git a/tests/src/Appender/RollingFileAppenderTest.cs 
b/tests/src/Appender/RollingFileAppenderTest.cs
index b9c2ed0..e3cf04d 100644
--- a/tests/src/Appender/RollingFileAppenderTest.cs
+++ b/tests/src/Appender/RollingFileAppenderTest.cs
@@ -33,7 +33,6 @@ using log4net.Util;
 using NUnit.Framework;
 using System.Globalization;
 using System.Threading;
-using System.Threading.Tasks;
 
 namespace log4net.Tests.Appender
 {
@@ -1787,28 +1786,30 @@ namespace log4net.Tests.Appender
                [Test]
                public void TestRollingLockStrategyLocalMutex()
                {
-                       String filename = c_fileName;
+                       String filename = "test_lock.log";
                        SilentErrorHandler sh = new SilentErrorHandler();
 
-                       ILogger log = CreateLogger(filename, new 
FileAppender.MinimalLock(), sh, maxFileSize: 1, maxSizeRollBackups: 2, 
rollingLockStrategy: RollingFileAppender.RollingLockStrategyKind.LocalMutex);
-                       RollingFileAppender appender = (RollingFileAppender) 
log.Repository.GetAppenders()[0];
-
                        Mutex syncObject = null;
                        try
                        {
+                               ILogger log = CreateLogger(filename, new 
FileAppender.MinimalLock(), sh, maxFileSize: 1, maxSizeRollBackups: 2, 
rollingLockStrategy: RollingFileAppender.RollingLockStrategyKind.LocalMutex);
+                               RollingFileAppender appender = 
(RollingFileAppender)log.Repository.GetAppenders()[0];
+
                                syncObject = new Mutex(false, 
appender.File.Replace("\\", "_").Replace(":", "_").Replace("/", "_"));
                                syncObject.WaitOne();
 
                                // Logger should acquire Mutex in different 
thread
-                               var write1 = Task.Factory.StartNew(()=> 
Assert.DoesNotThrow(delegate { log.Log(GetType(), Level.Info, "1", null); }));
+                               var loggerThread = new Thread(o => 
Assert.DoesNotThrow(delegate { log.Log(GetType(), Level.Info, "1", null); }));
+                               loggerThread.Start();
                                // Wait some time 
-                               WaitForStart(write1);
+                               Thread.Sleep(2000);
 
                                // Since Mutex already locked, log file should 
be empty
                                AssertFileEquals(filename, string.Empty, 
cleanup: false);
 
                                syncObject.ReleaseMutex();
-                               write1.Wait();
+
+                               loggerThread.Join(1000);
 
                                DestroyLogger();
                                AssertFileEquals(filename, "1" + 
Environment.NewLine);
@@ -1817,20 +1818,8 @@ namespace log4net.Tests.Appender
                        finally
                        {
                                if (syncObject != null)
-                               {
                                        syncObject.Dispose();
-                               }
-
-                       }
-               }
-               private void WaitForStart(Task write1)
-               {
-                       while (write1.Status != TaskStatus.Running)
-                       {
-                               Thread.Sleep(100);
                        }
-
-                       Thread.Sleep(800);
                }
 #endif
 

Reply via email to