示例#1
0
        public void TestTwoQueriesAtOnce()
        {
            var audit = new UpdateTableAudit(null);

            Assert.AreEqual(0, audit.ExecutingQueries);

            audit.StartOne();
            audit.StartOne();

            Assert.AreEqual(2, audit.ExecutingQueries);
            Assert.AreEqual(2, audit.Queries);

            audit.EndOne(2);
            audit.EndOne(5);

            Assert.AreEqual(0, audit.ExecutingQueries);
            Assert.AreEqual(2, audit.Queries);
            Assert.AreEqual(7, audit.AffectedRows);
        }
示例#2
0
        public void TestManyQueriesAtOnce_MultiThreaded()
        {
            var audit = new UpdateTableAudit(null);

            Assert.AreEqual(0, audit.ExecutingQueries);

            List <Task> tasks = new List <Task>();

            for (int i = 0; i < 50; i++)
            {
                tasks.Add(Task.Run(() => {
                    audit.StartOne();
                    Task.Delay(TimeSpan.FromSeconds(5));
                    audit.EndOne(1);
                }));
            }

            Task.WaitAll(tasks.ToArray());

            Assert.AreEqual(0, audit.ExecutingQueries);
            Assert.AreEqual(50, audit.Queries);
            Assert.IsFalse(audit.Stopwatch.IsRunning);
            Assert.LessOrEqual(audit.Stopwatch.ElapsedMilliseconds, TimeSpan.FromSeconds(10).TotalMilliseconds);
        }