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,7 +65,10 @@ namespace Microsoft.AspNet.Identity.Test
var fileLogger = logger as TestFileLogger;
string expected = string.Format("{0} for {1}: {2} : Success", methodName, userOrRole, id);
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected));
lock (TestFileLogger.FileLock)
{
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected));
}
}
else
{
@ -78,7 +81,10 @@ namespace Microsoft.AspNet.Identity.Test
if (logger is TestFileLogger)
{
var fileLogger = logger as TestFileLogger;
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expectedLog));
lock (TestFileLogger.FileLock)
{
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expectedLog));
}
}
else
{
@ -94,7 +100,10 @@ namespace Microsoft.AspNet.Identity.Test
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()));
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected));
lock (TestFileLogger.FileLock)
{
Assert.True(File.ReadAllText(fileLogger.FileName).Contains(expected));
}
}
else
{

View File

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

View File

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