@Test public void toMeasure_maps_alert_properties_in_dto_for_String_Metric() { ScannerReport.Measure batchMeasure = ScannerReport.Measure.newBuilder() .setStringValue(StringValue.newBuilder().setValue(SOME_DATA)) .build(); Optional<Measure> measure = underTest.toMeasure(batchMeasure, SOME_STRING_METRIC); assertThat(measure.isPresent()).isTrue(); assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.STRING); assertThat(measure.get().getStringValue()).isEqualTo(SOME_DATA); assertThat(measure.get().getData()).isEqualTo(SOME_DATA); }
private static void setValueAccordingToType(ScannerReport.Measure.Builder builder, DefaultMeasure<?> measure) { Serializable value = measure.value(); Metric<?> metric = measure.metric(); if (Boolean.class.equals(metric.valueType())) { builder.setBooleanValue(BoolValue.newBuilder().setValue(((Boolean) value).booleanValue())); } else if (Integer.class.equals(metric.valueType())) { builder.setIntValue(IntValue.newBuilder().setValue(((Number) value).intValue())); } else if (Double.class.equals(metric.valueType())) { builder.setDoubleValue(DoubleValue.newBuilder().setValue(((Number) value).doubleValue())); } else if (String.class.equals(metric.valueType())) { builder.setStringValue(StringValue.newBuilder().setValue((String) value)); } else if (Long.class.equals(metric.valueType())) { builder.setLongValue(LongValue.newBuilder().setValue(((Number) value).longValue())); } else { throw new UnsupportedOperationException("Unsupported type :" + metric.valueType()); } }
@Test public void toMeasure_for_LEVEL_Metric_maps_QualityGateStatus() { ScannerReport.Measure batchMeasure = ScannerReport.Measure.newBuilder() .setStringValue(StringValue.newBuilder().setValue(Measure.Level.OK.name())) .build(); Optional<Measure> measure = underTest.toMeasure(batchMeasure, SOME_LEVEL_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.LEVEL); assertThat(measure.get().getLevelValue()).isEqualTo(Measure.Level.OK); }
private static void setValueAccordingToType(ScannerReport.Measure.Builder builder, DefaultMeasure<?> measure) { Serializable value = measure.value(); Metric<?> metric = measure.metric(); if (Boolean.class.equals(metric.valueType())) { builder.setBooleanValue(BoolValue.newBuilder().setValue(((Boolean) value).booleanValue())); } else if (Integer.class.equals(metric.valueType())) { builder.setIntValue(IntValue.newBuilder().setValue(((Number) value).intValue())); } else if (Double.class.equals(metric.valueType())) { builder.setDoubleValue(DoubleValue.newBuilder().setValue(((Number) value).doubleValue())); } else if (String.class.equals(metric.valueType())) { builder.setStringValue(StringValue.newBuilder().setValue((String) value)); } else if (Long.class.equals(metric.valueType())) { builder.setLongValue(LongValue.newBuilder().setValue(((Number) value).longValue())); } else { throw new UnsupportedOperationException("Unsupported type :" + metric.valueType()); } }
@Test public void getRawMeasures_returns_added_measures_over_batch_measures() { when(reportMetricValidator.validate(METRIC_KEY_1)).thenReturn(true); when(reportMetricValidator.validate(METRIC_KEY_2)).thenReturn(true); ScannerReport.Measure batchMeasure1 = ScannerReport.Measure.newBuilder().setMetricKey(METRIC_KEY_1).setStringValue(StringValue.newBuilder().setValue("some value")).build(); ScannerReport.Measure batchMeasure2 = ScannerReport.Measure.newBuilder().setMetricKey(METRIC_KEY_2).setStringValue(StringValue.newBuilder().setValue("some value")).build(); reportReader.putMeasures(FILE_COMPONENT.getReportAttributes().getRef(), ImmutableList.of(batchMeasure1, batchMeasure2)); Measure addedMeasure = SOME_MEASURE; underTest.add(FILE_COMPONENT, metric1, addedMeasure); SetMultimap<String, Measure> rawMeasures = underTest.getRawMeasures(FILE_COMPONENT); assertThat(rawMeasures.keySet()).hasSize(2); assertThat(rawMeasures.get(METRIC_KEY_1)).containsOnly(addedMeasure); assertThat(rawMeasures.get(METRIC_KEY_2)).containsOnly(Measure.newMeasureBuilder().create("some value")); }
@Test public void getRawMeasure_retrieves_added_measure_over_batch_measure() { when(reportMetricValidator.validate(METRIC_KEY_1)).thenReturn(true); reportReader.putMeasures(FILE_COMPONENT.getReportAttributes().getRef(), ImmutableList.of( ScannerReport.Measure.newBuilder().setMetricKey(METRIC_KEY_1).setStringValue(StringValue.newBuilder().setValue("some value")).build())); Measure addedMeasure = SOME_MEASURE; underTest.add(FILE_COMPONENT, metric1, addedMeasure); Optional<Measure> res = underTest.getRawMeasure(FILE_COMPONENT, metric1); assertThat(res).isPresent(); assertThat(res.get()).isSameAs(addedMeasure); }
@Test public void getRawMeasure_returns_only_validate_measure_from_batch_if_not_added_through_add_method() { when(reportMetricValidator.validate(METRIC_KEY_1)).thenReturn(true); when(reportMetricValidator.validate(METRIC_KEY_2)).thenReturn(false); reportReader.putMeasures(FILE_COMPONENT.getReportAttributes().getRef(), ImmutableList.of( ScannerReport.Measure.newBuilder().setMetricKey(METRIC_KEY_1).setStringValue(StringValue.newBuilder().setValue("value1")).build(), ScannerReport.Measure.newBuilder().setMetricKey(METRIC_KEY_2).setStringValue(StringValue.newBuilder().setValue("value2")).build())); assertThat(underTest.getRawMeasure(FILE_COMPONENT, metric1)).isPresent(); assertThat(underTest.getRawMeasure(FILE_COMPONENT, metric2)).isNotPresent(); }
@Test public void read_measures() { ScannerReportWriter writer = new ScannerReportWriter(dir); ScannerReport.Measure.Builder measure = ScannerReport.Measure.newBuilder() .setStringValue(StringValue.newBuilder().setValue("value_a")); writer.writeComponentMeasures(1, asList(measure.build())); assertThat(underTest.readComponentMeasures(1)).hasSize(1); }
@DataProvider public static Object[][] all_types_batch_measure_builders() { return new Object[][] { {ScannerReport.Measure.newBuilder().setBooleanValue(BoolValue.newBuilder().setValue(true)), SOME_BOOLEAN_METRIC}, {ScannerReport.Measure.newBuilder().setIntValue(IntValue.newBuilder().setValue(1)), SOME_INT_METRIC}, {ScannerReport.Measure.newBuilder().setLongValue(LongValue.newBuilder().setValue(1)), SOME_LONG_METRIC}, {ScannerReport.Measure.newBuilder().setDoubleValue(DoubleValue.newBuilder().setValue(1)), SOME_DOUBLE_METRIC}, {ScannerReport.Measure.newBuilder().setStringValue(StringValue.newBuilder().setValue("1")), SOME_STRING_METRIC}, {ScannerReport.Measure.newBuilder().setStringValue(StringValue.newBuilder().setValue(Measure.Level.OK.name())), SOME_LEVEL_METRIC} }; } }
private void verify_toMeasure_returns_value_for_LEVEL_Metric(Measure.Level expectedQualityGateStatus) { Optional<Measure> measure = underTest.toMeasure(ScannerReport.Measure.newBuilder().setStringValue(StringValue.newBuilder().setValue(expectedQualityGateStatus.name())).build(), SOME_LEVEL_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.LEVEL); assertThat(measure.get().getLevelValue()).isEqualTo(expectedQualityGateStatus); }
@Test public void toMeasure_returns_no_value_if_dto_has_invalid_string_value_for_LEVEL_Metric() { Optional<Measure> measure = underTest.toMeasure(ScannerReport.Measure.newBuilder().setStringValue(StringValue.newBuilder().setValue("trololo")).build(), SOME_LEVEL_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.NO_VALUE); }
@Test public void getRawMeasure_returns_measure_from_batch_if_not_added_through_add_method() { String value = "trololo"; when(reportMetricValidator.validate(METRIC_KEY_1)).thenReturn(true); reportReader.putMeasures(FILE_COMPONENT.getReportAttributes().getRef(), ImmutableList.of( ScannerReport.Measure.newBuilder().setMetricKey(METRIC_KEY_1).setStringValue(StringValue.newBuilder().setValue(value)).build())); Optional<Measure> res = underTest.getRawMeasure(FILE_COMPONENT, metric1); assertThat(res).isPresent(); assertThat(res.get().getStringValue()).isEqualTo(value); // make sure we really match on the specified component and metric assertThat(underTest.getRawMeasure(FILE_COMPONENT, metric2)).isNotPresent(); assertThat(underTest.getRawMeasure(OTHER_COMPONENT, metric1)).isNotPresent(); }
@Test public void getRawMeasure_retrieves_measure_from_batch_and_caches_it_locally_so_that_it_can_be_updated() { when(reportMetricValidator.validate(METRIC_KEY_1)).thenReturn(true); reportReader.putMeasures(FILE_COMPONENT.getReportAttributes().getRef(), ImmutableList.of( ScannerReport.Measure.newBuilder().setMetricKey(METRIC_KEY_1).setStringValue(StringValue.newBuilder().setValue("some value")).build())); Optional<Measure> measure = underTest.getRawMeasure(FILE_COMPONENT, metric1); underTest.update(FILE_COMPONENT, metric1, Measure.updatedMeasureBuilder(measure.get()).create()); }
private void verify_toMeasure_for_LEVEL_Metric_parses_level_from_data(Measure.Level expectedLevel) { ScannerReport.Measure batchMeasure = ScannerReport.Measure.newBuilder() .setStringValue(StringValue.newBuilder().setValue(expectedLevel.name())) .build(); Optional<Measure> measure = underTest.toMeasure(batchMeasure, SOME_LEVEL_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().getLevelValue()).isEqualTo(expectedLevel); }
@Test public void toMeasure_returns_no_value_if_dto_has_value_in_wrong_case_for_LEVEL_Metric() { Optional<Measure> measure = underTest.toMeasure(ScannerReport.Measure.newBuilder().setStringValue(StringValue.newBuilder().setValue("waRn")).build(), SOME_LEVEL_METRIC); assertThat(measure).isPresent(); assertThat(measure.get().getValueType()).isEqualTo(Measure.ValueType.NO_VALUE); }