Example #1
0
        public MatchResult MatchWindow(Rectangle?region, IList <Trigger> userInputs, string tag, bool shouldRunOnceOnRetryTimeout, bool replaceLast,
                                       ICheckSettingsInternal checkSettingsInternal, string source, string domUrl = null)
        {
            ImageMatchSettings imageMatchSettings = CreateImageMatchSettings(checkSettingsInternal, eyes_);
            int retryTimeout = checkSettingsInternal.GetTimeout();

            if (retryTimeout < 0)
            {
                retryTimeout = defaultRetryTimeout_;
            }

            Logger_.Verbose("retryTimeout: {0} ; replaceLast: {1}", retryTimeout, replaceLast);
            EyesScreenshot screenshot = TakeScreenshot_(
                region, userInputs, tag, shouldRunOnceOnRetryTimeout,
                replaceLast, checkSettingsInternal, imageMatchSettings, retryTimeout, source);

            if (replaceLast)
            {
                return(matchResult_);
            }

            UpdateLastScreenshot_(screenshot);

            return(matchResult_);
        }
Example #2
0
 private void CollectRegions_(ImageMatchSettings imageMatchSettings, ICheckSettingsInternal checkSettingsInternal)
 {
     imageMatchSettings.Ignore        = ConvertSimpleRegions(checkSettingsInternal.GetIgnoreRegions(), imageMatchSettings.Ignore);
     imageMatchSettings.Content       = ConvertSimpleRegions(checkSettingsInternal.GetContentRegions(), imageMatchSettings.Content);
     imageMatchSettings.Layout        = ConvertSimpleRegions(checkSettingsInternal.GetLayoutRegions(), imageMatchSettings.Layout);
     imageMatchSettings.Strict        = ConvertSimpleRegions(checkSettingsInternal.GetStrictRegions(), imageMatchSettings.Strict);
     imageMatchSettings.Floating      = ConvertFloatingRegions(checkSettingsInternal.GetFloatingRegions(), imageMatchSettings.Floating);
     imageMatchSettings.Accessibility = ConvertAccessibilityRegions(checkSettingsInternal.GetAccessibilityRegions(), imageMatchSettings.Accessibility);
 }
 private static void CollectSimpleRegions_(ICheckSettingsInternal checkSettingsInternal,
                                           ImageMatchSettings imageMatchSettings, EyesBase eyes,
                                           EyesScreenshot screenshot)
 {
     imageMatchSettings.Ignore  = CollectSimpleRegions_(eyes, screenshot, checkSettingsInternal.GetIgnoreRegions(), "Ignore");
     imageMatchSettings.Strict  = CollectSimpleRegions_(eyes, screenshot, checkSettingsInternal.GetStrictRegions(), "Strict");
     imageMatchSettings.Layout  = CollectSimpleRegions_(eyes, screenshot, checkSettingsInternal.GetLayoutRegions(), "Layout");
     imageMatchSettings.Content = CollectSimpleRegions_(eyes, screenshot, checkSettingsInternal.GetContentRegions(), "Content");
 }
Example #4
0
 public static void CollectRegions(EyesBase eyes, EyesScreenshot screenshot,
                                   ICheckSettingsInternal checkSettingsInternal, ImageMatchSettings imageMatchSettings)
 {
     eyes.Logger.Verbose("enter");
     CollectSimpleRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
     CollectFloatingRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
     CollectAccessibilityRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
     LogRegions_(eyes.Logger, imageMatchSettings);
     eyes.Logger.Verbose("exit");
 }
        public static ImageMatchSettings CreateImageMatchSettings(ICheckSettingsInternal checkSettingsInternal, EyesBase eyes, EyesScreenshot screenshot)
        {
            ImageMatchSettings imageMatchSettings = CreateImageMatchSettings(checkSettingsInternal, eyes);

            if (imageMatchSettings != null)
            {
                CollectSimpleRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
                CollectFloatingRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
                CollectAccessibilityRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
            }
            eyes.Logger.Log(TraceLevel.Info, eyes.TestId, Stage.Check, new { regions = imageMatchSettings });
            return(imageMatchSettings);
        }
