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(); } }
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(); } }