public ProxyExecutionManagerTests()
        {
            this.mockTestHostManager = new Mock <ITestRuntimeProvider>();
            this.mockRequestSender   = new Mock <ITestRequestSender>();
            this.mockTestRunCriteria = new Mock <TestRunCriteria>(new List <string> {
                "source.dll"
            }, 10);
            this.mockDataSerializer    = new Mock <IDataSerializer>();
            this.mockRequestData       = new Mock <IRequestData>();
            this.mockMetricsCollection = new Mock <IMetricsCollection>();
            this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object);

            this.testExecutionManager = new ProxyExecutionManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataSerializer.Object, this.clientConnectionTimeout);

            // Default to shared test host
            this.mockTestHostManager.SetupGet(th => th.Shared).Returns(true);
            this.mockTestHostManager.Setup(
                m => m.GetTestHostProcessStartInfo(
                    It.IsAny <IEnumerable <string> >(),
                    It.IsAny <IDictionary <string, string> >(),
                    It.IsAny <TestRunnerConnectionInfo>()))
            .Returns(new TestProcessStartInfo());
            this.mockTestHostManager.Setup(tmh => tmh.LaunchTestHostAsync(It.IsAny <TestProcessStartInfo>(), It.IsAny <CancellationToken>()))
            .Callback(
                () =>
            {
                this.mockTestHostManager.Raise(thm => thm.HostLaunched += null, new HostProviderEventArgs(string.Empty));
            })
            .Returns(Task.FromResult(true));
        }
        public void HandlePartialRunCompleteShouldCreateNewProxyExecutionManagerIfIsAbortedIsTrue()
        {
            var completeArgs = new TestRunCompleteEventArgs(null, true, true, null, null, TimeSpan.Zero);

            this.mockTestHostManager = new Mock <ITestRuntimeProvider>();
            this.mockRequestSender   = new Mock <ITestRequestSender>();

            this.proxyParallelExecutionManager = new ParallelProxyExecutionManager(this.proxyManagerFunc, 2);

            var tests              = CreateTestCases();
            var testRunCriteria    = new TestRunCriteria(tests, 100);
            var processedTestCases = new List <TestCase>();

            SetupMockManagersForTestCase(processedTestCases, testRunCriteria);

            AutoResetEvent completeEvent = new AutoResetEvent(false);

            SetupHandleTestRunComplete(completeEvent);

            this.proxyParallelExecutionManager.StartTestRun(testRunCriteria, this.mockHandler.Object);
            Assert.IsTrue(completeEvent.WaitOne(taskTimeout), "Test run not completed.");

            this.proxyManagerFuncCalled = false;
            var proxyExecutionManagerManager = new ProxyExecutionManager(this.mockRequestSender.Object, this.mockTestHostManager.Object);

            this.proxyParallelExecutionManager.HandlePartialRunComplete(proxyExecutionManagerManager, completeArgs, null, null, null);

            Assert.IsTrue(this.proxyManagerFuncCalled);
        }
示例#3
0
 public void TestInit()
 {
     this.mockTestHostManager      = new Mock <ITestHostManager>();
     this.mockRequestSender        = new Mock <ITestRequestSender>();
     this.testExecutionManager     = new ProxyExecutionManager(this.mockRequestSender.Object, this.mockTestHostManager.Object, this.testableClientConnectionTimeout);
     this.mockDataCollectionClient = new Mock <IProxyDataCollectionManager>();
 }
