public VerifiedConditionItem(
                [NotNull] QualityConditionVerification qualityConditionVerification)
            {
                Assert.ArgumentNotNull(qualityConditionVerification,
                                       nameof(qualityConditionVerification));

                QualityConditionVerification = qualityConditionVerification;
                QualityCondition qualityCondition =
                    Assert.NotNull(qualityConditionVerification.DisplayableCondition);
                TestDescriptor testDescriptor = qualityCondition.TestDescriptor;

                Name               = qualityCondition.Name;
                Category           = qualityCondition.Category?.GetQualifiedName();
                TestDescriptorName = testDescriptor.Name;
                TestCategories     = GetTestCategories(testDescriptor);
                DatasetNames       = GetDatasetNames(qualityCondition);

                IssueCount = qualityConditionVerification.ErrorCount;

                IssueType = qualityConditionVerification.AllowErrors
                                                    ? IssueType.Warning
                                                    : IssueType.Error;

                StatusImage = IssueCount == 0
                                                      ? _statusImageNoIssues
                                                      : qualityConditionVerification.AllowErrors
                                                              ? _statusImageHasWarnings
                                                              : _statusImageHasErrors;
            }
        public void SetCondition(
            [NotNull] QualityConditionVerification conditionVerification)
        {
            Assert.ArgumentNotNull(conditionVerification, nameof(conditionVerification));

            _verification = conditionVerification;

            QualityCondition displayableCondition = conditionVerification.DisplayableCondition;

            _qualityConditionControl.QualityCondition = displayableCondition;
            _qualityConditionTableViewControl.SetQualityCondition(displayableCondition);
            _testDescriptorControl.TestDescriptor = displayableCondition.TestDescriptor;

            _textBoxIssueCount.Text = _verification.ErrorCount.ToString("N0");

            _textBoxIssueCount.BackColor = GetErrorBackColor(conditionVerification);

            _textBoxIssueType.Text = _verification.AllowErrors
                                                         ? "Warning"
                                                         : "Error";

            // TODO: Handle StopOnError enumeration
            _textBoxStopCondition.Text = _verification.StopCondition == null
                                                             ? "None"
                                                             : string.Format("Stopped after error in {0}",
                                                                             _verification.StopCondition.Name);
            //else if (_verification.StopCondition == _verification.QualityCondition)
            //{
            //    _textBoxStopCondition.Text = "Stopped for this and following tests";
            //}
        }
        private static void AssignExecutionTime(
            [NotNull] ITest test,
            [NotNull] QualityConditionVerification conditionVerification,
            [NotNull] VerificationTimeStats verificationTimes)
        {
            double milliseconds;

            if (verificationTimes.TryGetTestTime(test, out milliseconds))
            {
                conditionVerification.ExecuteTime = milliseconds / 1000.0;
                return;
            }

            var containerTest = test as ContainerTest;

            if (containerTest == null)
            {
                return;
            }

            double rowMilliseconds;
            double tileCompletionMilliseconds;

            if (verificationTimes.TryGetContainerTestTimes(containerTest,
                                                           out rowMilliseconds,
                                                           out tileCompletionMilliseconds))
            {
                conditionVerification.RowExecuteTime  = rowMilliseconds / 1000.0;
                conditionVerification.TileExecuteTime = tileCompletionMilliseconds / 1000.0;
            }
        }
            public VerifiedDatasetItem(
                [NotNull] QualityConditionVerification conditionVerification,
                [NotNull] IDdxDataset dataset,
                double loadTime)
            {
                _conditionVerification = conditionVerification;

                QualityCondition condition = conditionVerification.DisplayableCondition;

                _type = conditionVerification.AllowErrors
                                                ? _allowImage
                                                : !conditionVerification.StopOnError
                                                        ? _continueImage
                                                        : _stopImage;

                _status = conditionVerification.ErrorCount == 0
                                                  ? _noErrorsImage
                                                  : conditionVerification.AllowErrors
                                                          ? _warningImage
                                                          : _errorsImage;

                _testName     = condition.Name;
                _testType     = condition.TestDescriptor.Name;
                _dataLoadTime = loadTime;
                _datasetName  = dataset.AliasName;

                string datasetImageKey = DatasetTypeImageLookup.GetImageKey(dataset);

                _datasetType = _datasetImageList[datasetImageKey];
            }
        private bool IncludeConditionVerification(
            [NotNull] QualityConditionVerification conditionVerification)
        {
            if (conditionVerification.ErrorCount == 0 &&
                _toolStripButtonNoIssues.Checked)
            {
                return(true);
            }

            if (conditionVerification.ErrorCount > 0 &&
                conditionVerification.AllowErrors &&
                _toolStripButtonWarnings.Checked)
            {
                return(true);
            }

            if (conditionVerification.ErrorCount > 0 &&
                !conditionVerification.AllowErrors &&
                _toolStripButtonErrors.Checked)
            {
                return(true);
            }

            return(false);
        }
