public void ShouldNotifyAfterItemStarted() { ILaunchReporter l = null; ITestReporter t = null; AfterLaunchStartedEventArgs afterLaunchStartedEventArgs = null; AfterTestStartedEventArgs afterTestStartedEventArgs = null; var observer = new Mock <IReportEventsObserver>(); observer.Setup(o => o.Initialize(It.IsAny <IReportEventsSource>())).Callback <IReportEventsSource>(s => { s.OnAfterLaunchStarted += (a, b) => { l = a; afterLaunchStartedEventArgs = b; }; s.OnAfterTestStarted += (a, b) => { t = a; afterTestStartedEventArgs = b; }; }); var extManager = new Shared.Extensibility.ExtensionManager(); extManager.ReportEventObservers.Add(observer.Object); var client = new MockServiceBuilder().Build().Object; var launch = new LaunchReporterBuilder(client).With(extManager).Build(1, 0, 0); launch.Sync(); afterLaunchStartedEventArgs.ClientService.Should().BeSameAs(client); l.Should().BeSameAs(launch); afterTestStartedEventArgs.ClientService.Should().BeSameAs(client); t.Should().BeSameAs(launch.ChildTestReporters[0]); }
public void ShouldNotifyBeforeItemFinishing() { ILaunchReporter l = null; ITestReporter t = null; BeforeLaunchFinishingEventArgs beforeLaunchFinishingEventArgs = null; BeforeTestFinishingEventArgs beforeTestFinishingEventArgs = null; var observer = new Mock <IReportEventsObserver>(); observer.Setup(o => o.Initialize(It.IsAny <IReportEventsSource>())).Callback <IReportEventsSource>(s => { s.OnBeforeLaunchFinishing += (a, b) => { l = a; beforeLaunchFinishingEventArgs = b; }; s.OnBeforeTestFinishing += (a, b) => { t = a; beforeTestFinishingEventArgs = b; }; }); var extManager = new Shared.Extensibility.ExtensionManager(); extManager.ReportEventObservers.Add(observer.Object); var client = new MockServiceBuilder().Build().Object; var launch = new LaunchReporterBuilder(client).With(extManager).Build(1, 0, 0); launch.Sync(); beforeLaunchFinishingEventArgs.ClientService.Should().BeSameAs(client); l.Should().BeSameAs(launch); beforeLaunchFinishingEventArgs.FinishLaunchRequest.Should().NotBeNull(); beforeTestFinishingEventArgs.ClientService.Should().BeSameAs(client); t.Should().BeSameAs(launch.ChildTestReporters[0]); beforeTestFinishingEventArgs.FinishTestItemRequest.Should().NotBeNull(); }
public void ShouldNotBreakReportingIfHandlerThrowsException() { var observer = new Mock <IReportEventsObserver>(); observer.Setup(o => o.Initialize(It.IsAny <IReportEventsSource>())).Callback <IReportEventsSource>(s => { s.OnBeforeLaunchStarting += (a, b) => throw new Exception(); s.OnAfterLaunchStarted += (a, b) => throw new Exception(); s.OnBeforeLaunchFinishing += (a, b) => throw new Exception(); s.OnAfterLaunchFinished += (a, b) => throw new Exception(); s.OnBeforeTestStarting += (a, b) => throw new Exception(); s.OnAfterTestStarted += (a, b) => throw new Exception(); s.OnBeforeTestFinishing += (a, b) => throw new Exception(); s.OnAfterTestFinished += (a, b) => throw new Exception(); }); var extManager = new Shared.Extensibility.ExtensionManager(); extManager.ReportEventObservers.Add(observer.Object); var client = new MockServiceBuilder().Build().Object; var launch = new LaunchReporterBuilder(client).With(extManager).Build(1, 0, 0); Action act = () => launch.Sync(); act.Should().NotThrow(); }
public async Task BigAsyncRealTreeWithEmptySuites() { var launchScheduler = new LaunchReporterBuilder(_service); var launchReporter = launchScheduler.Build(10, 0, 0); launchReporter.Sync(); var launch = await _service.Launch.GetAsync(launchReporter.Info.Uuid); await _service.Launch.DeleteAsync(launch.Id); }
public async Task BigAsyncRealTree() { var extManager = new ExtensionManager(); var launchScheduler = new LaunchReporterBuilder(_service).With(extManager); var launchReporter = launchScheduler.Build(1, 20, 20); launchReporter.Sync(); var launch = await _service.Launch.GetAsync(launchReporter.Info.Uuid); await _service.Launch.DeleteAsync(launch.Id); }
public void StartTestItemTimeout() { var service = new MockServiceBuilder().Build(); service.Setup(s => s.TestItem.StartAsync(It.IsAny <string>(), It.IsAny <StartTestItemRequest>())).Throws <TaskCanceledException>(); var launchScheduler = new LaunchReporterBuilder(service.Object).With(new MockRequestExecuterFactoryBuilder().Build().Object); var launchReporter = launchScheduler.Build(1, 1, 1); var exp = Assert.ThrowsAny <Exception>(() => launchReporter.Sync()); Assert.Contains("Cannot finish launch", exp.Message); }
public void StartLaunchTimeout() { var service = new MockServiceBuilder().Build(); service.Setup(s => s.Launch.StartAsync(It.IsAny <StartLaunchRequest>())).Throws <TaskCanceledException>(); var requestExecuterFactory = new MockRequestExecuterFactoryBuilder().Build(); var launchScheduler = new LaunchReporterBuilder(service.Object).With(requestExecuterFactory.Object); var launchReporter = launchScheduler.Build(1, 1, 1); var exp = Assert.ThrowsAny <Exception>(() => launchReporter.Sync()); }
public void ShouldNotBreakReportingIfInitializtionThrowsException() { var observer = new Mock <IReportEventsObserver>(); observer.Setup(o => o.Initialize(It.IsAny <IReportEventsSource>())).Throws <Exception>(); var extManager = new Shared.Extensibility.ExtensionManager(); extManager.ReportEventObservers.Add(observer.Object); var client = new MockServiceBuilder().Build().Object; var launch = new LaunchReporterBuilder(client).With(extManager).Build(1, 0, 0); Action act = () => launch.Sync(); act.Should().NotThrow(); }
public void SuccessReporting(int suitesPerLaunch, int testsPerSuite, int logsPerTest) { var service = new MockServiceBuilder().Build(); var launchScheduler = new LaunchReporterBuilder(service.Object); var launchReporter = launchScheduler.Build(suitesPerLaunch, testsPerSuite, logsPerTest); launchReporter.Sync(); service.Verify(s => s.TestItem.StartAsync(It.IsAny <StartTestItemRequest>()), Times.Exactly(suitesPerLaunch)); service.Verify(s => s.TestItem.StartAsync(It.IsAny <string>(), It.IsAny <StartTestItemRequest>()), Times.Exactly(testsPerSuite * suitesPerLaunch)); service.Verify(s => s.TestItem.FinishAsync(It.IsAny <string>(), It.IsAny <FinishTestItemRequest>()), Times.Exactly(testsPerSuite * suitesPerLaunch + suitesPerLaunch)); launchReporter.ChildTestReporters.Select(s => s.Info.Uuid).Should().OnlyHaveUniqueItems(); launchReporter.ChildTestReporters.SelectMany(s => s.ChildTestReporters).Select(t => t.Info.Uuid).Should().OnlyHaveUniqueItems(); }
public void ShouldInvokeFormatLogMethod() { var service = new MockServiceBuilder().Build(); var logFormatter = new Mock <ILogFormatter>(); var extensionManager = new Mock <IExtensionManager>(); extensionManager.Setup(p => p.LogFormatters).Returns(new List <ILogFormatter> { logFormatter.Object }); var launchScheduler = new LaunchReporterBuilder(service.Object).With(extensionManager.Object); var launchReporter = launchScheduler.Build(1, 1, 1); launchReporter.Sync(); logFormatter.Verify(lf => lf.FormatLog(It.IsAny <CreateLogItemRequest>()), Times.Once); }
public void FailedLogsShouldNotAffectFinishingLaunch(int suitesPerLaunch, int testsPerSuite, int logsPerTest) { var service = new MockServiceBuilder().Build(); service.Setup(s => s.LogItem.CreateAsync(It.IsAny <CreateLogItemRequest[]>())).Throws <Exception>(); var requestExecuterFactory = new MockRequestExecuterFactoryBuilder().Build(); var launchScheduler = new LaunchReporterBuilder(service.Object).With(requestExecuterFactory.Object); var launchReporter = launchScheduler.Build(suitesPerLaunch, testsPerSuite, logsPerTest); launchReporter.Sync(); service.Verify(s => s.Launch.StartAsync(It.IsAny <StartLaunchRequest>()), Times.Exactly(1)); service.Verify(s => s.TestItem.StartAsync(It.IsAny <StartTestItemRequest>()), Times.Exactly(suitesPerLaunch)); service.Verify(s => s.TestItem.StartAsync(It.IsAny <string>(), It.IsAny <StartTestItemRequest>()), Times.Exactly(testsPerSuite * suitesPerLaunch)); service.Verify(s => s.TestItem.FinishAsync(It.IsAny <string>(), It.IsAny <FinishTestItemRequest>()), Times.Exactly(testsPerSuite * suitesPerLaunch + suitesPerLaunch)); service.Verify(s => s.Launch.FinishAsync(It.IsAny <string>(), It.IsAny <FinishLaunchRequest>()), Times.Once); }
public void FailedStartSuiteItemShouldRaiseExceptionAtFinishLaunch(int suitesPerLaunch, int testsPerSuite, int logsPerTest) { var service = new MockServiceBuilder().Build(); service.Setup(s => s.TestItem.StartAsync(It.IsAny <StartTestItemRequest>())).Throws <Exception>(); var requestExecuterFactory = new MockRequestExecuterFactoryBuilder().Build(); var launchScheduler = new LaunchReporterBuilder(service.Object).With(requestExecuterFactory.Object); var launchReporter = launchScheduler.Build(suitesPerLaunch, testsPerSuite, logsPerTest); var exp = Assert.ThrowsAny <Exception>(() => launchReporter.Sync()); Assert.Contains("Cannot finish launch", exp.Message); service.Verify(s => s.TestItem.StartAsync(It.IsAny <StartTestItemRequest>()), Times.Exactly(suitesPerLaunch)); service.Verify(s => s.TestItem.StartAsync(null, It.IsAny <StartTestItemRequest>()), Times.Never); service.Verify(s => s.TestItem.FinishAsync(null, It.IsAny <FinishTestItemRequest>()), Times.Never); }
public void ShouldBeAbleToChangeRequestBeforeTestStarting() { var observer = new Mock <IReportEventsObserver>(); observer.Setup(o => o.Initialize(It.IsAny <IReportEventsSource>())).Callback <IReportEventsSource>(s => { s.OnBeforeTestStarting += (a, b) => b.StartTestItemRequest.Name = "NewName"; }); var extManager = new Shared.Extensibility.ExtensionManager(); extManager.ReportEventObservers.Add(observer.Object); var client = new MockServiceBuilder().Build().Object; var launch = new LaunchReporterBuilder(client).With(extManager).Build(1, 0, 0); launch.Sync(); launch.ChildTestReporters[0].Info.Name.Should().Be("NewName"); }
public void LogsReportingShouldBeOneByOne() { var requests = new ConcurrentBag <CreateLogItemRequest[]>(); var service = new MockServiceBuilder().Build(); service.Setup(s => s.LogItem.CreateAsync(It.IsAny <CreateLogItemRequest[]>())).ReturnsAsync(new LogItemsCreatedResponse()) .Callback <CreateLogItemRequest[]>((arg) => requests.Add(arg)); var launchScheduler = new LaunchReporterBuilder(service.Object); var launchReporter = launchScheduler.Build(1, 30, 30); launchReporter.Sync(); service.Verify(s => s.Launch.FinishAsync(It.IsAny <string>(), It.IsAny <FinishLaunchRequest>()), Times.Once); service.Verify(s => s.LogItem.CreateAsync(It.IsAny <CreateLogItemRequest[]>()), Times.AtLeast(30 * 30 / 10)); // logs buffer size foreach (var bufferedRequests in requests) { bufferedRequests.Select(r => r.Text).Should().BeInAscendingOrder(); } }