示例#4
0
        internal ProxyExecutionManager GetProxyExecutionManager()
        {
            this.SetupAndInitializeTestRequestSender();
            var testExecutionManager = new ProxyExecutionManager(mockRequestData.Object, testRequestSender,
                                                                 mockTestHostManager.Object, mockDataSerializer.Object, clientConnectionTimeout);

            return(testExecutionManager);
        }
 public void TestInit()
 {
     this.mockTestHostManager       = new Mock <ITestRuntimeProvider>();
     this.mockRequestSender         = new Mock <ITestRequestSender>();
     this.testExecutionManager      = new ProxyExecutionManager(this.mockRequestSender.Object, this.mockTestHostManager.Object, this.testableClientConnectionTimeout);
     this.mockDataCollectionManager = new Mock <IProxyDataCollectionManager>();
     this.mockProcessHelper         = new Mock <IProcessHelper>();
     this.proxyExecutionManager     = new ProxyExecutionManagerWithDataCollection(this.mockTestHostManager.Object, this.mockDataCollectionManager.Object);
 }
        internal ProxyExecutionManager GetProxyExecutionManager()
        {
            this.SetupAndInitializeTestRequestSender();
            this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny <string>())).Returns(true);
            var testExecutionManager = new ProxyExecutionManager(mockRequestData.Object, testRequestSender,
                                                                 mockTestHostManager.Object, mockDataSerializer.Object, this.mockFileHelper.Object);

            return(testExecutionManager);
        }
 public void TestInit()
 {
     this.mockTestHostManager = new Mock <ITestRuntimeProvider>();
     this.mockRequestSender   = new Mock <ITestRequestSender>();
     this.mockDataSerializer  = new Mock <IDataSerializer>();
     this.mockRequestData     = new Mock <IRequestData>();
     this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(new NoOpMetricsCollection());
     this.testExecutionManager      = new ProxyExecutionManager(mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataSerializer.Object, this.testableClientConnectionTimeout);
     this.mockDataCollectionManager = new Mock <IProxyDataCollectionManager>();
     this.mockProcessHelper         = new Mock <IProcessHelper>();
     this.proxyExecutionManager     = new ProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object);
 }
