Example #1
0
        /// <summary>Competition metric limit checks and adjustments.</summary>
        /// <param name="summary">Summary for the run.</param>
        /// <returns>Enumerable with warnings for the benchmarks.</returns>
        public IEnumerable <Conclusion> Analyse([NotNull] Summary summary)
        {
            var analysis = new CompetitionAnalysis(Id, summary);

            if (analysis.SafeToContinue && analysis.RunState.IsFirstRun)
            {
                PrepareTargets(analysis);

                PreparePreviousRunLog(analysis);

                CheckPrepairedTargets(analysis);
            }

            if (analysis.SafeToContinue)
            {
                bool checkPassed = CheckTargets(analysis);

                CompleteCheckTargets(analysis, checkPassed);
            }

            if (analysis.RunState.LooksLikeLastRun)
            {
                if (analysis.Options.Annotations.LogAnnotations ||
                    analysis.Targets.HasUnsavedChanges ||
                    !analysis.SafeToContinue)
                {
                    XmlAnnotationStorage.LogXmlAnnotationDoc(analysis.Targets, analysis);
                }
            }

            return(analysis.Conclusions.ToArray());
        }
Example #2
0
        private static void PreparePreviousRunLog(CompetitionAnalysis analysis)
        {
            if (!analysis.SafeToContinue)
            {
                return;
            }

            var logUri = analysis.Options.Annotations.PreviousRunLogUri;

            if (string.IsNullOrEmpty(logUri))
            {
                return;
            }

            var xmlAnnotationDocs = XmlAnnotationStorage.ReadXmlAnnotationDocsFromLog(logUri, analysis);

            if (xmlAnnotationDocs.Length == 0 && analysis.SafeToContinue)
            {
                analysis.WriteWarningMessage($"No XML annotation documents in the log '{logUri}'.");
            }
            if (xmlAnnotationDocs.Length == 0 || !analysis.SafeToContinue)
            {
                return;
            }

            // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression
            if (XmlAnnotationStorage.TryFillCompetitionTargetsFromLog(
                    analysis.Targets,
                    xmlAnnotationDocs,
                    analysis))
            {
                analysis.WriteInfoMessage($"Competition metric limits were updated from log file '{logUri}'.");
            }
            else if (analysis.SafeToContinue)
            {
                analysis.WriteInfoMessage($"Competition metric limits do not require update. Log file: '{logUri}'.");
            }
        }