示例#1
0
        public void SetupChannelShouldCallSetupClientIfRunnerIsClient()
        {
            var connectionInfo = new TestHostConnectionInfo
            {
                Endpoint  = IPAddress.Loopback + ":0",
                Role      = ConnectionRole.Host,
                Transport = Transport.Sockets
            };
            ProtocolConfig protocolConfig = new ProtocolConfig {
                Version = 2
            };
            var mockCommunicationManager = new Mock <ICommunicationManager>();

            mockCommunicationManager.Setup(mc => mc.SetupClientAsync(new IPEndPoint(IPAddress.Loopback, 0)));
            mockCommunicationManager.Setup(mc => mc.WaitForServerConnection(It.IsAny <int>())).Returns(true);
            var mockDataSerializer = new Mock <IDataSerializer>();
            var testRequestSender  = new TestRequestSender(mockCommunicationManager.Object, connectionInfo, mockDataSerializer.Object, new ProtocolConfig {
                Version = 2
            });

            this.mockTestHostManager.Setup(thm => thm.GetTestHostConnectionInfo()).Returns(connectionInfo);
            var message = new Message()
            {
                MessageType = MessageType.VersionCheck, Payload = protocolConfig.Version
            };

            mockCommunicationManager.Setup(mc => mc.ReceiveMessage()).Returns(message);
            mockDataSerializer.Setup(ds => ds.DeserializePayload <int>(It.IsAny <Message>())).Returns(protocolConfig.Version);

            var localTestOperationManager = new TestableProxyOperationManager(testRequestSender, this.mockTestHostManager.Object, this.connectionTimeout);

            localTestOperationManager.SetupChannel(Enumerable.Empty <string>(), CancellationToken.None);

            mockCommunicationManager.Verify(s => s.SetupClientAsync(It.IsAny <IPEndPoint>()), Times.Once);
        }
示例#2
0
        public void SetupChannelShouldCallSetupClientIfRunnerIsClient()
        {
            var connectionInfo = new TestHostConnectionInfo
            {
                Endpoint  = IPAddress.Loopback + ":124",
                Role      = ConnectionRole.Host,
                Transport = Transport.Sockets
            };
            ProtocolConfig protocolConfig = new ProtocolConfig {
                Version = 2
            };
            var mockCommunicationEndpoint = new Mock <ICommunicationEndPoint>();

            mockCommunicationEndpoint.Setup(mc => mc.Start(connectionInfo.Endpoint)).Returns(connectionInfo.Endpoint).Callback(() =>
            {
                mockCommunicationEndpoint.Raise(
                    s => s.Connected += null,
                    mockCommunicationEndpoint.Object,
                    new ConnectedEventArgs(this.mockChannel.Object));
            });

            this.SetupChannelMessage(MessageType.VersionCheck, MessageType.VersionCheck, protocolConfig.Version);
            var testRequestSender = new TestRequestSender(mockCommunicationEndpoint.Object, connectionInfo, mockDataSerializer.Object, new ProtocolConfig {
                Version = 2
            }, CLIENTPROCESSEXITWAIT);

            this.mockTestHostManager.Setup(thm => thm.GetTestHostConnectionInfo()).Returns(connectionInfo);

            var localTestOperationManager = new TestableProxyOperationManager(this.mockRequestData.Object, testRequestSender, this.mockTestHostManager.Object);

            localTestOperationManager.SetupChannel(Enumerable.Empty <string>());

            mockCommunicationEndpoint.Verify(s => s.Start(It.IsAny <string>()), Times.Once);
        }
示例#3
0
        public void SetupChannelShouldThrowIfLaunchTestHostFails()
        {
            SetupTestHostLaunched(false);
            this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout)).Returns(true);

            var operationManager = new TestableProxyOperationManager(this.mockRequestSender.Object, this.mockTestHostManager.Object, this.connectionTimeout);

            Assert.ThrowsException <TestPlatformException>(() => operationManager.SetupChannel(Enumerable.Empty <string>(), CancellationToken.None));
        }
        public void SetupChannelForDotnetHostManagerWithIsVersionCheckRequiredTrueShouldCheckVersionWithTestHost()
        {
            var testHostManager  = new TestableDotnetTestHostManager(true);
            var operationManager = new TestableProxyOperationManager(this.mockRequestSender.Object, testHostManager, this.connectionTimeout);

            operationManager.SetupChannel(Enumerable.Empty <string>());

            this.mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Once);
        }
示例#5
0
        public void SetupChannelForDotnetHostManagerWithIsVersionCheckRequiredTrueShouldCheckVersionWithTestHost()
        {
            this.SetUpMocksForDotNetTestHost();
            var testHostManager  = new TestableDotnetTestHostManager(true, this.mockProcessHelper.Object, this.mockFileHelper.Object, this.mockEnvironment.Object);
            var operationManager = new TestableProxyOperationManager(this.mockRequestSender.Object, testHostManager, this.connectionTimeout);

            operationManager.SetupChannel(Enumerable.Empty <string>(), CancellationToken.None);

            this.mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Once);
        }
