public MFTestResults TimerTest0()
{
MFTestResults result = MFTestResults.Pass;
try
{
timerEvent.Reset();
/// Save the current time shifted by 5 hours.
timerTime = DateTime.UtcNow - utcTimeShiftAmount;
using (Timer t = new Timer(new TimerCallback(TimerCallback), null, new TimeSpan(0, 0, 30), new TimeSpan(-TimeSpan.TicksPerMillisecond)))
{
/// We shift the utc back by 5 hours.
TimeService.SetUtcTime(timerTime.Ticks);
/// timer should still fire after 30 seconds even though absolute time has been manipulated.
if (!timerEvent.WaitOne(2 * 60 * 1000, false))
{
result = MFTestResults.Fail;
}
/// Reset the changes.
TimeService.SetUtcTime((DateTime.UtcNow + utcTimeShiftAmount).Ticks);
t.Change(-1, -1);
}
}
catch (Exception ex)
{
Log.Exception("Unexpected exception", ex);
result = MFTestResults.Fail;
}
return result;
}