[Test]
public void TestHeavyCreationLoad() {
- int i = 0;
Bucket b = new Bucket();
- while (i < 500) {
+ for (int i = 0; i < 500; ++i)
new Timer(new TimerCallback(Callback),b,10,Timeout.Infinite);
- i++;
- }
// 1000 * 10 msec = 10,000 msec or 10 sec - if everything goes well
- Thread.Sleep(12*500);
+ // we add some slack to cope with timing issues caused by system load etc.
+ for (int i = 0; i < 20; ++i) {
+ if (b.count == 500)
+ break;
+ Thread.Sleep(1000);
+ }
Assert.AreEqual(500,b.count);
}
[Test]
public void TestDelayZeroPeriodZero() {
Bucket b = new Bucket();
- new Timer(new TimerCallback(Callback),b,0,0);
- Thread.Sleep(50);
- Assert.IsTrue(b.count > 45);
+ Timer t = new Timer(new TimerCallback(Callback),b,0,0);
+ Thread.Sleep(100);
+ t.Change (int.MaxValue, Timeout.Infinite);
+ // since period is 0 the callback should happen once (bug #340212)
+ Assert.IsTrue(b.count == 1);
}