示例#8
0
        public ProxyExecutionManagerTests()
        {
            this.mockTestHostManager = new Mock <ITestHostManager>();
            this.mockRequestSender   = new Mock <ITestRequestSender>();
            this.mockTestRunCriteria = new Mock <TestRunCriteria>(new List <string> {
                "source.dll"
            }, 10);
            this.testExecutionManager = new ProxyExecutionManager(this.mockRequestSender.Object, this.mockTestHostManager.Object, this.clientConnectionTimeout);

            // Default to shared test host
            this.mockTestHostManager.SetupGet(th => th.Shared).Returns(true);
        }
        public void ExecutionManagerShouldPassOnLaunchProcessWithDebuggerAttached()
        {
            this.mockFileHelper.Setup(fh => fh.Exists(It.IsAny <string>())).Returns(true);
            Mock <ITestRunEventsHandler> mockTestRunEventsHandler = new Mock <ITestRunEventsHandler>();
            var runCriteria = new Mock <TestRunCriteria>(
                new List <TestCase> {
                new TestCase("A.C.M", new System.Uri("executor://dummy"), "source.dll")
            },
                10);
            var payload = new TestProcessStartInfo();

            this.testExecutionManager = this.GetProxyExecutionManager();

            var completePayload = new TestRunCompletePayload()
            {
                ExecutorUris        = null,
                LastRunTests        = null,
                RunAttachments      = null,
                TestRunCompleteArgs = null
            };
            var completeMessage = new Message()
            {
                MessageType = MessageType.ExecutionComplete, Payload = null
            };

            this.SetupChannelMessage(MessageType.StartTestExecutionWithTests,
                                     MessageType.LaunchAdapterProcessWithDebuggerAttached, payload);

            mockTestRunEventsHandler.Setup(mh => mh.LaunchProcessWithDebuggerAttached(It.IsAny <TestProcessStartInfo>())).Callback(
                () =>
            {
                this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(It.IsAny <string>())).Returns(completeMessage);
                this.mockDataSerializer.Setup(ds => ds.DeserializePayload <TestRunCompletePayload>(completeMessage)).Returns(completePayload);
                this.mockDataSerializer.Setup(ds => ds.SerializeMessage(It.IsAny <string>()))
                .Returns(MessageType.SessionEnd);
                this.RaiseMessageReceived(MessageType.ExecutionComplete);
            });

            var waitHandle = new AutoResetEvent(false);

            mockTestRunEventsHandler.Setup(mh => mh.HandleTestRunComplete(
                                               It.IsAny <TestRunCompleteEventArgs>(),
                                               It.IsAny <TestRunChangedEventArgs>(),
                                               It.IsAny <ICollection <AttachmentSet> >(),
                                               It.IsAny <ICollection <string> >())).Callback(() => waitHandle.Set());

            this.testExecutionManager.StartTestRun(runCriteria.Object, mockTestRunEventsHandler.Object);

            waitHandle.WaitOne();

            // Verify
            mockTestRunEventsHandler.Verify(mtdeh => mtdeh.LaunchProcessWithDebuggerAttached(It.IsAny <TestProcessStartInfo>()), Times.Once);
        }
        public void HandlePartialRunCompleteShouldCreateNewProxyExecutionManagerIfIsAbortedIsTrue()
        {
            var completeArgs = new TestRunCompleteEventArgs(null, true, true, null, null, TimeSpan.Zero);

            this.mockTestHostManager = new Mock <ITestRuntimeProvider>();
            this.mockRequestSender   = new Mock <ITestRequestSender>();
            var parallelExecutionManager = this.SetupExecutionManager(this.proxyManagerFunc, 2, setupTestCases: true);

            this.proxyManagerFuncCalled = false;
            var proxyExecutionManagerManager = new ProxyExecutionManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object);

            parallelExecutionManager.HandlePartialRunComplete(proxyExecutionManagerManager, completeArgs, null, null, null);
            Assert.IsTrue(this.proxyManagerFuncCalled);
        }
 public void TestInit()
 {
     this.mockTestHostManager   = new Mock <ITestRuntimeProvider>();
     this.mockRequestSender     = new Mock <ITestRequestSender>();
     this.mockDataSerializer    = new Mock <IDataSerializer>();
     this.mockRequestData       = new Mock <IRequestData>();
     this.mockMetricsCollection = new Mock <IMetricsCollection>();
     this.mockFileHelper        = new Mock <IFileHelper>();
     this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object);
     this.testExecutionManager      = new ProxyExecutionManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataSerializer.Object, this.mockFileHelper.Object);
     this.mockDataCollectionManager = new Mock <IProxyDataCollectionManager>();
     this.mockProcessHelper         = new Mock <IProcessHelper>();
     this.proxyExecutionManager     = new ProxyExecutionManagerWithDataCollection(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataCollectionManager.Object);
 }
        public ProxyExecutionManagerTests()
        {
            this.mockRequestSender   = new Mock <ITestRequestSender>();
            this.mockTestRunCriteria = new Mock <TestRunCriteria>(new List <string> {
                "source.dll"
            }, 10);
            //this.mockDataSerializer = new Mock<IDataSerializer>();
            this.mockRequestData       = new Mock <IRequestData>();
            this.mockMetricsCollection = new Mock <IMetricsCollection>();
            this.mockRequestData.Setup(rd => rd.MetricsCollection).Returns(this.mockMetricsCollection.Object);

            this.testExecutionManager = new ProxyExecutionManager(this.mockRequestData.Object, this.mockRequestSender.Object, this.mockTestHostManager.Object, this.mockDataSerializer.Object, this.clientConnectionTimeout);

            //this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(null)).Returns(new Message());
            //this.mockDataSerializer.Setup(mds => mds.DeserializeMessage(string.Empty)).Returns(new Message());
        }
        private void SetupReceiveRawMessageAsyncAndDeserializeMessageAndInitialize(string rawMessage, Message message)
        {
            TestHostConnectionInfo connectionInfo;

            connectionInfo = new TestHostConnectionInfo
            {
                Endpoint  = IPAddress.Loopback + ":0",
                Role      = ConnectionRole.Client,
                Transport = Transport.Sockets
            };
            this.mockCommunicationManager = new Mock <ICommunicationManager>();
            this.mockDataSerializer       = new Mock <IDataSerializer>();
            this.testRequestSender        = new TestRequestSender(this.mockCommunicationManager.Object, connectionInfo, this.mockDataSerializer.Object, this.protocolConfig);
            this.mockCommunicationManager.Setup(mc => mc.HostServer(It.IsAny <IPEndPoint>())).Returns(new IPEndPoint(IPAddress.Loopback, 0));
            this.mockCommunicationManager.Setup(mc => mc.WaitForClientConnection(It.IsAny <int>())).Returns(true);
            this.testRequestSender.InitializeCommunication();
            this.mockCommunicationManager.Setup(mc => mc.ReceiveRawMessageAsync(It.IsAny <CancellationToken>())).Returns(Task.FromResult(rawMessage));
            this.mockDataSerializer.Setup(ds => ds.DeserializeMessage(rawMessage)).Returns(message);

            this.testExecutionManager = new ProxyExecutionManager(this.mockRequestData.Object, this.testRequestSender, this.mockTestHostManager.Object, this.mockDataSerializer.Object, this.clientConnectionTimeout);

            this.CheckAndSetProtocolVersion();
        }