public void GetValueTest(bool printUnitsInContent, bool printUnitsInHeader, double metricValue, string expected) { var column = new MetricColumn(LocalMetricDescriptor.TimeInstance); var summary = CreateMockSummary(printUnitsInContent, printUnitsInHeader, TimeUnit.Microsecond, metricValue); string actual = column.GetValue(summary, summary.BenchmarksCases.First(), summary.Style); Assert.Equal(expected, actual); }
public MetricColumnModel ConvertMetricColumn(MetricColumn metricColumn) => new MetricColumnModel { Id = metricColumn.Id, Value = metricColumn.Value, FieldName = metricColumn.FieldName, NumberFieldName = metricColumn.NumberFieldName, DivisorValue = metricColumn.DivisorValue, DivisorFieldName = metricColumn.DivisorFieldName, CoverageName = metricColumn.CoverageName, MetricId = metricColumn.MetricId };
private async Task CreateMetricColumn(Metric metric, MetricColumnModel model) { MetricColumn metricColumn = new MetricColumn { Metric = metric, Value = model.Value ?? string.Empty, FieldName = model.FieldName, NumberFieldName = model.NumberFieldName }; if (!string.IsNullOrEmpty(model.CoverageName)) { metricColumn.DivisorValue = model.DivisorValue ?? JazzService.ALL_VALUES; metricColumn.DivisorFieldName = model.DivisorFieldName ?? string.Empty; metricColumn.CoverageName = model.CoverageName; } await Database.MetricColumn.AddAsync(metricColumn); }
/// <summary> /// zpracuje XML pro number metriku /// </summary> /// <param name="projectMetric">projektova metrida</param> /// <param name="results">nactene elementy z XML</param> private void ParseXmlForNumberMetric(ProjectMetric projectMetric, XmlNodeList results) { ProjectMetricSnapshot snapshot = new ProjectMetricSnapshot { InsertionDate = DateTime.Now, ProjectMetric = projectMetric, ProjectMetricColumnValue = new List <ProjectMetricColumnValue>() }; if (results.Count == 1) //je jen jeden sloupec -> to znamena, ze v nem suma a neni treba nic pocitat { if (projectMetric.Metric.MetricColumn.Count > 1) { projectMetric.ProjectMetricLog.Add(new ProjectMetricLog($"Metric #{projectMetric.MetricId} has {projectMetric.Metric.MetricColumn.Count} columns, but in data XML was only one column!")); } MetricColumn column = projectMetric.Metric.MetricColumn.First(); ProjectMetricColumnValue columnValue = new ProjectMetricColumnValue { Value = 0, MetricColumnId = column.Id, ProjectMetricSnapshot = snapshot }; XmlNode value = SelectSingleNodeSpecial(results[0], column.NumberFieldName) ?? SelectSingleNodeSpecial(results[0], FIELD_ID) ?? SelectSingleNodeSpecial(results[0], column.FieldName); if (ParseNodeValue(value, out int numberValue)) { columnValue.Value = numberValue; } else { projectMetric.ProjectMetricLog.Add(new ProjectMetricLog($"Column #{column.Id} of metric #{column.MetricId}, does not have proper tag with numeric value in data XML!")); } snapshot.ProjectMetricColumnValue.Add(columnValue); } else //vice sloupcu { foreach (var column in projectMetric.Metric.MetricColumn) { ProjectMetricColumnValue columnValue = new ProjectMetricColumnValue { Value = 0, MetricColumnId = column.Id, ProjectMetricSnapshot = snapshot }; string[] values = column.Value.Split(';').Select(v => v.Trim().ToLower()).ToArray(); foreach (XmlNode result in results) //hledam hodnoty a jejich pocty, pripadne jen pricitam { XmlNode name = SelectSingleNodeSpecial(result, column.FieldName) ?? SelectSingleNodeSpecial(result, FIELD_VALUE); if (name != null && (values.Contains(name.InnerText.ToLower()) || (values[0] == ANY_VALUE && name.InnerText != string.Empty))) { XmlNode value = SelectSingleNodeSpecial(result, column.NumberFieldName) ?? SelectSingleNodeSpecial(result, FIELD_COUNT); if (ParseNodeValue(value, out int numberValue)) { columnValue.Value += numberValue; } else { columnValue.Value++; } } } snapshot.ProjectMetricColumnValue.Add(columnValue); } } projectMetric.ProjectMetricSnapshot.Add(snapshot); projectMetric.ProjectMetricLog.Add(new ProjectMetricLog($"Snapshot of project metric #{projectMetric.Id} was successfully created!", false)); }
public async Task <BaseResponseModel> Edit(MetricModel request) { BaseResponseModel response = new BaseResponseModel(); if (request.Validate()) { if (await CheckAspiceProcess(request.AspiceProcessId, response)) { if (await CheckMetricType(request.MetricTypeId, response)) { if (await CheckAffectedField(request.AffectedFieldId, response)) { Metric metric = await Load(request.Id, response); if (metric != null && CheckMetricForCrud(metric, response)) { if (await CheckMetricIdentificator(request.Identificator, response, metric.Id) && CheckMetricColumns(request.Columns, response)) { metric.Identificator = request.Identificator; metric.Name = request.Name; metric.Description = request.Description; metric.RequirementGroup = request.RequirementGroup; metric.AspiceProcessId = request.AspiceProcessId; metric.AffectedFieldId = request.AffectedFieldId; //metric.MetricTypeId = request.MetricTypeId; --> nelze menit z duvodu, ze by potom nesedely hodnoty columns - musi se mazat columns metric.Public = CurrentUser.CompanyId.HasValue ? request.Public : true; //smazane var deletedIds = metric.MetricColumn.Select(c => c.Id).Except(request.Columns.Select(c => c.Id)); Database.MetricColumn.RemoveRange(metric.MetricColumn.Where(c => deletedIds.Contains(c.Id))); //nove a editovane for (int i = 0; i < request.Columns.Count; i++) { if (request.Columns[i].Id == 0) { await CreateMetricColumn(metric, request.Columns[i]); } else { MetricColumn column = metric.MetricColumn.First(c => c.Id == request.Columns[i].Id); column.Value = request.Columns[i].Value ?? string.Empty; column.FieldName = request.Columns[i].FieldName; column.NumberFieldName = request.Columns[i].NumberFieldName; if (!string.IsNullOrEmpty(request.Columns[i].CoverageName)) { column.DivisorValue = request.Columns[i].DivisorValue ?? JazzService.ALL_VALUES; column.DivisorFieldName = request.Columns[i].DivisorFieldName ?? string.Empty; column.CoverageName = request.Columns[i].CoverageName; } } } await Database.SaveChangesAsync(); response.Message = "Metric was successfully edited!"; } } } } } } else { response.Success = false; response.Message = "Some of the required properties is not present!"; } return(response); }