Using file lock when reading file

This commit is contained in:
Suhas Joshi 2015-01-15 17:12:09 -08:00
parent 7977cf6a46
commit 5bde831eab
3 changed files with 25 additions and 6 deletions

View File

@ -65,8 +65,11 @@ namespace Microsoft.AspNet.Identity.Test
var fileLogger = logger as TestFileLogger; var fileLogger = logger as TestFileLogger;
string expected = string.Format("{0} for {1}: {2} : Success", methodName, userOrRole, id); string expected = string.Format("{0} for {1}: {2} : Success", methodName, userOrRole, id);
lock (TestFileLogger.FileLock)
{
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected)); Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected));
} }
}
else else
{ {
Assert.True(true, "No logger registered"); Assert.True(true, "No logger registered");
@ -78,8 +81,11 @@ namespace Microsoft.AspNet.Identity.Test
if (logger is TestFileLogger) if (logger is TestFileLogger)
{ {
var fileLogger = logger as TestFileLogger; var fileLogger = logger as TestFileLogger;
lock (TestFileLogger.FileLock)
{
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expectedLog)); Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expectedLog));
} }
}
else else
{ {
Assert.True(true, "No logger registered"); Assert.True(true, "No logger registered");
@ -94,8 +100,11 @@ namespace Microsoft.AspNet.Identity.Test
errors = errors ?? new IdentityError[] { new IdentityError() }; errors = errors ?? new IdentityError[] { new IdentityError() };
string expected = string.Format("{0} for {1}: {2} : Failed : {3}", methodName, userOrRole, userId, string.Join(",", errors.Select(x => x.Code).ToList())); string expected = string.Format("{0} for {1}: {2} : Failed : {3}", methodName, userOrRole, userId, string.Join(",", errors.Select(x => x.Code).ToList()));
lock (TestFileLogger.FileLock)
{
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected)); Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected));
} }
}
else else
{ {
Assert.True(true, "No logger registered"); Assert.True(true, "No logger registered");

View File

@ -18,11 +18,14 @@ namespace Microsoft.AspNet.Identity.Test
var directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "IdentityTests"); var directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "IdentityTests");
Directory.CreateDirectory(directory); Directory.CreateDirectory(directory);
FileName = Path.Combine(directory, (name + DateTime.Now.Ticks + "log.txt")); FileName = Path.Combine(directory, (name + DateTime.Now.Ticks + "log.txt"));
lock (FileLock)
{
if (!File.Exists(FileName)) if (!File.Exists(FileName))
{ {
File.Create(FileName).Close(); File.Create(FileName).Close();
} }
} }
}
public IDisposable BeginScope(object state) public IDisposable BeginScope(object state)
{ {

View File

@ -26,9 +26,16 @@ namespace Microsoft.AspNet.Identity.Test
public ILogger Create(string name) public ILogger Create(string name)
{ {
if (!_loggers.ContainsKey(name)) if (!_loggers.ContainsKey(name))
{
try
{ {
_loggers.Add(name, new TestFileLogger(name)); _loggers.Add(name, new TestFileLogger(name));
} }
catch (ArgumentException ex)
{
// Silently skip if there is already a logger with that key
}
}
return _loggers[name]; return _loggers[name];
} }