Beispiel #6
0
        private static QualityConditionVerification FindQualityConditionVerification(
            QualityVerification toOverallVerification, int conditionId)
        {
            QualityConditionVerification conditionVerification =
                toOverallVerification.ConditionVerifications.First(
                    c => Assert.NotNull(c.QualityCondition).Id ==
                    conditionId);

            return(conditionVerification);
        }
        private bool ProcessQaError([NotNull] QaError qaError)
        {
            Assert.ArgumentNotNull(qaError, nameof(qaError));

            if (_msg.IsVerboseDebugEnabled)
            {
                _msg.DebugFormat("Issue found: {0}", qaError);
            }

            // TODO: Consider checking basic relevance (inside test perimeter?) here

            var eventArgs = new QaErrorEventArgs(qaError);

            QaError?.Invoke(this, eventArgs);

            if (eventArgs.Cancel)
            {
                return(false);
            }

            ITest test = qaError.Test;
            QualityConditionVerification conditionVerification =
                GetQualityConditionVerification(test);
            QualityCondition qualityCondition = conditionVerification.QualityCondition;

            Assert.NotNull(qualityCondition, "no quality condition for verification");

            StopInfo stopInfo = null;

            if (conditionVerification.StopOnError)
            {
                stopInfo = new StopInfo(qualityCondition, qaError.Description);

                foreach (InvolvedRow involvedRow in qaError.InvolvedRows)
                {
                    RowsWithStopConditions.Add(involvedRow.TableName,
                                               involvedRow.OID, stopInfo);
                }
            }

            if (!conditionVerification.AllowErrors)
            {
                conditionVerification.Fulfilled = false;

                if (stopInfo != null)
                {
                    // it's a stop condition, and it is a 'hard' condition, and the error is
                    // relevant --> consider the stop situation as sufficiently reported
                    // (no reporting in case of stopped tests required)
                    stopInfo.Reported = true;
                }
            }

            return(true);
        }
