public void Monitor_CubeNtpServer() { using (var mon = new Ntp.NtpMonitor()) { var start = DateTime.Now; var count = 0; var cts = new CancellationTokenSource(); mon.Server = ""; // test mon.Server = "ntp.cube-soft.jp"; mon.Port = 0; // test mon.Port = 123; mon.Timeout = TimeSpan.FromMilliseconds(500); mon.Subscribe(_ => throw new ArgumentException("Test")); mon.Subscribe(_ => { ++count; cts.Cancel(); }); mon.Start(); mon.Start(); // ignore Assert.That(Wait.For(cts.Token), "Timeout"); mon.Stop(); mon.Stop(); // ignore Assert.That(count, Is.AtLeast(1)); Assert.That(mon.LastPublished.Value, Is.GreaterThan(start)); } }
public void Monitor_NoSubscriptions() => Assert.DoesNotThrow(() => { using (var mon = new Ntp.NtpMonitor()) { mon.Start(); Task.Delay(150).Wait(); mon.Stop(); } });
public void Monitor_InvalidNtpServer() { using (var mon = new Ntp.NtpMonitor()) { var count = 0; mon.Server = "dummy"; mon.Port = 999; mon.Timeout = TimeSpan.FromMilliseconds(100); mon.Subscribe(_ => ++ count); mon.Start(); Task.Delay(150).Wait(); mon.Stop(); Assert.That(count, Is.EqualTo(0)); } }
public void Reset() { using (var mon = new Ntp.NtpMonitor()) { var count = 0; var cts = new CancellationTokenSource(); mon.Server = "ntp.cube-soft.jp"; mon.Port = 123; mon.Timeout = TimeSpan.FromMilliseconds(500); mon.Subscribe(_ => { ++count; cts.Cancel(); }); mon.Start(mon.Interval); mon.Reset(); Assert.That(Wait.For(cts.Token), "Timeout"); mon.Stop(); Assert.That(count, Is.EqualTo(1)); } }