public void StubCanHandleLotsOfPreasure() { DateTime beginTime = DateTime.Now; int numberOfWorkers = 100; int numberOfStubsPerWorker = 100; completedWorkers = 0; failedWorkers = 0; /* * for (int i = 0; i < numberOfWorkers * numberOfStubsPerWorker; i++) * { * PushStub(); * } */ List <BackgroundWorker> workers = new List <BackgroundWorker>(); for (int currentWorkerIndex = 0; currentWorkerIndex < numberOfWorkers; currentWorkerIndex++) { BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += PushManyStubs; workers.Add(worker); } workers.ForEach(worker => worker.RunWorkerAsync(numberOfStubsPerWorker)); while ((completedWorkers + failedWorkers) < numberOfWorkers) { Thread.Sleep(100); } DateTime endTime = DateTime.Now; TimeSpan runTime = endTime - beginTime; Assert.AreEqual(0, failedWorkers); Assert.AreEqual(numberOfWorkers * numberOfStubsPerWorker, Stub.Count(_mongoConnection)); Console.Out.WriteLine($"runtime = {runTime}"); }