public static @Nonnull AnswerMetadata computeAnswerMetadata( @Nonnull Answer answer, @Nonnull BatfishLogger logger) { try { return AnswerMetadata.builder() .setMetrics(computeMetrics(answer, logger)) .setStatus(answer.getStatus()) .build(); } catch (Exception e) { return AnswerMetadata.forStatus(AnswerStatus.FAILURE); } }
public @Nonnull AnswerMetadata build() { return new AnswerMetadata(_metrics, requireNonNull(_status)); }
private Set<IssueSettingsId> getOrCreateIssueSettingsIds( NetworkId networkId, AnswerMetadata baseAnswerMetadata) throws IOException { Metrics metrics = baseAnswerMetadata.getMetrics(); if (metrics == null) { return ImmutableSet.of(); } ImmutableSet.Builder<IssueSettingsId> ids = ImmutableSet.builder(); for (String majorIssueType : metrics.getMajorIssueConfigs().keySet()) { ids.add(getOrCreateIssueSettingsId(networkId, majorIssueType)); } return ids.build(); }
public @Nonnull Map<String, AnswerMetadata> getAnalysisAnswersMetadata( String network, String snapshot, String referenceSnapshot, String analysis, Set<String> analysisQuestions) throws JsonProcessingException, FileNotFoundException { Set<String> questions = analysisQuestions.isEmpty() ? listAnalysisQuestions(network, analysis) : analysisQuestions; ImmutableSortedMap.Builder<String, AnswerMetadata> result = ImmutableSortedMap.naturalOrder(); for (String question : questions) { try { result.put( question, getAnswerMetadata(network, snapshot, question, referenceSnapshot, analysis)); } catch (Exception e) { _logger.errorf( "Got exception in getAnalysisAnswersMetadata: %s\n", Throwables.getStackTraceAsString(e)); result.put(question, AnswerMetadata.forStatus(AnswerStatus.FAILURE)); } } return result.build(); }
@Test public void testComputeAnswerMetadataInapplicable() throws IOException { String columnName = "col"; List<Integer> value = ImmutableList.of(5); Answer testAnswer = new Answer(); testAnswer.addAnswerElement( new TableAnswerElement( new TableMetadata( ImmutableList.of( new ColumnMetadata(columnName, Schema.list(Schema.INTEGER), "foobar")), new DisplayHints().getTextDesc())) .addRow(Row.of(columnName, value))); testAnswer.setStatus(AnswerStatus.SUCCESS); assertThat( AnswerMetadataUtil.computeAnswerMetadata(testAnswer, _logger), equalTo( AnswerMetadata.builder() .setMetrics(Metrics.builder().setNumRows(1).build()) .setStatus(AnswerStatus.SUCCESS) .build())); }
@Test public void testComputeAnswerMetadataUnsuccessfulAnswer() throws IOException { Answer testAnswer = new Answer(); testAnswer.setStatus(AnswerStatus.FAILURE); assertThat( AnswerMetadataUtil.computeAnswerMetadata(testAnswer, _logger), equalTo(AnswerMetadata.forStatus(AnswerStatus.FAILURE))); }
@Test public void testEquals() { AnswerMetadata.Builder builder = AnswerMetadata.builder().setStatus(AnswerStatus.SUCCESS); AnswerMetadata group1Elem1 = builder.build(); AnswerMetadata group1Elem2 = builder.build(); AnswerMetadata group1Elem3 = AnswerMetadata.forStatus(AnswerStatus.SUCCESS); AnswerMetadata group2Elem1 = builder.setMetrics(Metrics.builder().setNumRows(5).build()).build(); AnswerMetadata group3Elem1 = builder.setStatus(AnswerStatus.FAILURE).build(); new EqualsTester() .addEqualityGroup(group1Elem1, group1Elem2, group1Elem3) .addEqualityGroup(group2Elem1) .addEqualityGroup(group3Elem1) .testEquals(); } }
AnswerMetadataUtil.computeAnswerMetadata(testAnswer, _logger), equalTo( AnswerMetadata.builder() .setMetrics( Metrics.builder()
AnswerId finalAnswerId = _idManager.getFinalAnswerId(baseAnswerId, issueSettingsIds); if (!_storage.hasAnswerMetadata(finalAnswerId)) { Metrics metrics = baseAnswerMetadata.getMetrics(); if (metrics == null) { _storage.storeAnswer(_storage.loadAnswer(baseAnswerId), finalAnswerId);
@JsonCreator private static @Nonnull AnswerMetadata create( @JsonProperty(BfConsts.PROP_METRICS) @Nullable Metrics metrics, @JsonProperty(BfConsts.PROP_STATUS) @Nullable AnswerStatus status) { return new AnswerMetadata(metrics, requireNonNull(status)); }
answerMetadata1, question2Name, AnswerMetadata.forStatus(AnswerStatus.FAILURE))));
equalTo(AnswerMetadata.forStatus(AnswerStatus.NOTFOUND)));
equalTo(AnswerMetadata.forStatus(AnswerStatus.NOTFOUND)));