Exemple #1
0
        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}");
        }