@Test public void return_project_measure() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = dbTester.components().insertPrivateProject(organization, p -> p.setDbKey("Project-Key").setName("Project Name").setTagsString("platform,java")); SnapshotDto analysis = dbTester.components().insertSnapshot(project); MetricDto metric1 = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("ncloc")); MetricDto metric2 = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("coverage")); dbTester.measures().insertLiveMeasure(project, metric1, m -> m.setValue(10d)); dbTester.measures().insertLiveMeasure(project, metric2, m -> m.setValue(20d)); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(); assertThat(docsById).hasSize(1); ProjectMeasures doc = docsById.get(project.uuid()); assertThat(doc).isNotNull(); assertThat(doc.getProject().getUuid()).isEqualTo(project.uuid()); assertThat(doc.getProject().getKey()).isEqualTo("Project-Key"); assertThat(doc.getProject().getName()).isEqualTo("Project Name"); assertThat(doc.getProject().getTags()).containsExactly("platform", "java"); assertThat(doc.getProject().getAnalysisDate()).isNotNull().isEqualTo(analysis.getCreatedAt()); assertThat(doc.getMeasures().getNumericMeasures()).containsOnly(entry(metric1.getKey(), 10d), entry(metric2.getKey(), 20d)); }
private static ProjectMeasuresDoc toProjectMeasuresDoc(ProjectMeasures projectMeasures) { ProjectMeasuresIndexerIterator.Project project = projectMeasures.getProject(); Long analysisDate = project.getAnalysisDate(); return new ProjectMeasuresDoc() .setId(project.getUuid()) .setOrganizationUuid(project.getOrganizationUuid()) .setKey(project.getKey()) .setName(project.getName()) .setQualityGateStatus(projectMeasures.getMeasures().getQualityGateStatus()) .setTags(project.getTags()) .setAnalysedAt(analysisDate == null ? null : new Date(analysisDate)) .setMeasuresFromMap(projectMeasures.getMeasures().getNumericMeasures()) .setLanguages(new ArrayList<>(projectMeasures.getMeasures().getNclocByLanguages().keySet())) .setNclocLanguageDistributionFromMap(projectMeasures.getMeasures().getNclocByLanguages()); } }
@Test public void non_main_branches_are_not_indexed() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = dbTester.components().insertPrivateProject(organization); MetricDto metric = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("ncloc")); dbTester.measures().insertLiveMeasure(project, metric, m -> m.setValue(10d)); ComponentDto branch = dbTester.components().insertProjectBranch(project, b -> b.setKey("feature/foo")); dbTester.measures().insertLiveMeasure(branch, metric, m -> m.setValue(20d)); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(); assertThat(docsById).hasSize(1).containsOnlyKeys(project.uuid()); assertThat(docsById.get(project.uuid()).getMeasures().getNumericMeasures().get(metric.getKey())).isEqualTo(10d); }
private static ProjectMeasuresDoc toProjectMeasuresDoc(ProjectMeasures projectMeasures) { ProjectMeasuresIndexerIterator.Project project = projectMeasures.getProject(); Long analysisDate = project.getAnalysisDate(); return new ProjectMeasuresDoc() .setId(project.getUuid()) .setOrganizationUuid(project.getOrganizationUuid()) .setKey(project.getKey()) .setName(project.getName()) .setQualityGateStatus(projectMeasures.getMeasures().getQualityGateStatus()) .setTags(project.getTags()) .setAnalysedAt(analysisDate == null ? null : new Date(analysisDate)) .setMeasuresFromMap(projectMeasures.getMeasures().getNumericMeasures()) .setLanguages(new ArrayList<>(projectMeasures.getMeasures().getNclocByLanguages().keySet())) .setNclocLanguageDistributionFromMap(projectMeasures.getMeasures().getNclocByLanguages()); } }
@Test public void ignore_measure_that_does_not_have_value() { OrganizationDto organization = dbTester.organizations().insert(); MetricDto metric1 = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("coverage")); MetricDto metric2 = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("ncloc")); MetricDto leakMetric = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("new_lines")); ComponentDto project = dbTester.components().insertPrivateProject(organization); dbTester.measures().insertLiveMeasure(project, metric1, m -> m.setValue(10d)); dbTester.measures().insertLiveMeasure(project, leakMetric, m -> m.setValue(null).setVariation(20d)); dbTester.measures().insertLiveMeasure(project, metric2, m -> m.setValue(null).setVariation(null)); Map<String, Double> numericMeasures = createResultSetAndReturnDocsById().get(project.uuid()).getMeasures().getNumericMeasures(); assertThat(numericMeasures).containsOnly(entry(metric1.getKey(), 10d), entry(leakMetric.getKey(), 20d)); }
@Test public void ignore_numeric_measure_that_has_text_value_but_not_numeric_value() { OrganizationDto organization = dbTester.organizations().insert(); MetricDto metric1 = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("coverage")); MetricDto metric2 = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("ncloc")); ComponentDto project = dbTester.components().insertPrivateProject(organization); dbTester.measures().insertLiveMeasure(project, metric1, m -> m.setValue(10d).setData((String) null)); dbTester.measures().insertLiveMeasure(project, metric2, m -> m.setValue(null).setData("foo")); Map<String, Double> numericMeasures = createResultSetAndReturnDocsById().get(project.uuid()).getMeasures().getNumericMeasures(); assertThat(numericMeasures).containsOnly(entry("coverage", 10d)); }
@Test public void does_not_fail_when_quality_gate_has_no_value() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = dbTester.components().insertPrivateProject(organization); MetricDto metric = dbTester.measures().insertMetric(m -> m.setValueType(LEVEL.name()).setKey("alert_status")); dbTester.measures().insertLiveMeasure(project, metric, m -> m.setValue(null).setVariation(null).setData((String) null)); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(); assertThat(docsById.get(project.uuid()).getMeasures().getNumericMeasures()).isEmpty(); }
@Test public void return_project_measure_having_leak() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = dbTester.components().insertPrivateProject(organization, p -> p.setDbKey("Project-Key").setName("Project Name").setTagsString("platform,java")); MetricDto metric = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setKey("new_lines")); dbTester.measures().insertLiveMeasure(project, metric, m -> m.setVariation(10d)); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(); assertThat(docsById.get(project.uuid()).getMeasures().getNumericMeasures()).containsOnly(entry("new_lines", 10d)); }
@Test public void does_not_return_none_numeric_metrics() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = dbTester.components().insertPrivateProject(organization); MetricDto dataMetric = dbTester.measures().insertMetric(m -> m.setValueType(DATA.name()).setKey("data")); MetricDto distribMetric = dbTester.measures().insertMetric(m -> m.setValueType(DISTRIB.name()).setKey("distrib")); MetricDto stringMetric = dbTester.measures().insertMetric(m -> m.setValueType(STRING.name()).setKey("string")); dbTester.measures().insertLiveMeasure(project, dataMetric, m -> m.setData("dat")); dbTester.measures().insertLiveMeasure(project, distribMetric, m -> m.setData("dis")); dbTester.measures().insertLiveMeasure(project, stringMetric, m -> m.setData("str")); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(); assertThat(docsById.get(project.uuid()).getMeasures().getNumericMeasures()).isEmpty(); }
@Test public void does_not_return_disabled_metrics() { OrganizationDto organization = dbTester.organizations().insert(); ComponentDto project = dbTester.components().insertPrivateProject(organization); MetricDto disabledMetric = dbTester.measures().insertMetric(m -> m.setValueType(INT.name()).setEnabled(false).setHidden(false).setKey("disabled")); dbTester.measures().insertLiveMeasure(project, disabledMetric, m -> m.setValue(10d)); Map<String, ProjectMeasures> docsById = createResultSetAndReturnDocsById(); assertThat(docsById.get(project.uuid()).getMeasures().getNumericMeasures()).isEmpty(); }