/** * Combined the current summary with another summary, by summing up individual fields. * * @param other The other summary to be combined with. */ public void combine(AnswerSummary other) { if (other != null) { _notes = (Strings.isNullOrEmpty(_notes)) ? other.getNotes() : _notes + "; " + other.getNotes(); _numFailed += other.getNumFailed(); _numPassed += other.getNumPassed(); _numResults += other.getNumResults(); } }
public UniqueIpAssignmentsAnswerElement() { _summary = new AnswerSummary(); _duplicateIps = new TreeMap<>(); }
public void addAnswerElement(AnswerElement answerElement) { _answerElements.add(answerElement); _summary.combine(answerElement.getSummary()); }
public void updateSummary() { _summary.reset(); for (JsonPathResult result : _results.values()) { if (result.getAssertionResult() != null) { if (result.getAssertionResult()) { _summary.setNumPassed(_summary.getNumPassed() + 1); } else { _summary.setNumFailed(_summary.getNumFailed() + 1); } } _summary.setNumResults(_summary.getNumResults() + result.getNumResults()); } } }
@Test public void updateSummaryTest() { JsonPathAnswerElement answerElement = new JsonPathAnswerElement(); JsonPathResult result1 = new JsonPathResult(); result1.setAssertionResult(true); result1.setNumResults(2); JsonPathResult result2 = new JsonPathResult(); result2.setAssertionResult(false); result2.setNumResults(5); JsonPathResult result3 = new JsonPathResult(); result3.setNumResults(3); answerElement.getResults().put(0, result1); answerElement.getResults().put(1, result2); answerElement.getResults().put(2, result3); answerElement.updateSummary(); AnswerSummary summary = answerElement.getSummary(); assertThat(summary.getNumFailed(), equalTo(1)); assertThat(summary.getNumPassed(), equalTo(1)); assertThat(summary.getNumResults(), equalTo(10)); } }
private Answer analyze() { try { Answer answer = new Answer(); AnswerSummary summary = new AnswerSummary(); AnalysisId analysisName = _settings.getAnalysisName(); NetworkId containerName = _settings.getContainer(); containerName, getTaskId(), currentAnswer.getSummary().getNumFailed() > 0 ? "failed" : "passed", currentAnswer.getQuestion().getDataPlane(), BatfishObjectMapper.writeString( summary.combine(currentAnswer.getSummary()); });
@Test public void testProcessAnswerTableFiltered() { String columnName = "val"; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.STRING, "foobar")))); String whitelistedValue = "hello"; Row row1 = Row.of(columnName, whitelistedValue); Row row2 = Row.of(columnName, "goodbye"); table.addRow(row1); table.addRow(row2); AnswerRowsOptions optionsNotFiltered = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(), Integer.MAX_VALUE, 0, ImmutableList.of(), false); AnswerRowsOptions optionsFiltered = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(new ColumnFilter(columnName, whitelistedValue)), Integer.MAX_VALUE, 0, ImmutableList.of(), false); TableAnswerElement notFiltered = _manager.processAnswerTable(table, optionsNotFiltered); TableAnswerElement filtered = _manager.processAnswerTable(table, optionsFiltered); assertThat(notFiltered.getRowsList(), equalTo(ImmutableList.of(row1, row2))); assertThat(filtered.getRowsList(), equalTo(ImmutableList.of(row1))); assertThat(notFiltered.getSummary().getNumResults(), equalTo(2)); assertThat(filtered.getSummary().getNumResults(), equalTo(1)); }
table.setSummary(rawTable.getSummary() != null ? rawTable.getSummary() : new AnswerSummary()); table.getSummary().setNumResults(filteredRows.size()); return table;
private String getTestComparisonString(Answer answer, TestComparisonMode comparisonMode) throws JsonProcessingException { switch (comparisonMode) { case COMPAREANSWER: // Use an array rather than a list to serialize the answer elements; this preserves // the type information. See https://github.com/FasterXML/jackson-databind/issues/336, // though this is a different workaround. AnswerElement[] elements = answer.getAnswerElements().toArray(new AnswerElement[0]); return BatfishObjectMapper.writePrettyString(elements); case COMPAREALL: return BatfishObjectMapper.writePrettyString(answer); case COMPAREFAILURES: return BatfishObjectMapper.writePrettyString(answer.getSummary().getNumFailed()); case COMPARESUMMARY: return BatfishObjectMapper.writePrettyString(answer.getSummary()); default: throw new BatfishException("Unhandled TestComparisonMode: " + comparisonMode); } }
@JsonProperty(PROP_DUPLICATE_IPS) public void setDuplicateIps(SortedMap<Ip, SortedSet<NodeInterfacePair>> duplicateIps) { _summary.setNumResults(duplicateIps.size()); _duplicateIps = duplicateIps; } }
/** Does computerSummary compute the correct summary? */ @Test public void testComputeSummary() { // generate an answer with two rows TableAnswerElement answer = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata("col", Schema.STRING, "desc")), "no desc")); answer.addRow(Row.builder().put("col", "val").build()); answer.addRow(Row.builder().put("col", "val").build()); Assertion assertion = new Assertion(AssertionType.countequals, new IntNode(1)); // wrong count AnswerSummary summary = answer.computeSummary(assertion); assertThat(summary.getNumResults(), equalTo(2)); assertThat(summary.getNumFailed(), equalTo(1)); assertThat(summary.getNumPassed(), equalTo(0)); }
@Test public void testProcessAnswerTable2Filtered() { String columnName = "val"; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.STRING, "foobar")))); String whitelistedValue = "hello"; Row row1 = Row.of(columnName, whitelistedValue); Row row2 = Row.of(columnName, "goodbye"); table.addRow(row1); table.addRow(row2); AnswerRowsOptions optionsNotFiltered = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(), Integer.MAX_VALUE, 0, ImmutableList.of(), false); AnswerRowsOptions optionsFiltered = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(new ColumnFilter(columnName, whitelistedValue)), Integer.MAX_VALUE, 0, ImmutableList.of(), false); TableView notFiltered = _manager.processAnswerTable2(table, optionsNotFiltered); TableView filtered = _manager.processAnswerTable2(table, optionsFiltered); assertThat(notFiltered.getInnerRows(), equalTo(ImmutableList.of(row1, row2))); assertThat(filtered.getInnerRows(), equalTo(ImmutableList.of(row1))); assertThat(notFiltered.getSummary().getNumResults(), equalTo(2)); assertThat(filtered.getSummary().getNumResults(), equalTo(1)); }
tableMetadata); tableView.setSummary( rawTable.getSummary() != null ? rawTable.getSummary() : new AnswerSummary()); tableView.getSummary().setNumResults(filteredRows.size()); return tableView;
@Test public void combineTest() { AnswerSummary summary = new AnswerSummary("notes1", 1, 2, 3); AnswerSummary summaryOther = new AnswerSummary("notes2", 4, 5, 6); summary.combine(summaryOther); assertThat(summary.getNotes(), equalTo("notes1; notes2")); assertThat(summary.getNumFailed(), equalTo(5)); assertThat(summary.getNumPassed(), equalTo(7)); assertThat(summary.getNumResults(), equalTo(9)); }
assertThat(answer.getSummary().getNumResults(), equalTo(1));
public JsonPathAnswerElement() { // don't initialize _debug, so we won't serialize when its null (common case) _results = new TreeMap<>(); setSummary(new AnswerSummary()); }
public void append(Answer answer) { if (answer._question != null) { _question = answer._question; } _answerElements.addAll(answer._answerElements); _status = answer._status; _summary.combine(answer.getSummary()); for (AnswerElement answerElement : answer._answerElements) { if (answerElement instanceof BatfishStackTrace) { BatfishException e = ((BatfishStackTrace) answerElement).getException(); throw new QuestionException("Exception answering question", e, this); } } }
@Test public void serializationTest() throws IOException { AnswerSummary summary = new AnswerSummary("notes1", 21, 23, 42); // The summary should survive cloning through JSON. AnswerSummary summaryAfter = BatfishObjectMapper.clone(summary, AnswerSummary.class); assertThat(summaryAfter.getNotes(), equalTo("notes1")); assertThat(summaryAfter.getNumFailed(), equalTo(21)); assertThat(summaryAfter.getNumPassed(), equalTo(23)); assertThat(summaryAfter.getNumResults(), equalTo(42)); } }
assertThat(el.getSummary().getNumResults(), equalTo(1)); .answer(); assert el.getSummary() != null; assertThat(el.getSummary().getNumResults(), equalTo(0));
/** Computes the summary of this table, given the assertion and notes */ public AnswerSummary computeSummary(Assertion assertion, String notes) { int numPassed = 0; int numFailed = 0; if (assertion != null) { if (evaluateAssertion(assertion)) { numPassed = 1; } else { numFailed = 1; } } return new AnswerSummary(notes, numFailed, numPassed, _rows.size()); }