Beispiel #8
0
        private static void AddVerification([NotNull] QualityVerificationMsg verificationMsg,
                                            [CanBeNull] QualityVerification toOverallVerification)
        {
            if (toOverallVerification == null)
            {
                return;
            }

            if (verificationMsg.Cancelled)
            {
                toOverallVerification.Cancelled = true;
            }

            foreach (var conditionVerificationMsg in verificationMsg.ConditionVerifications)
            {
                int conditionId = conditionVerificationMsg.QualityConditionId;

                QualityConditionVerification conditionVerification =
                    FindQualityConditionVerification(toOverallVerification, conditionId);

                conditionVerification.ErrorCount      += conditionVerificationMsg.ErrorCount;
                conditionVerification.ExecuteTime     += conditionVerificationMsg.ExecuteTime;
                conditionVerification.RowExecuteTime  += conditionVerificationMsg.RowExecuteTime;
                conditionVerification.TileExecuteTime += conditionVerificationMsg.TileExecuteTime;

                if (!conditionVerificationMsg.Fulfilled)
                {
                    conditionVerification.Fulfilled = false;
                }

                if (conditionVerificationMsg.StopConditionId >= 0)
                {
                    conditionVerification.StopCondition =
                        FindQualityConditionVerification(toOverallVerification,
                                                         conditionVerificationMsg.StopConditionId)
                        .QualityCondition;
                }
            }

            foreach (var datasetMsg in verificationMsg.VerificationDatasets)
            {
                QualityVerificationDataset qualityVerificationDataset =
                    toOverallVerification.VerificationDatasets.First(
                        d => d.Dataset.Id == datasetMsg.DatasetId);

                qualityVerificationDataset.LoadTime += datasetMsg.LoadTime;
            }

            toOverallVerification.ContextName             = verificationMsg.ContextName;
            toOverallVerification.ContextType             = verificationMsg.ContextType;
            toOverallVerification.ProcessorTimeSeconds   += verificationMsg.ProcessorTimeSeconds;
            toOverallVerification.RowsWithStopConditions += verificationMsg.RowsWithStopConditions;
            toOverallVerification.Operator = verificationMsg.UserName;
        }
        public TestVerification([NotNull] QualityConditionVerification verification,
                                int testIndex)
        {
            Assert.ArgumentNotNull(verification, nameof(verification));
            Assert.ArgumentCondition(verification.QualityCondition != null,
                                     "quality condition is undefined");

            QualityConditionVerification = verification;
            QualityCondition             = verification.QualityCondition;

            TestIndex = testIndex;
        }
        private static VerifiedDatasetItem CreateVerifiedDatasetItem(
            [NotNull] QualityVerification qualityVerification,
            [NotNull] Dataset dataset,
            [NotNull] QualityConditionVerification conditionVerification)
        {
            QualityVerificationDataset verifiedDataset =
                qualityVerification.GetVerificationDataset(dataset);

            return(new VerifiedDatasetItem(conditionVerification, dataset,
                                           verifiedDataset == null
                                                               ? 0
                                                               : verifiedDataset.LoadTime));
        }
 private static void LogConditionVerification(
     [NotNull] QualityConditionVerification conditionVerification)
 {
     _msg.DebugFormat("{0}: {1:N0} {2} ({3:N2} ms)",
                      conditionVerification.QualityCondition == null
                                          ? "<null>"
                                          : conditionVerification.QualityCondition.Name,
                      conditionVerification.ErrorCount,
                      conditionVerification.AllowErrors
                                          ? "warning(s)"
                                          : "error(s)",
                      conditionVerification.TotalExecuteTime * 1000);
 }
        private static Color GetErrorBackColor(
            [NotNull] QualityConditionVerification conditionVerification)
        {
            // TODO remove redundancy with QAVerificationForm (same colors used there)

            if (conditionVerification.ErrorCount == 0)
            {
                return(Color.LightGreen);
            }

            return(conditionVerification.AllowErrors
                                       ? Color.Yellow
                                       : Color.FromArgb(255, 100, 100));
        }
        private void SetQualityConditionVerification([CanBeNull] TreeNode node)
        {
            QualityConditionVerification qualityConditionVerification =
                GetQualityConditionVerification(node);

            if (qualityConditionVerification == null)
            {
                _qualityConditionVerificationControl.Clear();
                _groupBoxCondition.Enabled = false;
            }
            else
            {
                SetQualityConditionVerification(qualityConditionVerification);
                _groupBoxCondition.Enabled = true;
            }
        }
        private void SetQualityConditionVerification(
            [NotNull] QualityConditionVerification conditionVerification)
        {
            Assert.ArgumentNotNull(conditionVerification, nameof(conditionVerification));

            _domainTransactionManager.UseTransaction(
                delegate
            {
                QualityCondition condition = conditionVerification.DisplayableCondition;

                if (condition.IsPersistent)
                {
                    _domainTransactionManager.Reattach(condition);
                }

                _qualityConditionVerificationControl.SetCondition(conditionVerification);
            });
        }