示例#6
0
        public void SetupChannelForDotnetHostManagerWithIsVersionCheckRequiredFalseShouldNotCheckVersionWithTestHost()
        {
            this.SetUpMocksForDotNetTestHost();
            var testHostManager  = new TestableDotnetTestHostManager(false, this.mockProcessHelper.Object, this.mockFileHelper.Object, this.mockEnvironment.Object);
            var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, testHostManager);

            operationManager.SetupChannel(Enumerable.Empty <string>());

            this.mockRequestSender.Verify(rs => rs.CheckVersionWithTestHost(), Times.Never);
        }
示例#7
0
        public void SetupChannelShouldThrowIfLaunchTestHostFails()
        {
            SetupTestHostLaunched(false);
            this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny <CancellationToken>())).Returns(true);

            var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object);

            var message = Assert.ThrowsException <TestPlatformException>(() => operationManager.SetupChannel(Enumerable.Empty <string>())).Message;

            Assert.AreEqual(message, string.Format(CultureInfo.CurrentUICulture, Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Resources.Resources.InitializationFailed));
        }
示例#8
0
        public void SetupChannelShouldThrowIfWaitForTestHostConnectionTimesOut()
        {
            SetupTestHostLaunched(true);
            this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny <CancellationToken>())).Returns(false);

            var operationManager = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object);

            var message = Assert.ThrowsException <TestPlatformException>(() => operationManager.SetupChannel(Enumerable.Empty <string>())).Message;

            Assert.AreEqual(message, ProxyOperationManagerTests.TimoutErrorMessage);
        }
示例#9
0
        public void SetupChannelShouldThrowIfRequestCancelled()
        {
            SetupTestHostLaunched(true);
            this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny <CancellationToken>())).Returns(false);

            var cancellationTokenSource = new CancellationTokenSource();
            var operationManager        = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, cancellationTokenSource);

            cancellationTokenSource.Cancel();
            Assert.ThrowsException <OperationCanceledException>(() => operationManager.SetupChannel(Enumerable.Empty <string>()));
        }
        public void SetupChannelShouldThrowTestPlatformExceptionIfRequestCancelled()
        {
            SetupTestHostLaunched(true);
            this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny <CancellationToken>())).Returns(false);

            var cancellationTokenSource = new CancellationTokenSource();
            var operationManager        = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, cancellationTokenSource);

            cancellationTokenSource.Cancel();
            var message = Assert.ThrowsException <TestPlatformException>(() => operationManager.SetupChannel(Enumerable.Empty <string>(), this.defaultRunSettings)).Message;

            StringAssert.Equals("Cancelling the operation as requested.", message);
        }
示例#11
0
        public void SetupChannelShouldThrowTestPlatformExceptionIfRequestCancelledDuringLaunchOfTestHost()
        {
            SetupTestHostLaunched(true);
            this.mockRequestSender.Setup(rs => rs.WaitForRequestHandlerConnection(this.connectionTimeout, It.IsAny <CancellationToken>())).Returns(false);

            this.mockTestHostManager.Setup(rs => rs.LaunchTestHostAsync(It.IsAny <TestProcessStartInfo>(), It.IsAny <CancellationToken>())).Callback(() => Task.Run(() => { throw new OperationCanceledException(); }));

            var cancellationTokenSource = new CancellationTokenSource();
            var operationManager        = new TestableProxyOperationManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, cancellationTokenSource);

            var message = Assert.ThrowsException <TestPlatformException>(() => operationManager.SetupChannel(Enumerable.Empty <string>())).Message;

            StringAssert.Equals("Cancelling the operation as requested.", message);
        }
示例#12
0
        public void UpdateTestProcessStartInfoShouldUpdateTelemetryOptedInArgFalseIfTelemetryOptedOut()
        {
            TestProcessStartInfo receivedTestProcessInfo = new TestProcessStartInfo();
            var mockRequestData = new Mock <IRequestData>();

            mockRequestData.Setup(rd => rd.IsTelemetryOptedIn).Returns(false);

            var testOperationManager = new TestableProxyOperationManager(mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object);

            this.mockTestHostManager
            .Setup(tm => tm.LaunchTestHostAsync(It.IsAny <TestProcessStartInfo>(), It.IsAny <CancellationToken>()))
            .Callback <TestProcessStartInfo, CancellationToken>(
                (testProcessStartInfo, cancellationToken) =>
            {
                receivedTestProcessInfo = testProcessStartInfo;
            })
            .Returns(Task.FromResult(true));

            // Act.
            testOperationManager.SetupChannel(Enumerable.Empty <string>());

            // Verify.
            Assert.IsTrue(receivedTestProcessInfo.Arguments.Contains("--telemetryoptedin false"));
        }