internal virtual void AddCron(InstrumentationService.Cron cron)
 {
     cron.End();
     Lock.Lock();
     try
     {
         last        = (last + 1) % size;
         full        = full || last == (size - 1);
         total[last] = cron.total;
         own[last]   = cron.own;
     }
     finally
     {
         Lock.Unlock();
     }
 }
示例#2
0
        public virtual void Cron()
        {
            InstrumentationService.Cron cron = new InstrumentationService.Cron();
            NUnit.Framework.Assert.AreEqual(cron.start, 0);
            NUnit.Framework.Assert.AreEqual(cron.lapStart, 0);
            NUnit.Framework.Assert.AreEqual(cron.own, 0);
            NUnit.Framework.Assert.AreEqual(cron.total, 0);
            long begin = Time.Now();

            NUnit.Framework.Assert.AreEqual(cron.Start(), cron);
            NUnit.Framework.Assert.AreEqual(cron.Start(), cron);
            NUnit.Framework.Assert.AreEqual(cron.start, begin, 20);
            NUnit.Framework.Assert.AreEqual(cron.start, cron.lapStart);
            Sleep(100);
            NUnit.Framework.Assert.AreEqual(cron.Stop(), cron);
            long end   = Time.Now();
            long delta = end - begin;

            NUnit.Framework.Assert.AreEqual(cron.own, delta, 20);
            NUnit.Framework.Assert.AreEqual(cron.total, 0);
            NUnit.Framework.Assert.AreEqual(cron.lapStart, 0);
            Sleep(100);
            long reStart = Time.Now();

            cron.Start();
            NUnit.Framework.Assert.AreEqual(cron.start, begin, 20);
            NUnit.Framework.Assert.AreEqual(cron.lapStart, reStart, 20);
            Sleep(100);
            cron.Stop();
            long reEnd = Time.Now();

            delta += reEnd - reStart;
            NUnit.Framework.Assert.AreEqual(cron.own, delta, 20);
            NUnit.Framework.Assert.AreEqual(cron.total, 0);
            NUnit.Framework.Assert.AreEqual(cron.lapStart, 0);
            cron.End();
            NUnit.Framework.Assert.AreEqual(cron.total, reEnd - begin, 20);
            try
            {
                cron.Start();
                NUnit.Framework.Assert.Fail();
            }
            catch (InvalidOperationException)
            {
            }
            catch (Exception)
            {
                NUnit.Framework.Assert.Fail();
            }
            try
            {
                cron.Stop();
                NUnit.Framework.Assert.Fail();
            }
            catch (InvalidOperationException)
            {
            }
            catch (Exception)
            {
                NUnit.Framework.Assert.Fail();
            }
        }