Example #6
0
        private static void CollectFloatingRegions_(ICheckSettingsInternal checkSettingsInternal,
                                                    ImageMatchSettings imageMatchSettings, EyesBase eyes,
                                                    EyesScreenshot screenshot)
        {
            eyes.Logger.Verbose("enter");
            List <FloatingMatchSettings> floatingRegions = new List <FloatingMatchSettings>();

            foreach (IGetFloatingRegion regionProvider in checkSettingsInternal.GetFloatingRegions())
            {
                floatingRegions.AddRange(regionProvider.GetRegions(eyes, screenshot));
            }
            imageMatchSettings.Floating = floatingRegions.ToArray();
            eyes.Logger.Verbose("exit");
        }
 private AppOutput GetAppOutput_(Rectangle?region, ICheckSettingsInternal checkSettingsInternal,
                                 ImageMatchSettings imageMatchSettings)
 {
     try
     {
         var appOutput = getAppOutput_(region, checkSettingsInternal, imageMatchSettings);
         return(appOutput);
     }
     catch (Exception ex)
     {
         CommonUtils.LogExceptionStackTrace(logger_, Stage.Check, ex, eyes_.TestId);
         throw;
     }
 }
Example #8
0
        private static void CollectAccessibilityRegions_(ICheckSettingsInternal checkSettingsInternal,
                                                         ImageMatchSettings imageMatchSettings, EyesBase eyes,
                                                         EyesScreenshot screenshot)
        {
            eyes.Logger.Verbose("enter");
            List <AccessibilityRegionByRectangle> accessibilityRegions = new List <AccessibilityRegionByRectangle>();

            foreach (IGetAccessibilityRegion regionProvider in checkSettingsInternal.GetAccessibilityRegions())
            {
                accessibilityRegions.AddRange(regionProvider.GetRegions(eyes, screenshot));
            }
            imageMatchSettings.Accessibility = accessibilityRegions.ToArray();
            eyes.Logger.Verbose("exit");
        }
        private static void CollectAccessibilityRegions_(ICheckSettingsInternal checkSettingsInternal,
                                                         ImageMatchSettings imageMatchSettings, EyesBase eyes,
                                                         EyesScreenshot screenshot)
        {
            List <AccessibilityRegionByRectangle> accessibilityRegions = new List <AccessibilityRegionByRectangle>();

            foreach (IGetAccessibilityRegion regionProvider in checkSettingsInternal.GetAccessibilityRegions())
            {
                accessibilityRegions.AddRange(regionProvider.GetRegions(eyes, screenshot));
            }
            imageMatchSettings.Accessibility = accessibilityRegions.ToArray();
            eyes.Logger.Log(TraceLevel.Debug, eyes.TestId, Stage.Check,
                            new { type = "accessibility", regions = accessibilityRegions });
        }
        private static void CollectFloatingRegions_(ICheckSettingsInternal checkSettingsInternal,
                                                    ImageMatchSettings imageMatchSettings, EyesBase eyes,
                                                    EyesScreenshot screenshot)
        {
            List <FloatingMatchSettings> floatingRegions = new List <FloatingMatchSettings>();

            foreach (IGetFloatingRegion regionProvider in checkSettingsInternal.GetFloatingRegions())
            {
                floatingRegions.AddRange(regionProvider.GetRegions(eyes, screenshot));
            }
            imageMatchSettings.Floating = floatingRegions.ToArray();
            eyes.Logger.Log(TraceLevel.Debug, eyes.TestId, Stage.Check,
                            new { type = "floating", regions = floatingRegions });
        }
Example #11
0
        public static ImageMatchSettings CreateImageMatchSettings(ICheckSettingsInternal checkSettingsInternal, EyesBase eyes, EyesScreenshot screenshot)
        {
            eyes.Logger.Verbose("enter");
            ImageMatchSettings imageMatchSettings = CreateImageMatchSettings(checkSettingsInternal, eyes);

            if (imageMatchSettings != null)
            {
                CollectSimpleRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
                CollectFloatingRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
                CollectAccessibilityRegions_(checkSettingsInternal, imageMatchSettings, eyes, screenshot);
                LogRegions_(eyes.Logger, imageMatchSettings);
            }
            eyes.Logger.Verbose("exit");
            return(imageMatchSettings);
        }
