///<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); }
/// <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); }
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); }
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); } }