コード例 #1
0
        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]);
        }
コード例 #2
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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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());
        }
コード例 #8
0
        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();
        }
コード例 #9
0
        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();
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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");
        }
コード例 #14
0
        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();
            }
        }