Example #12
0
        public MatchResult PerformMatch(AppOutputWithScreenshot appOutput,
                                        string tag, bool ignoreMismatch,
                                        ICheckSettingsInternal checkSettingsInternal,
                                        ImageMatchSettings imageMatchSettings,
                                        IList <IRegion> regions,
                                        IList <VisualGridSelector[]> regionSelectors,
                                        EyesBase eyes, string source, string renderId = null)
        {
            EyesScreenshot screenshot    = appOutput.Screenshot;
            string         agentSetupStr = eyes.GetAgentSetupString();

            CollectRegions_(imageMatchSettings, regions, regionSelectors);
            CollectRegions_(imageMatchSettings, checkSettingsInternal);
            return(PerformMatch_(new Trigger[0], appOutput, tag, ignoreMismatch, imageMatchSettings, agentSetupStr, source, renderId));
        }
Example #13
0
        public static ImageMatchSettings CreateImageMatchSettings(ICheckSettingsInternal checkSettingsInternal, EyesBase eyes)
        {
            ImageMatchSettings imageMatchSettings = null;

            if (checkSettingsInternal != null)
            {
                imageMatchSettings                       = eyes.DefaultMatchSettings.Clone();
                imageMatchSettings.MatchLevel            = checkSettingsInternal.GetMatchLevel() ?? eyes.MatchLevel;
                imageMatchSettings.IgnoreCaret           = checkSettingsInternal.GetIgnoreCaret() ?? eyes.IgnoreCaret;
                imageMatchSettings.UseDom                = checkSettingsInternal.GetUseDom() ?? eyes.UseDom;
                imageMatchSettings.EnablePatterns        = checkSettingsInternal.GetEnablePatterns() ?? eyes.EnablePatterns;
                imageMatchSettings.IgnoreDisplacements   = checkSettingsInternal.GetIgnoreDisplacements() ?? eyes.Config.IgnoreDisplacements;
                imageMatchSettings.AccessibilitySettings = eyes.Config.AccessibilityValidation;
            }
            return(imageMatchSettings);
        }
Example #14
0
        private AppOutputWithScreenshot GetAppOutput_(Rectangle?region, ICheckSettingsInternal checkSettingsInternal, ImageMatchSettings imageMatchSettings)
        {
            var sw = Stopwatch.StartNew();

            try
            {
                var appOutput = getAppOutput_(region, checkSettingsInternal, imageMatchSettings);
                Logger_.Verbose("completed in {0}ms", sw.ElapsedMilliseconds);

                return(appOutput);
            }
            catch (Exception ex)
            {
                Logger_.Log("failed in {0}ms - {1}", sw.ElapsedMilliseconds, ex);
                throw;
            }
        }
        SizeMode ICheckSettingsInternal.GetSizeMode()
        {
            ICheckSettingsInternal checkSettingsInternal = this;
            bool      stitchContent = checkSettingsInternal.GetStitchContent() ?? false;
            Rectangle?region        = checkSettingsInternal.GetTargetRegion();

            if (region == null && GetTargetSelector() == null)
            {
                return(stitchContent ? SizeMode.FullPage : SizeMode.Viewport);
            }
            else if (region != null)
            {
                return(SizeMode.Region);
            }
            else /* if (selector != null) */
            {
                return(SizeMode.Selector);
            }
        }
Example #16
0
        private List <RenderRequest> BuildRenderRequests_(FrameData currentFrame, IDictionary <string, RGridResource> resourceMapping)
        {
            Uri      url = currentFrame.Url;
            RGridDom dom = new RGridDom(currentFrame.Cdt, resourceMapping, url, logger_, "buildRenderRequests");

            //Create RG requests
            List <RenderRequest>   allRequestsForRG = new List <RenderRequest>();
            ICheckSettingsInternal csInternal       = (ICheckSettingsInternal)settings_;

            foreach (VisualGridTask task in taskList_)
            {
                RenderBrowserInfo browserInfo = task.BrowserInfo;
                RenderInfo        renderInfo  = new RenderInfo(browserInfo.Width, browserInfo.Height,
                                                               csInternal.GetSizeMode(), csInternal.GetTargetSelector(),
                                                               csInternal.GetTargetRegion(), browserInfo.EmulationInfo, browserInfo.IosDeviceInfo);

                List <VisualGridSelector> regionSelectors = new List <VisualGridSelector>();
                if (regionSelectors_ != null)
                {
                    foreach (VisualGridSelector[] vgs in regionSelectors_)
                    {
                        regionSelectors.AddRange(vgs);
                    }
                }

                RenderRequest request = new RenderRequest(renderingInfo_.ResultsUrl, url,
                                                          renderingInfo_.StitchingServiceUrl, dom,
                                                          resourceMapping, renderInfo, browserInfo.Platform,
                                                          browserInfo.BrowserType, csInternal.GetScriptHooks(),
                                                          regionSelectors.ToArray(), csInternal.GetSendDom() ?? false, task,
                                                          csInternal.GetVisualGridOptions());

                allRequestsForRG.Add(request);
            }
            return(allRequestsForRG);
        }
