@JsonCreator private static @Nonnull AnswerRowsOptions create( @JsonProperty(BfConsts.PROP_COLUMNS) Set<String> columns, @JsonProperty(BfConsts.PROP_FILTERS) List<ColumnFilter> filters, @JsonProperty(BfConsts.PROP_MAX_ROWS) Integer maxRows, @JsonProperty(BfConsts.PROP_ROW_OFFSET) Integer rowOffset, @JsonProperty(BfConsts.PROP_SORT_ORDER) List<ColumnSortOption> sortOrder, @JsonProperty(BfConsts.PROP_UNIQUE_ROWS) Boolean uniqueRows) { return new AnswerRowsOptions( firstNonNull(columns, ImmutableSet.of()), firstNonNull(filters, ImmutableList.of()), firstNonNull(maxRows, Integer.MAX_VALUE), firstNonNull(rowOffset, 0), firstNonNull(sortOrder, ImmutableList.of()), firstNonNull(uniqueRows, false)); }
@Test public void testProcessAnswerRowsNotFound() 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 processedAnswer = _manager.processAnswerRows(null, options); assertThat(processedAnswer.getStatus(), equalTo(AnswerStatus.NOTFOUND)); }
@Test public void testProcessAnswerTableUniqueRows() { String columnName = "val"; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.INTEGER, "foobar")))); Row row1 = Row.of(columnName, 1); Row row2 = Row.of(columnName, 1); table.addRow(row1); table.addRow(row2); AnswerRowsOptions optionsNonUnique = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(), Integer.MAX_VALUE, 0, ImmutableList.of(), false); AnswerRowsOptions optionsUnique = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(), Integer.MAX_VALUE, 0, ImmutableList.of(), true); assertThat( _manager.processAnswerTable(table, optionsNonUnique).getRowsList(), equalTo(ImmutableList.of(row1, row2))); assertThat( _manager.processAnswerTable(table, optionsUnique).getRowsList(), equalTo(ImmutableList.of(row1))); }
@Test public void testProcessAnswerTableMaxRows() { String columnName = "val"; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.INTEGER, "foobar")))); Row row1 = Row.of(columnName, 1); Row row2 = Row.of(columnName, 2); table.addRow(row1); table.addRow(row2); AnswerRowsOptions optionsNoLimit = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(), Integer.MAX_VALUE, 0, ImmutableList.of(), false); AnswerRowsOptions optionsLimit = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(), 1, 0, ImmutableList.of(), false); assertThat( _manager.processAnswerTable(table, optionsNoLimit).getRowsList(), equalTo(ImmutableList.of(row1, row2))); assertThat( _manager.processAnswerTable(table, optionsLimit).getRowsList(), equalTo(ImmutableList.of(row1))); }
@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)); }
table.addRow(row2); AnswerRowsOptions optionsNoOffset = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), false); AnswerRowsOptions optionsOffset = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(),
table.addRow(row2); AnswerRowsOptions optionsNoProject = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(), Integer.MAX_VALUE, 0, ImmutableList.of(), false); AnswerRowsOptions optionsProject = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(),
table.addRow(row2); AnswerRowsOptions optionsNoProject = new AnswerRowsOptions( ImmutableSet.of(), ImmutableList.of(), Integer.MAX_VALUE, 0, ImmutableList.of(), false); AnswerRowsOptions optionsProject = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(),
@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)); }
@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)); }
@Test public void testEquals() { AnswerRowsOptions group1Elem1 = new AnswerRowsOptions( ImmutableSet.of("a"), ImmutableList.of(new ColumnFilter("a", "1")), false); AnswerRowsOptions group1Elem2 = new AnswerRowsOptions( ImmutableSet.of("a"), ImmutableList.of(new ColumnFilter("a", "1")), false); AnswerRowsOptions group2Elem1 = new AnswerRowsOptions( ImmutableSet.of("b"), ImmutableList.of(new ColumnFilter("a", "1")), false); AnswerRowsOptions group3Elem1 = new AnswerRowsOptions( ImmutableSet.of("a"), ImmutableList.of(new ColumnFilter("a", "2")), false); AnswerRowsOptions group4Elem1 = new AnswerRowsOptions( ImmutableSet.of("a"), ImmutableList.of(new ColumnFilter("a", "1")),
table.addRow(row2); AnswerRowsOptions optionsSorting = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(), false); AnswerRowsOptions optionsSortingReverse = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(),
Map<String, String> rawAnswers = ImmutableMap.of(questionName, answerStr); AnswerRowsOptions options = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(),
@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())); }
ImmutableMap.of( questionName, new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(new ColumnFilter(columnName, "")),
String columnName = "col"; AnswerRowsOptions answersRowsOptions = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(new ColumnFilter(columnName, "")),
String columnName = "col"; AnswerRowsOptions answersRowsOptions = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(new ColumnFilter(columnName, "")),
String columnName = "col"; AnswerRowsOptions answersRowsOptions = new AnswerRowsOptions( ImmutableSet.of(columnName), ImmutableList.of(new ColumnFilter(columnName, "")),