Ejemplo n.º 1
0
        public static bool IsBuildSuccessful(int timeoutInSecs)
        {
            bool isBuildSuccessful = false;

            Ide.WaitUntil(() => {
                var actualStatusMessage = Workbench.GetStatusMessage();
                if (actualStatusMessage == "Build successful.")
                {
                    isBuildSuccessful = true;
                    return(true);
                }
                if (actualStatusMessage == "Build failed.")
                {
                    isBuildSuccessful = false;
                    return(true);
                }
                var match = buildRegex.Match(actualStatusMessage);
                if (match != null && match.Success)
                {
                    isBuildSuccessful = string.Equals(match.Groups ["errors"].ToString(), "0");
                    return(true);
                }
                return(false);
            },
                          pollStep: 5 * 1000,
                          timeout: timeoutInSecs * 1000,
                          timeoutMessage: () => "GetStatusMessage=" + Workbench.GetStatusMessage());

            return(isBuildSuccessful);
        }
Ejemplo n.º 2
0
        public static void WaitForIdeIdle(uint totalTimeoutInSecs = 100, uint idlePeriodInSecs = 10, string[] ignoreMessages = null)
        {
            uint             retriesLeft = (uint)Math.Ceiling((double)totalTimeoutInSecs / (double)idlePeriodInSecs);
            ManualResetEvent resetEvent  = new ManualResetEvent(false);

            if (ignoreMessages != null)
            {
                ignoreStatusMessgaes.AddRange(ignoreMessages);
            }

            var timer = new System.Timers.Timer {
                Interval  = idlePeriodInSecs * 1000,
                AutoReset = true
            };
            bool didTimeout = false;

            var initialStatusMessage = Workbench.GetStatusMessage(waitForNonEmpty: false);

            timer.Elapsed += (sender, e) => {
                if (retriesLeft == 0)
                {
                    didTimeout = true;
                    resetEvent.Set();
                }

                var finalStatusMessage = Workbench.GetStatusMessage(waitForNonEmpty: false);
                var isIdle             = string.Equals(initialStatusMessage, finalStatusMessage) && !ignoreStatusMessgaes.Contains(finalStatusMessage);

                if (!isIdle)
                {
                    retriesLeft--;
                    initialStatusMessage = finalStatusMessage;
                }
                if (isIdle)
                {
                    resetEvent.Set();
                }
            };

            timer.Start();
            resetEvent.WaitOne();
            timer.Stop();
            timer.AutoReset = false;
            timer.Dispose();

            if (didTimeout)
            {
                throw new TimeoutException("Timeout waiting for IDE to be ready and idle");
            }
        }
Ejemplo n.º 3
0
 static void PollStatusMessage(string[] statusMessage, int timeoutInSecs, int pollStepInSecs, bool waitForMessage = true)
 {
     Ide.WaitUntil(() => {
         string actualStatusMessage = string.Empty;
         try {
             actualStatusMessage = Workbench.GetStatusMessage();
             return(waitForMessage == (statusMessage.Contains(actualStatusMessage, StringComparer.OrdinalIgnoreCase)));
         } catch (TimeoutException e) {
             throw new TimeoutException(
                 string.Format("Timed out. Found status message '{0}'\nand expected one of these:\n\t {1}",
                               actualStatusMessage, string.Join("\n\t", statusMessage)), e);
         }
     },
                   pollStep: pollStepInSecs * 1000,
                   timeout: timeoutInSecs * 1000,
                   timeoutMessage: () => "GetStatusMessage=" + Workbench.GetStatusMessage());
 }
Ejemplo n.º 4
0
 public static bool BuildSolution(bool isPass = true, int timeoutInSecs = 360)
 {
     Session.RunAndWaitForTimer(() => Session.ExecuteCommand(ProjectCommands.BuildSolution), "Ide.Shell.ProjectBuilt", timeoutInSecs * 1000);
     return(isPass == Workbench.IsBuildSuccessful(timeoutInSecs));
 }