Example #17
0
        private EyesScreenshot TryTakingScreenshot_(Rectangle?region, IList <Trigger> userInputs, string tag, bool replaceLast, ICheckSettingsInternal checkSettingsInternal,
                                                    ImageMatchSettings imageMatchSettings, string source)
        {
            Logger_.Verbose("enter");
            AppOutputWithScreenshot appOutputWithScreenshot = GetAppOutput_(region, checkSettingsInternal, imageMatchSettings);
            EyesScreenshot          screenshot = appOutputWithScreenshot.Screenshot;
            AppOutput appOutput             = appOutputWithScreenshot.AppOutput;
            string    currentScreenshotHash = screenshot == null ? appOutput.ScreenshotUrl : CommonUtils.GetSha256Hash(appOutput.ScreenshotBytes);

            Logger_.Verbose("current screenshot hash: {0}", currentScreenshotHash);
            if (lastScreenshotHash_ == currentScreenshotHash)
            {
                Logger_.Log("second screenshot is the same as the first, no point in uploading to server.");
            }
            else
            {
                matchResult_ = PerformMatch(userInputs, appOutputWithScreenshot, tag,
                                            replaceLast || (lastScreenshotHash_ != null), imageMatchSettings, eyes_, source);
                lastScreenshotHash_ = currentScreenshotHash;
            }
            Logger_.Verbose("exit");
            return(screenshot);
        }
Example #18
0
        private EyesScreenshot RetryTakingScreenshot_(Rectangle?region, IList <Trigger> userInputs, string tag, bool replaceLast, ICheckSettingsInternal checkSettingsInternal,
                                                      ImageMatchSettings imageMatchSettings, int retryTimeout, string source)
        {
            Logger_.Verbose("enter");
            // Retry matching and ignore mismatches while the retry timeout does not expires.
            var            sw2        = Stopwatch.StartNew();
            EyesScreenshot screenshot = null;

            while (sw2.ElapsedMilliseconds < retryTimeout)
            {
                Thread.Sleep(MatchInterval_);
                screenshot = TryTakingScreenshot_(region, userInputs, tag, replaceLast, checkSettingsInternal, imageMatchSettings, source);

                if (matchResult_.AsExpected)
                {
                    break;
                }
            }

            if (!matchResult_.AsExpected)
            {
                // Try one last time...
                screenshot = TryTakingScreenshot_(region, userInputs, tag, replaceLast, checkSettingsInternal, imageMatchSettings, source);
            }
            Logger_.Verbose("exit");
            return(screenshot);
        }
Example #19
0
        private EyesScreenshot TakeScreenshot_(Rectangle?region, IList <Trigger> userInputs, string tag,
                                               bool shouldRunOnceOnRetryTimeout, bool replacLast, ICheckSettingsInternal checkSettingsInternal, ImageMatchSettings imageMatchSettings,
                                               int retryTimeout, string source)
        {
            EyesScreenshot screenshot;
            Stopwatch      sw = Stopwatch.StartNew();

            lastScreenshotHash_ = null;
            if (shouldRunOnceOnRetryTimeout || retryTimeout == 0)
            {
                if (retryTimeout > 0)
                {
                    Thread.Sleep(retryTimeout);
                }

                screenshot = TryTakingScreenshot_(region, userInputs, tag, replacLast, checkSettingsInternal, imageMatchSettings, source);
            }
            else
            {
                screenshot = RetryTakingScreenshot_(region, userInputs, tag, replacLast, checkSettingsInternal, imageMatchSettings, retryTimeout, source);
            }

            Logger_.Verbose("Completed in {0}", sw.Elapsed);
            return(screenshot);
        }
        private EyesScreenshot TryTakingScreenshot_(Rectangle?region, IList <Trigger> userInputs, string tag, bool replaceLast, ICheckSettingsInternal checkSettingsInternal,
                                                    ImageMatchSettings imageMatchSettings, string source)
        {
            AppOutput appOutput             = GetAppOutput_(region, checkSettingsInternal, imageMatchSettings);
            string    currentScreenshotHash = appOutput.ScreenshotUrl ?? CommonUtils.GetSha256Hash(appOutput.ScreenshotBytes);

            logger_.Log(TraceLevel.Info, Stage.Check, StageType.CaptureScreenshot,
                        new { currentScreenshotHash, lastScreenshotHash_ });
            if (lastScreenshotHash_ != currentScreenshotHash)
            {
                MatchWindowData data = eyes_.PrepareForMatch(checkSettingsInternal, userInputs, appOutput,
                                                             tag, replaceLast || (lastScreenshotHash_ != null), imageMatchSettings, null, source);

                matchResult_        = eyes_.PerformMatch(data);
                lastScreenshotHash_ = currentScreenshotHash;
            }
            return((EyesScreenshot)appOutput.Screenshot);
        }
