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);
        }
Esempio n. 2
0
 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
 };
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        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);
        }