Ejemplo n.º 1
0
        ///<summary>
        /// validate PerfTarget
        ///</summary>
        ///<param name="target">PerfTarget</param>
        /// <returns>ValidationResult</returns>
        public static ValidationResult Validate(PerfTarget target)
        {
            ValidationResult res = new ValidationResult();

            // null check
            if (target == null)
            {
                return(res);
            }

            // validate Category
            if (string.IsNullOrWhiteSpace(target.Category))
            {
                res.Failed = true;
                res.ValidationErrors.Add("category: category cannot be empty");
            }

            //validate Targets
            if (target.Quartiles == null || target.Quartiles.Count != 3)
            {
                res.Failed = true;
                res.ValidationErrors.Add("quartiles: quartiles must have 3 values");
            }

            target.Category = target?.Category?.Trim();

            return(res);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Create a PerfLog
        /// </summary>
        /// <param name="server">server URL</param>
        /// <param name="request">Request</param>
        /// <param name="validationResult">validation errors</param>
        /// <param name="duration">duration</param>
        /// <param name="contentLength">content length</param>
        /// <param name="statusCode">status code</param>
        /// <returns>PerfLog</returns>
        public PerfLog CreatePerfLog(string server, Request request, ValidationResult validationResult, double duration, long contentLength, int statusCode)
        {
            if (validationResult == null)
            {
                throw new ArgumentNullException(nameof(validationResult));
            }

            // map the parameters
            PerfLog log = new PerfLog(validationResult.ValidationErrors)
            {
                Server        = server,
                Tag           = config.Tag,
                Path          = request?.Path ?? string.Empty,
                StatusCode    = statusCode,
                Category      = request?.PerfTarget?.Category ?? string.Empty,
                Validated     = !validationResult.Failed && validationResult.ValidationErrors.Count == 0,
                Duration      = duration,
                ContentLength = contentLength,
                Failed        = validationResult.Failed,
            };

            // determine the Performance Level based on category
            if (targets.ContainsKey(log.Category))
            {
                // lookup the target
                PerfTarget target = targets[log.Category];

                if (target != null &&
                    !string.IsNullOrEmpty(target.Category) &&
                    target.Quartiles != null &&
                    target.Quartiles.Count == 3)
                {
                    // set to max
                    log.Quartile = target.Quartiles.Count + 1;

                    for (int i = 0; i < target.Quartiles.Count; i++)
                    {
                        // find the lowest Perf Target achieved
                        if (duration <= target.Quartiles[i])
                        {
                            log.Quartile = i + 1;
                            break;
                        }
                    }
                }
            }

            return(log);
        }
Ejemplo n.º 3
0
        public void PerfTargetTest()
        {
            ValidationResult res;

            // category can't be blank
            PerfTarget t = new PerfTarget();

            res = Validator.Validate(t);
            Assert.True(res.Failed);

            // quartiles can't be null
            t.Category = "Tests";
            res        = Validator.Validate(t);
            Assert.True(res.Failed);

            // valid
            t.Quartiles = new List <double> {
                100, 200, 400
            };
            res = Validator.Validate(t);
            Assert.False(res.Failed);
        }
Ejemplo n.º 4
0
        public void PerfTargetTest()
        {
            if (string.IsNullOrWhiteSpace(System.Environment.GetEnvironmentVariable("RUN_TEST_COVERAGE")))
            {
                ValidationResult res;

                // category can't be blank
                PerfTarget t = new PerfTarget();
                res = ParameterValidator.Validate(t);
                Assert.True(res.Failed);

                // quartiles can't be null
                t.Category = "Tests";
                res        = ParameterValidator.Validate(t);
                Assert.True(res.Failed);

                // valid
                t.Quartiles = new List <double> {
                    100, 200, 400
                };
                res = ParameterValidator.Validate(t);
                Assert.False(res.Failed);
            }
        }