Пример #1
0
        public void TestBuildWithChildren()
        {
            BuildRequestData          data   = new BuildRequestData("TestFile", new Dictionary <string, string>(), "TestToolsVersion", new string[0], null);
            BuildRequestConfiguration config = new BuildRequestConfiguration(1, data, "2.0");

            _cache.AddConfiguration(config);

            // Configure the builder to spawn build requests
            MockRequestBuilder builder = (MockRequestBuilder)_host.GetComponent(BuildComponentType.RequestBuilder);

            builder.NewRequests.Add(new FullyQualifiedBuildRequest[1] {
                new FullyQualifiedBuildRequest(config, new string[1] {
                    "requiredTarget1"
                }, true)
            });

            // Create the initial build request
            string[] targets = new string[3] {
                "target1", "target2", "target3"
            };
            BuildRequest request = CreateNewBuildRequest(1, targets);

            // Kick it off
            VerifyEngineStatus(BuildRequestEngineStatus.Uninitialized);
            _engine.InitializeForBuild(new NodeLoggingContext(_host.LoggingService, 0, false));
            _engine.SubmitBuildRequest(request);
            Thread.Sleep(250);
            VerifyEngineStatus(BuildRequestEngineStatus.Active);

            // Wait for the new requests to be spawned by the builder
            WaitForEvent(_newRequestEvent, "NewRequestEvent");
            Assert.Equal(1, _newRequest_Request.BuildRequests[0].ConfigurationId);
            Assert.Single(_newRequest_Request.BuildRequests[0].Targets);
            Assert.Equal("requiredTarget1", _newRequest_Request.BuildRequests[0].Targets[0]);

            // Wait for a moment, because the build request engine thread may not have gotten around
            // to going to the waiting state.
            Thread.Sleep(250);
            VerifyEngineStatus(BuildRequestEngineStatus.Waiting);

            // Report a result to satisfy the build request
            BuildResult result = new BuildResult(_newRequest_Request.BuildRequests[0]);

            result.AddResultsForTarget("requiredTarget1", BuildResultUtilities.GetEmptySucceedingTargetResult());
            _engine.UnblockBuildRequest(new BuildRequestUnblocker(result));

            // Continue the request.
            _engine.UnblockBuildRequest(new BuildRequestUnblocker(request.GlobalRequestId));

            // Wait for the original request to complete
            WaitForEvent(_requestCompleteEvent, "RequestComplete");
            Assert.Equal(request, _requestComplete_Request);
            Assert.Equal(BuildResultCode.Success, _requestComplete_Result.OverallResult);

            VerifyEngineStatus(BuildRequestEngineStatus.Idle);
        }
Пример #2
0
        /// <summary>
        /// Creates a configuration and stores it in the cache.
        /// </summary>
        private void CreateConfiguration(int configId, string file)
        {
            BuildRequestData          data   = new BuildRequestData(file, new Dictionary <string, string>(), "4.0", new string[] { }, null);
            BuildRequestConfiguration config = new BuildRequestConfiguration(configId, data, "4.0");

            config.ProjectInitialTargets = new List <string>();
            config.ProjectDefaultTargets = new List <string>();

            (_host.GetComponent(BuildComponentType.ConfigCache) as IConfigCache).AddConfiguration(config);
        }
Пример #3
0
        public BuildRequestEngine_Tests()
        {
            _host                     = new MockHost();
            _nodeRequestId            = 1;
            _globalRequestId          = 1;
            _engineStatusChangedEvent = new AutoResetEvent(false);
            _requestCompleteEvent     = new AutoResetEvent(false);
            _requestResumedEvent      = new AutoResetEvent(false);
            _newRequestEvent          = new AutoResetEvent(false);
            _newConfigurationEvent    = new AutoResetEvent(false);
            _engineExceptionEvent     = new AutoResetEvent(false);

            _engine = (IBuildRequestEngine)_host.GetComponent(BuildComponentType.RequestEngine);
            _cache  = (IConfigCache)_host.GetComponent(BuildComponentType.ConfigCache);

            ConfigureEngine(_engine);
        }
Пример #4
0
        public RequestBuilder_Tests()
        {
            _nodeRequestId       = 1;
            _host                = new MockHost();
            _host.RequestBuilder = new RequestBuilder();
            ((IBuildComponent)_host.RequestBuilder).InitializeComponent(_host);

            _host.OnLoggingThreadException += this.LoggingException;

            _newBuildRequestsEvent      = new AutoResetEvent(false);
            _buildRequestCompletedEvent = new AutoResetEvent(false);

            _requestBuilder = (IRequestBuilder)_host.GetComponent(BuildComponentType.RequestBuilder);
            _requestBuilder.OnBuildRequestCompleted += this.BuildRequestCompletedCallback;
            _requestBuilder.OnNewBuildRequests      += this.NewBuildRequestsCallback;
        }
Пример #5
0
        public RequestBuilder_Tests()
        {
            _nodeRequestId = 1;
            _host = new MockHost();
            _host.RequestBuilder = new RequestBuilder();
            ((IBuildComponent)_host.RequestBuilder).InitializeComponent(_host);

            _host.OnLoggingThreadException += this.LoggingException;

            _newBuildRequestsEvent = new AutoResetEvent(false);
            _buildRequestCompletedEvent = new AutoResetEvent(false);

            _requestBuilder = (IRequestBuilder)_host.GetComponent(BuildComponentType.RequestBuilder);
            _requestBuilder.OnBuildRequestCompleted += this.BuildRequestCompletedCallback;
            _requestBuilder.OnNewBuildRequests += this.NewBuildRequestsCallback;
        }
Пример #6
0
        public void TestSimpleBuildRequest()
        {
            BuildRequestConfiguration configuration = CreateTestProject(1);

            try
            {
                TestTargetBuilder targetBuilder = (TestTargetBuilder)_host.GetComponent(BuildComponentType.TargetBuilder);
                IConfigCache      configCache   = (IConfigCache)_host.GetComponent(BuildComponentType.ConfigCache);

                configCache.AddConfiguration(configuration);

                BuildRequest request = CreateNewBuildRequest(1, new string[1] {
                    "target1"
                });
                BuildRequestEntry entry  = new BuildRequestEntry(request, configuration);
                BuildResult       result = new BuildResult(request);
                result.AddResultsForTarget("target1", GetEmptySuccessfulTargetResult());
                targetBuilder.SetResultsToReturn(result);

                _requestBuilder.BuildRequest(GetNodeLoggingContext(), entry);

                WaitForEvent(_buildRequestCompletedEvent, "Build Request Completed");
                Assert.Equal(BuildRequestEntryState.Complete, entry.State);
                Assert.Equal(entry, _buildRequestCompleted_Entry);
                Assert.Equal(BuildResultCode.Success, _buildRequestCompleted_Entry.Result.OverallResult);
            }
            finally
            {
                DeleteTestProject(configuration);
            }
        }
        public BuildRequestEngine_Tests()
        {
            _host = new MockHost();
            _nodeRequestId = 1;
            _globalRequestId = 1;
            _engineStatusChangedEvent = new AutoResetEvent(false);
            _requestCompleteEvent = new AutoResetEvent(false);
            _requestResumedEvent = new AutoResetEvent(false);
            _newRequestEvent = new AutoResetEvent(false);
            _newConfigurationEvent = new AutoResetEvent(false);
            _engineExceptionEvent = new AutoResetEvent(false);

            _engine = (IBuildRequestEngine)_host.GetComponent(BuildComponentType.RequestEngine);
            _cache = (IConfigCache)_host.GetComponent(BuildComponentType.ConfigCache);

            ConfigureEngine(_engine);
        }