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); } }
answerElement.setVersion(Version.getVersion()); if (_settings.getVerboseParse()) { answer.addAnswerElement(answerElement);
Answer answer = new Answer(); answer.setStatus(rawAnswer.getStatus()); answer.addAnswerElement(processAnswerTable2(rawTable, options)); return answer; } catch (Exception e) {
private void outputAnswer(Answer answer, boolean writeLog) { try { String answerString = BatfishObjectMapper.writePrettyString(answer) + '\n'; _logger.debug(answerString); @Nullable String logString = writeLog ? answerString : null; writeJsonAnswerWithLog(logString, answerString); } catch (Exception e) { BatfishException be = new BatfishException("Error in sending answer", e); try { Answer failureAnswer = Answer.failureAnswer(e.toString(), answer.getQuestion()); failureAnswer.addAnswerElement(be.getBatfishStackTrace()); String answerString = BatfishObjectMapper.writePrettyString(failureAnswer) + '\n'; _logger.error(answerString); @Nullable String logString = writeLog ? answerString : null; writeJsonAnswerWithLog(logString, answerString); } catch (Exception e1) { _logger.errorf( "Could not serialize failure answer. %s", Throwables.getStackTraceAsString(e1)); } throw be; } }
private Answer serializeEnvironmentBgpTables(Path inputPath, Path outputPath) { Answer answer = new Answer(); ParseEnvironmentBgpTablesAnswerElement answerElement = new ParseEnvironmentBgpTablesAnswerElement(); answerElement.setVersion(Version.getVersion()); answer.addAnswerElement(answerElement); SortedMap<String, BgpAdvertisementsByVrf> bgpTables = getEnvironmentBgpTables(inputPath, answerElement); serializeEnvironmentBgpTables(bgpTables, outputPath); serializeObject(answerElement, _testrigSettings.getParseEnvironmentBgpTablesAnswerPath()); return answer; }
private Answer serializeEnvironmentRoutingTables(Path inputPath, Path outputPath) { Answer answer = new Answer(); ParseEnvironmentRoutingTablesAnswerElement answerElement = new ParseEnvironmentRoutingTablesAnswerElement(); answerElement.setVersion(Version.getVersion()); answer.addAnswerElement(answerElement); SortedMap<String, RoutesByVrf> routingTables = getEnvironmentRoutingTables(inputPath, answerElement); serializeEnvironmentRoutingTables(routingTables, outputPath); serializeObject(answerElement, _testrigSettings.getParseEnvironmentRoutingTablesAnswerPath()); return answer; }
private Answer serializeIndependentConfigs(Path vendorConfigPath) { Answer answer = new Answer(); ConvertConfigurationAnswerElement answerElement = new ConvertConfigurationAnswerElement(); answerElement.setVersion(Version.getVersion()); if (_settings.getVerboseParse()) { answer.addAnswerElement(answerElement); } Map<String, Configuration> configurations = getConfigurations(vendorConfigPath, answerElement); _storage.storeConfigurations( configurations, answerElement, _settings.getContainer(), _testrigSettings.getName()); postProcessSnapshot(configurations); return answer; }
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);
@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())); }
Answer testAnswer = new Answer(); testAnswer.setStatus(AnswerStatus.SUCCESS); testAnswer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); String testAnswerStr = BatfishObjectMapper.writeString(testAnswer); AnswerMetadata answerMetadata =
analysisId); Answer answer = new Answer(); answer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); String answerStr = BatfishObjectMapper.writeString(answer); AnswerMetadata answerMetadata =
@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())); }
Answer testAnswer = new Answer(); testAnswer.setStatus(AnswerStatus.SUCCESS); testAnswer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); String testAnswerStr = BatfishObjectMapper.writeString(testAnswer); AnswerMetadata answerMetadata =
testAnswer.addAnswerElement( new TableAnswerElement( new TableMetadata(
analysisId); Answer answer = new Answer(); answer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); AnswerMetadata answerMetadata = AnswerMetadataUtil.computeAnswerMetadata(answer, Main.getLogger());
null); Answer answer = new Answer(); answer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); AnswerMetadata answerMetadata = AnswerMetadataUtil.computeAnswerMetadata(answer, Main.getLogger());
null); Answer answer = new Answer(); answer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); AnswerMetadata answerMetadata = AnswerMetadataUtil.computeAnswerMetadata(answer, Main.getLogger());
null); Answer answer = new Answer(); answer.addAnswerElement(new TableAnswerElement(MOCK_TABLE_METADATA)); AnswerMetadata answerMetadata = AnswerMetadataUtil.computeAnswerMetadata(answer, Main.getLogger());