Пример #1
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");
        }
Пример #2
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");
        }