Beispiel #15
0
        private List <QualityConditionVerification> GetQualityConditionVerifications(
            [NotNull] QualityVerificationMsg msg)
        {
            List <QualityConditionVerification> conditionVerifications =
                new List <QualityConditionVerification>();

            Dictionary <int, QualityCondition> conditionsById =
                new Dictionary <int, QualityCondition>();

            foreach (var conditionVerificationMsg in msg.ConditionVerifications)
            {
                int qualityConditionId = conditionVerificationMsg.QualityConditionId;

                QualityCondition qualityCondition = GetQualityCondition(
                    qualityConditionId, conditionsById);

                Assert.NotNull(qualityCondition, $"Condition {qualityConditionId} not found");

                // TODO: AllowError/StopOnError
                QualitySpecificationElement element =
                    new QualitySpecificationElement(qualityCondition);

                var conditionVerification = new QualityConditionVerification(element);

                conditionVerification.Fulfilled  = conditionVerificationMsg.Fulfilled;
                conditionVerification.ErrorCount = conditionVerificationMsg.ErrorCount;

                conditionVerification.ExecuteTime     = conditionVerificationMsg.ExecuteTime;
                conditionVerification.RowExecuteTime  = conditionVerificationMsg.RowExecuteTime;
                conditionVerification.TileExecuteTime = conditionVerificationMsg.TileExecuteTime;

                if (conditionVerificationMsg.StopConditionId >= 0)
                {
                    conditionVerification.StopCondition = GetQualityCondition(
                        conditionVerificationMsg.StopConditionId, conditionsById);
                }

                conditionVerifications.Add(conditionVerification);
            }

            return(conditionVerifications);
        }
Beispiel #16
0
        private static TreeNode AddNode([NotNull] TreeNodeCollection nodes,
                                        [NotNull] SpecificationDataset specificationDataset)
        {
            Assert.NotNull(specificationDataset.QualityCondition);

            TreeNode node = nodes.Add(specificationDataset.QualityCondition.Name);

            QualitySpecificationElement element =
                specificationDataset.QualitySpecificationElement;

            if (element != null)
            {
                node.Tag     = element;
                node.Checked = element.Enabled;

                if (element.AllowErrors)
                {
                    node.ImageKey         = _allowErrors;
                    node.SelectedImageKey = _allowErrors;
                }
                else if (element.StopOnError == false)
                {
                    node.ImageKey         = _continueOnErrors;
                    node.SelectedImageKey = _continueOnErrors;
                }
                else
                {
                    node.ImageKey         = _stopOnErrors;
                    node.SelectedImageKey = _stopOnErrors;
                }
            }

            QualityConditionVerification verification =
                specificationDataset.QualityConditionVerification;

            if (verification != null)
            {
                ConfigureVerificationNode(node, verification);
            }

            return(node);
        }
        private bool TryReportStopInfo(
            [NotNull] StopInfo stopInfo,
            [NotNull] IRow row,
            [NotNull] QualityConditionVerification qualityConditionVerification)
        {
            Assert.ArgumentNotNull(stopInfo, nameof(stopInfo));
            Assert.ArgumentNotNull(row, nameof(row));
            Assert.ArgumentNotNull(qualityConditionVerification,
                                   nameof(qualityConditionVerification));

            qualityConditionVerification.StopCondition = stopInfo.QualityCondition;
            QualityCondition stoppedCondition = qualityConditionVerification.QualityCondition;

            Assert.NotNull(stoppedCondition, "stoppedCondition");

            // TODO gather all stopped conditions for the row, report at end
            // https://issuetracker02.eggits.net/browse/COM-248
            IGeometry errorGeom = TestUtils.GetShapeCopy(row);

            IList <ITest> stoppedTests = _testsByCondition[stoppedCondition];

            string description =
                TestExecutionUtils.GetStopInfoErrorDescription(stopInfo);

            foreach (ITest stoppedTest in stoppedTests)
            {
                // TODO add issue code
                var error = new QaError(stoppedTest, description,
                                        new[] { new InvolvedRow(row) },
                                        errorGeom, null, null);
                bool reported = ProcessQaError(error);

                if (reported)
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #18
0
        private static void ConfigureVerificationNode(
            [NotNull] TreeNode node,
            [NotNull] QualityConditionVerification verification)
        {
            node.Tag = verification;

            if (verification.ErrorCount == 0)
            {
                node.ImageKey         = _imageKeyNoIssues;
                node.SelectedImageKey = _imageKeyNoIssues;
            }
            else if (verification.AllowErrors)
            {
                node.ImageKey         = _imageKeyWarning;
                node.SelectedImageKey = _imageKeyWarning;
            }
            else
            {
                node.ImageKey         = _imageKeyError;
                node.SelectedImageKey = _imageKeyError;
            }
        }
 public SpecificationDataset(
     [NotNull] QualityConditionVerification qualityConditionVerification)
 {
     QualityConditionVerification = qualityConditionVerification;
 }