public void StartAllCheckers() { cancelTokenSource = new CancellationTokenSource(); token = cancelTokenSource.Token; _pingerSettings.LoadSettings(); tasks = new List <Task>(); foreach (var address in _pingerSettings.GetAddresses()) { tasks.Add(new Task(() => { while (true) { if (token.IsCancellationRequested) { Console.WriteLine("Операция завершена: " + address.GetEndPoint()); TasksCanceledCount++; CheckForClose(); return; } switch (address.GetProtocol()) { case "Http": _pingerHttp.CheckConnection(address); break; case "Icmp": _pingerIcmp.CheckConnection(address); break; case "Tcp": _pingerTcp.CheckConnection(address); break; } Console.WriteLine(((IPingerLogSaveble)address).GetSaveLogData()); _pingLogWriter.SaveLog(address as IPingerLogSaveble); if (token.IsCancellationRequested) { Console.WriteLine("Операция завершена: " + address.GetEndPoint()); TasksCanceledCount++; CheckForClose(); return; } Thread.Sleep(address.GetCheckInterval()); } })); } foreach (var task in tasks) { task.Start(); } }
public void CheckConnection() { var addressTcp = _kernel.Get <IAddressTcp>( new ConstructorArgument("baseAddress", "127.0.0.1"), new ConstructorArgument("myProtocolType", "Tcp"), new ConstructorArgument("checkInterval", "5"), new ConstructorArgument("port", "9205") ); string expectedStatus = "Failed"; string actualStatus = _pingerTcp.CheckConnection(addressTcp); Assert.AreEqual(expectedStatus, actualStatus); }