public void ThreadSafetyCheckOnGetOrAdd()
{
InMemoryBudgetBucketRepository subject = Arrange();
var threads = new List<Thread>();
var concurrency = 50;
var options = new ParallelOptions { MaxDegreeOfParallelism = 20 };
ParallelLoopResult result = Parallel.For(
1,
concurrency,
options,
index =>
{
var thread = new Thread(ThreadSafetyCheckOneThread);
threads.Add(thread);
Console.WriteLine("Starting thread " + index);
thread.Start(subject);
});
while (!result.IsCompleted)
{
Thread.Sleep(10);
}
foreach (Thread thread in threads)
{
thread.Join();
Console.WriteLine("Thread finished ");
}
Assert.IsFalse(this.concurrencyFail);
}