public void CanSyncSetGetMailBoxContent() { const int N = 10; const int SecondsTimeout = 30; var list = new List<int>(); using (var mailBox = new ProcessMailBox("mailBox", TimeSpan.FromMilliseconds(-1))) { var setTask = Task.Factory.StartNew(() => { for (var i = 0; i < N; i++) { mailBox.Content = i; } }); var getTask = Task.Factory.StartNew(() => { for (var i = 0; i < N; i++) { list.Add((int)mailBox.Content); } }); setTask.Wait(TimeSpan.FromSeconds(SecondsTimeout)).Should().BeTrue(); getTask.Wait(TimeSpan.FromSeconds(SecondsTimeout)).Should().BeTrue(); } list.Count.Should().Be(N); for (var i = 0; i < N; i++) { list.Contains(i).Should().BeTrue(); } }
public void CanUseTestObserver() { const string MailBoxName = "box"; const string ErrorText = "error"; using (var mailBox = new ProcessMailBox(MailBoxName, TimeSpan.FromMilliseconds(-1))) { using (var observer = new TestObserver(MailBoxName)) { var list = new List<object>(); var taskObserve = Task.Factory.StartNew( () => { observer.OnNext(PerTestResultGenerator.CreatePerfResult()); observer.OnError(new Exception(ErrorText)); observer.OnCompleted(); }); var taskMailBox = Task.Factory.StartNew( () => { list.Add(mailBox.Content); list.Add(mailBox.Content); list.Add(mailBox.Content); }); Task.WaitAll(new[] { taskObserve, taskMailBox }, TimeSpan.FromSeconds(20)).Should().BeTrue(); list.Count.Should().Be(3); list[0].Should().Be(PerTestResultGenerator.CreatePerfResult()); list[1].Should().Be(new ExperimentError(new Exception(ErrorText))); list[2].Should().Be(new ExperimentCompleted()); } } }
public void CanSetGetMailBoxContent() { const string Content = "Content"; using (var mailBox = new ProcessMailBox("mailBox", TimeSpan.FromMilliseconds(-1))) { mailBox.Content = Content; var value = mailBox.Content; value.ShouldBeEquivalentTo(Content); } }
private static void SendError(Exception ex) { if (string.IsNullOrEmpty(channelName)) { Console.Error.WriteLine(ex.ToString()); } else { using (var mailBox = new ProcessMailBox(channelName, TimeSpan.FromSeconds(5))) { mailBox.Content = new ExperimentError(ex); } } }
public void CanObserveTestRunner() { var setUpCounter = 0; var testCounter = 0; var tearDownCounter = 0; const int Start = 0; const int Step = 7; const int End = 135; const string MailBoxName = "box"; using (var mailBox = new ProcessMailBox(MailBoxName, TimeSpan.FromMilliseconds(-1))) { using (var observer = new TestObserver(MailBoxName)) { var list = new List<PerfTestResult>(); var runner = new TestRunner(i => setUpCounter++, () => testCounter++, () => tearDownCounter++, i => i / 2d, Start, Step, End); var taskObserve = Task.Factory.StartNew( () => { runner.Subscribe(observer); }); var taskMailBox = Task.Factory.StartNew( () => { for (int i = Start; i < End; i += Step) { list.Add((PerfTestResult)mailBox.Content); } }); Task.WaitAll(new[] { taskObserve, taskMailBox }, TimeSpan.FromSeconds(20)).Should().BeTrue(); var count = (int)Math.Ceiling((End - Start + 1) / (double)Step); setUpCounter.Should().Be(count); testCounter.Should().Be(count); tearDownCounter.Should().Be(count); var index = 0; for (var i = Start; i < End; i += Step) { list[index++].Descriptor.Should().Be(i / 2d); } } } }