/// <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;
 }
Example #5
0
        /// <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);
        }