Example #21
0
 protected override EyesScreenshot GetScreenshot(Rectangle?targetRegion, ICheckSettingsInternal checkSettingsInternal, ImageMatchSettings imageMatchSettings)
 {
     throw new NotImplementedException();
 }
Example #22
0
 protected override EyesScreenshot GetScreenshot(Rectangle?targetRegion, ICheckSettingsInternal checkSettingsInternal)
 {
     return(new TestEyesScreenshot());
 }
Example #23
0
        public void TestCheckSettingsClone()
        {
            ICheckSettings checkSettings = Target.Window();

            checkSettings = checkSettings.Accessibility(new Rectangle(20, 30, 40, 50), AccessibilityRegionType.GraphicalObject);
            checkSettings = checkSettings.BeforeRenderScreenshotHook("Test Hook");
            checkSettings = checkSettings.Content(new Rectangle(10, 20, 30, 40));
            checkSettings = checkSettings.EnablePatterns(true);
            checkSettings = checkSettings.Floating(new Rectangle(30, 40, 50, 60), 1, 2, 3, 4);
            checkSettings = checkSettings.Fully(true);
            checkSettings = checkSettings.Ignore(new Rectangle(40, 50, 60, 70));
            checkSettings = checkSettings.IgnoreCaret(true);
            checkSettings = checkSettings.IgnoreDisplacements(true);
            checkSettings = checkSettings.Layout(new Rectangle(50, 60, 70, 80));
            checkSettings = checkSettings.MatchLevel(MatchLevel.Exact);
            checkSettings = checkSettings.SendDom(true);
            checkSettings = checkSettings.Strict(new Rectangle(60, 70, 80, 90));
            checkSettings = checkSettings.Timeout(TimeSpan.FromMinutes(4));
            checkSettings = checkSettings.UseDom(true);
            checkSettings = checkSettings.WithName("Test Name");

            ICheckSettingsInternal clonedCheckSettings = (ICheckSettingsInternal)checkSettings.Clone();

            Assert.AreEqual(null, clonedCheckSettings.GetTargetRegion(), "target region");

            IGetAccessibilityRegion[] getAccessibilityRegions = clonedCheckSettings.GetAccessibilityRegions();
            Assert.AreEqual(1, getAccessibilityRegions.Length, "number of accessibility region getters");
            IList <AccessibilityRegionByRectangle> accessibilityRegions = getAccessibilityRegions[0].GetRegions(null, null);

            Assert.AreEqual(1, accessibilityRegions.Count, "number of accessibility regions");
            AccessibilityRegionByRectangle expectedAccessibilityRegion = new AccessibilityRegionByRectangle(new Rectangle(20, 30, 40, 50), AccessibilityRegionType.GraphicalObject);

            Assert.AreEqual(expectedAccessibilityRegion.Region, accessibilityRegions[0].Region, "accessibility region coordinates");
            Assert.AreEqual(expectedAccessibilityRegion.Type, accessibilityRegions[0].Type, "accessibility region type");

            Assert.AreEqual("Test Hook", clonedCheckSettings.GetScriptHooks()["beforeCaptureScreenshot"]);

            AssertRegion(clonedCheckSettings.GetContentRegions(), new Rectangle(10, 20, 30, 40), "Content");

            Assert.AreEqual(true, clonedCheckSettings.GetEnablePatterns());

            IGetFloatingRegion[] getFloatingRegions = clonedCheckSettings.GetFloatingRegions();
            Assert.AreEqual(1, getFloatingRegions.Length, "number of Floating region getters");
            IList <FloatingMatchSettings> FloatingRegions = getFloatingRegions[0].GetRegions(null, null);

            Assert.AreEqual(1, FloatingRegions.Count, "number of Floating regions");
            FloatingMatchSettings expectedFloatingRegion = new FloatingMatchSettings(30, 40, 50, 60, 1, 2, 3, 4);

            Assert.AreEqual(expectedFloatingRegion, FloatingRegions[0], "Floating region");

            Assert.AreEqual(true, clonedCheckSettings.GetStitchContent(), "fully (stitch content)");

            AssertRegion(clonedCheckSettings.GetIgnoreRegions(), new Rectangle(40, 50, 60, 70), "Ignore");

            Assert.AreEqual(true, clonedCheckSettings.GetIgnoreCaret(), "ignore caret");
            Assert.AreEqual(true, clonedCheckSettings.GetIgnoreDisplacements(), "ignore displacements");

            AssertRegion(clonedCheckSettings.GetLayoutRegions(), new Rectangle(50, 60, 70, 80), "Layout");

            Assert.AreEqual(MatchLevel.Exact, clonedCheckSettings.GetMatchLevel(), "match level");
            Assert.AreEqual(true, clonedCheckSettings.GetSendDom(), "send dom");

            AssertRegion(clonedCheckSettings.GetStrictRegions(), new Rectangle(60, 70, 80, 90), "Strict");

            Assert.AreEqual((int)TimeSpan.FromMinutes(4).TotalMilliseconds, clonedCheckSettings.GetTimeout(), "timeout");
            Assert.AreEqual(true, clonedCheckSettings.GetUseDom(), "use dom");

            Assert.AreEqual("Test Name", clonedCheckSettings.GetName(), "name");
        }
