public static Answer failureAnswer(String message, @Nullable Question question) { Answer answer = new Answer(); answer.setQuestion(question); answer.setStatus(AnswerStatus.FAILURE); answer.addAnswerElement(new StringAnswerElement(message)); return answer; }
@VisibleForTesting @Nonnull Answer processAnswerRows(String rawAnswerStr, AnswerRowsOptions options) { if (rawAnswerStr == null) { Answer answer = Answer.failureAnswer("Not found", null); answer.setStatus(AnswerStatus.NOTFOUND); return answer; } try { Answer rawAnswer = BatfishObjectMapper.mapper().readValue(rawAnswerStr, new TypeReference<Answer>() {}); // If the AnswerStatus is not SUCCESS, the answer cannot have any AnswerElements related to // actual answers (but, e.g., it might have a BatfishStackTrace). Return that as-is. if (rawAnswer.getStatus() != AnswerStatus.SUCCESS) { return rawAnswer; } TableAnswerElement rawTable = (TableAnswerElement) rawAnswer.getAnswerElements().get(0); Answer answer = new Answer(); answer.setStatus(rawAnswer.getStatus()); answer.addAnswerElement(processAnswerTable(rawTable, options)); return answer; } catch (Exception e) { _logger.errorf("Failed to convert answer string to Answer: %s", e.getMessage()); return Answer.failureAnswer(e.getMessage(), null); } }
newAnswer.setStatus(AnswerStatus.SUCCESS); newAnswer.setQuestion(questionObj); newAnswer.setSummary(newTable.getSummary());
if (!_storage.hasAnswerMetadata(baseAnswerId)) { Answer ans = Answer.failureAnswer("Not answered", null); ans.setStatus(AnswerStatus.NOTFOUND); return BatfishObjectMapper.writePrettyString(ans); Throwables.getStackTraceAsString(e)); Answer ans = Answer.failureAnswer(message, null); ans.setStatus(AnswerStatus.FAILURE); answer = BatfishObjectMapper.writePrettyString(ans); return answer;
@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 testProcessAnswerRowsFailure() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); Answer badInput = new Answer(); badInput.setStatus(AnswerStatus.SUCCESS); String rawAnswerStr = BatfishObjectMapper.writePrettyString(badInput); Answer processedAnswer = _manager.processAnswerRows(rawAnswerStr, options); assertThat(processedAnswer.getStatus(), equalTo(AnswerStatus.FAILURE)); }
@Test public void testProcessAnswerRowsStale() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); Answer badInput = new Answer(); badInput.setStatus(AnswerStatus.STALE); String rawAnswerStr = BatfishObjectMapper.writePrettyString(badInput); Answer processedAnswer = _manager.processAnswerRows(rawAnswerStr, options); assertThat(processedAnswer.getStatus(), equalTo(AnswerStatus.STALE)); }
Answer answer = new Answer(); answer.addAnswerElement(table); answer.setStatus(AnswerStatus.SUCCESS); String answerStr = BatfishObjectMapper.writePrettyString(answer); Map<String, String> rawAnswers = ImmutableMap.of(questionName, answerStr);
@Test public void testProcessAnswerRows2() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.ISSUE, "foobar")))); table.addRow(Row.of(columnName, new Issue("blah", 5, new Issue.Type("m", "n")))); Answer answer = new Answer(); answer.addAnswerElement(table); answer.setStatus(AnswerStatus.SUCCESS); String answerStr = BatfishObjectMapper.writePrettyString(answer); AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); List<Row> processedRows = ((TableView) _manager.processAnswerRows2(answerStr, options).getAnswerElements().get(0)) .getInnerRows(); assertThat(processedRows, equalTo(table.getRowsList())); }
@Test public void testProcessAnswerRows() throws IOException { String columnName = "issue"; int maxRows = 1; int rowOffset = 0; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.ISSUE, "foobar")))); table.addRow(Row.of(columnName, new Issue("blah", 5, new Issue.Type("m", "n")))); Answer answer = new Answer(); answer.addAnswerElement(table); answer.setStatus(AnswerStatus.SUCCESS); String answerStr = BatfishObjectMapper.writePrettyString(answer); AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), maxRows, rowOffset, ImmutableList.of(new ColumnSortOption(columnName, true)), false); List<Row> processedRows = ((TableAnswerElement) _manager.processAnswerRows(answerStr, options).getAnswerElements().get(0)) .getRowsList(); assertThat(processedRows, equalTo(table.getRowsList())); }
analysisId); Answer testAnswer = new Answer(); testAnswer.setStatus(AnswerStatus.SUCCESS); testAnswer.addAnswerElement( new TableAnswerElement(
analysisId); Answer testAnswer = new Answer(); testAnswer.setStatus(AnswerStatus.SUCCESS); testAnswer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); String testAnswerStr = BatfishObjectMapper.writeString(testAnswer);
analysisId); Answer testAnswer = new Answer(); testAnswer.setStatus(AnswerStatus.SUCCESS); testAnswer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); String testAnswerStr = BatfishObjectMapper.writeString(testAnswer);
@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())); }
null); Answer testAnswer = new Answer(); testAnswer.setStatus(AnswerStatus.SUCCESS); testAnswer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); String testAnswerStr = BatfishObjectMapper.writeString(testAnswer);
.addRow(Row.of(columnName, value, issueColumnName, issueValue)) .addExcludedRow(Row.of(columnName, excludedValue, issueColumnName, issueValue), "foo")); testAnswer.setStatus(AnswerStatus.SUCCESS);
new DisplayHints().getTextDesc())) .addRow(Row.of(columnName, value))); testAnswer.setStatus(AnswerStatus.SUCCESS); String answer = BatfishObjectMapper.writePrettyString(testAnswer);
new DisplayHints().getTextDesc())) .addRow(Row.of(columnName, value))); testAnswer.setStatus(AnswerStatus.SUCCESS); String answer = BatfishObjectMapper.writePrettyString(testAnswer);
null); Answer answer = new Answer(); answer.setStatus(AnswerStatus.SUCCESS); answer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); AnswerMetadata answerMetadata =