/// <summary> /// Callback method when the asynchronous BuildSubmission is completed. The verification done on completed submission is /// that the build completed and succeeded. This is the default behavior. If the verification is to be different then SubmissionCompletedVerificationType /// has to be used. /// </summary> /// <param name="submissionTestExtension">Contains the BuildSubmission for which the request was completed.</param> public void SubmissionCompletedCallback(BuildSubmissionTestExtension submissionTestExtension) { if (this.SubmissionTestExtension.BuildSubmission.BuildRequest.ConfigurationId == submissionTestExtension.BuildSubmission.BuildRequest.ConfigurationId) { this.SubmissionsAreSame = true; } this.SubmissionTestExtensionFromClassBack = submissionTestExtension; this.SubmissionCompletedEvent.Set(); }
/// <summary> /// Callback method when the asynchronous BuildSubmission is completed. The verification done on completed submission is /// that the build completed and succeeded. This is the default behavior. If the verification is to be different then SubmissionCompletedVerificationType /// has to be used. /// </summary> /// <param name="submissionTestExtension">Contains the BuildSubmission for which the request was completed.</param> public void SubmissionCompletedCallback(BuildSubmissionTestExtension submissionTestExtension) { try { submissionTestExtension.Verify.BuildIsCompleted(); if (this.CancelledAfterExecute) { submissionTestExtension.Verify.BuildCompletedButFailed(); } else { submissionTestExtension.Verify.BuildCompletedSuccessfully(); } } finally { this.SubmissionCompletedEvent.Set(); } }
/// <summary> /// Executes each of the requests and waits for all of them to be completed. /// </summary> /// <param name="buildRequests">Array of BuildRequestData to be built.</param> /// <param name="timeout">Number of mili seconds to wait for the pending build requests.</param> /// <param name="waitForCompletion">Should wait for the builds to complete.</param> /// <param name="asyncBuildRequestsStatus">Array of AsyncBuildRequestStatus which contain information about each request executed asynchronously.</param> /// <returns>True if the builds completed successfully.</returns> public bool ExecuteAsyncBuildRequests(BuildRequestData[] buildRequests, int timeout, bool waitForCompletion, out AsyncBuildRequestStatus[] asyncBuildRequestsStatus) { BuildSubmissionTestExtension[] submissionTestExtensions = new BuildSubmissionTestExtension[buildRequests.Length]; AutoResetEvent[] buildCompletedEvents = new AutoResetEvent[buildRequests.Length]; asyncBuildRequestsStatus = new AsyncBuildRequestStatus[buildRequests.Length]; try { for (int i = 0; i < buildRequests.Length; i++) { buildCompletedEvents[i] = new AutoResetEvent(false); submissionTestExtensions[i] = this.PendBuildRequest(buildRequests[i]); asyncBuildRequestsStatus[i] = new AsyncBuildRequestStatus(buildCompletedEvents[i], submissionTestExtensions[i]); submissionTestExtensions[i].ExecuteAsync(asyncBuildRequestsStatus[i].SubmissionCompletedCallback, null); } if (waitForCompletion) { if (!BuildManagerTestExtension.WaitAll(buildCompletedEvents, timeout)) { return(false); } return(true); } else { return(true); } } finally { if (waitForCompletion) { for (int i = 0; i < buildRequests.Length; i++) { buildCompletedEvents[i].Close(); buildCompletedEvents[i] = null; } } } }
/// <summary> /// Initializes a new instance of the AsyncBuildRequestStatus class. /// </summary> /// <param name="submissionCompletedEvent">Event handler which is to be set when the callback is called.</param> /// <param name="submissionTestExtension">Test extension for the submission.</param> public AsyncBuildRequestStatus(AutoResetEvent submissionCompletedEvent, BuildSubmissionTestExtension submissionTestExtension) { this.SubmissionCompletedEvent = submissionCompletedEvent; this.SubmissionTestExtension = submissionTestExtension; this.SubmissionsAreSame = false; }
/// <summary> /// Callback method when the internal asynchronous BuildSubmission is completed. This basically /// creates a new BuildSubmissionTestExtension and calls the clients callback. /// </summary> /// <param name="buildSubmission">BuildSubmission record for which the build was completed.</param> internal void BuildSubmissionCompleteCallback(BuildSubmission buildSubmission) { BuildSubmissionTestExtension submissionTestExtension = new BuildSubmissionTestExtension(buildSubmission); this.SubmissionCompletedCallback(submissionTestExtension); }