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); }
/// <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); }
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); }
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; }
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); } }