Example #24
0
        private void PollRenderingStatus_(Dictionary <RunningRender, RenderRequest> runningRenders)
        {
            logger_.Verbose("enter");
            List <string> ids       = GetRenderIds_(runningRenders.Keys);
            Stopwatch     stopwatch = Stopwatch.StartNew();

            do
            {
                List <RenderStatusResults> renderStatusResultsList = null;
                try
                {
                    renderStatusResultsList = connector_.RenderStatusById(ids.ToArray());
                }
                catch (Exception e)
                {
                    logger_.Log("Error (3): " + e);
                    continue;
                }
                if (renderStatusResultsList == null || renderStatusResultsList.Count == 0)
                {
                    logger_.Verbose("No reason to sample. (ids.Count: {0})", ids.Count);
                    Thread.Sleep(500);
                    continue;
                }
                if (renderStatusResultsList[0] == null)
                {
                    logger_.Verbose("First element is null. Total number of elements: {0}. Continuing.", renderStatusResultsList.Count);
                    Thread.Sleep(500);
                    continue;
                }
                SampleRenderingStatus_(runningRenders, ids, renderStatusResultsList);

                if (ids.Count > 0)
                {
                    Thread.Sleep(1500);
                }

                logger_.Verbose("ids.Count: {0} ; runtime: {1}", ids.Count, stopwatch.Elapsed);
            } while (ids.Count > 0 && stopwatch.Elapsed < pollTimeout_);

            foreach (string id in ids)
            {
                foreach (KeyValuePair <RunningRender, RenderRequest> kvp in runningRenders)
                {
                    RunningRender renderedRender = kvp.Key;
                    RenderRequest renderRequest  = kvp.Value;
                    if (renderedRender.RenderId.Equals(id, StringComparison.OrdinalIgnoreCase))
                    {
                        VisualGridTask task = runningRenders[renderedRender].Task;
                        logger_.Verbose("removing failed render id: {0}", id);
                        task.SetRenderError(id, "too long rendering(rendering exceeded 150 sec)", renderRequest);
                        break;
                    }
                }
            }

            ICheckSettingsInternal rcInternal = (ICheckSettingsInternal)settings_;

            logger_.Verbose("marking task as complete: {0}", rcInternal.GetName());
            IsTaskComplete = true;
            NotifySuccessAllListeners_();
            logger_.Verbose("exit");
        }