public void ShouldBeAbleToInstantiateObject() { var timer = new TrySendJobDetailToManagerTimer(_nodeConfiguration, _httpSenderFake, 1000); Assert.IsNotNull(timer); timer.Dispose(); }
public void ShouldHave100JobProgressesWhen100AreAdded() { var timer = new TrySendJobDetailToManagerTimer(_nodeConfiguration, _httpSenderFake, 1000); Assert.IsNotNull(timer, "Should be able to instantiate timer."); for (var i = 0; i < 100; i++) { timer.SendProgress(Guid.NewGuid(), "Progress message"); } Assert.IsTrue(timer.TotalNumberOfJobProgresses() == 100, "100 job progresses are expected."); timer.Dispose(); }
public void ShouldHaveTwoJobProgressesWhenTwoWithSameGuidAreAdded() { var timer = new TrySendJobDetailToManagerTimer(_nodeConfiguration, _httpSenderFake, 1000); Assert.IsNotNull(timer); var newGuid = Guid.NewGuid(); timer.SendProgress(newGuid, "Progress message 1."); timer.SendProgress(newGuid, "Progress message 2."); timer.SendProgress(Guid.NewGuid(), "Progress message 3."); Assert.IsTrue(timer.TotalNumberOfJobProgresses(newGuid) == 2, "Two job progresses with same GUID are expected."); timer.Dispose(); }
public void ShouldBeAbleToSend200ProgressesWith10ConcurrentProcesses() { const int numberOfProgesses = 200; const int numberOfConcurrentProcesses = 10; var timer = new TrySendJobDetailToManagerTimer(_nodeConfiguration, _httpSenderFake, 1000); var numberOfProgressesReceived = 0; timer.SendJobDetailWithSuccessEventHandler += (sender, model) => { numberOfProgressesReceived++; }; List<Task<int>> tasks=new List<Task<int>>(); for (var i = 0; i < numberOfConcurrentProcesses; i++) { tasks.Add(new Task<int>(() => { var newGuid = Guid.NewGuid(); for (var progressLoop = 0; progressLoop < numberOfProgesses; progressLoop++) { timer.SendProgress(newGuid, "Progress message nr : " + progressLoop); } return numberOfProgesses; })); } tasks.Add(new Task<int>(() => { timer.Start(); while (!timer.HasAllProgressesBeenSent()) { } return 0; })); foreach (var task in tasks) { task.Start(); } Task.WaitAll(tasks.ToArray()); int totalNumberOfProgressesSent = tasks.Sum(task => task.Result); Assert.IsTrue(numberOfProgressesReceived == totalNumberOfProgressesSent, "Number of progresses sent must be equal to received."); Assert.IsTrue(timer.HasAllProgressesBeenSent(), "All progresses must be sent."); timer.Dispose(); }