/** Create metadata for the new traceroute v2 answer */ public static TableMetadata metadata() { List<ColumnMetadata> columnMetadata = ImmutableList.of( new ColumnMetadata(COL_FORWARD_FLOW, Schema.FLOW, "The forward flow.", true, false), new ColumnMetadata(COL_FORWARD_TRACE, Schema.TRACE, "The forward trace.", false, true), new ColumnMetadata(COL_REVERSE_FLOW, Schema.FLOW, "The reverse flow.", false, true), new ColumnMetadata(COL_REVERSE_TRACE, Schema.TRACE, "The reverse trace.", false, true)); return new TableMetadata( columnMetadata, String.format("Bidirectional paths for flow ${%s}", COL_FORWARD_FLOW)); }
private List<ColumnMetadata> initMetadataThree( boolean keyCol1, boolean keyCol2, boolean keyCol3, boolean valueCol1, boolean valueCol2, boolean valueCol3) { return ImmutableList.of( new ColumnMetadata("col1", Schema.STRING, "desc", keyCol1, valueCol1), new ColumnMetadata("col2", Schema.STRING, "desc", keyCol2, valueCol2), new ColumnMetadata("col3", Schema.STRING, "desc", keyCol3, valueCol3)); }
@VisibleForTesting static TableAnswerElement resolveLocation(SpecifiersQuestion question, SpecifierContext context) { List<ColumnMetadata> columns = ImmutableList.of(new ColumnMetadata(COL_LOCATION, Schema.STRING, "Location", false, false)); TableAnswerElement table = new TableAnswerElement(new TableMetadata(columns)); Map<String, ColumnMetadata> columnMap = table.getMetadata().toColumnMap(); Set<Location> locations = question.getLocationSpecifier().resolve(context); for (Location location : locations) { table.addRow(Row.of(columnMap, COL_LOCATION, location.toString())); } return table; }
@Test public void fillInEmptyColumnsOnBuild() { Row row = Row.builder(ImmutableMap.of("col", new ColumnMetadata("col", Schema.INTEGER, "desc"))) .build(); assertThat(row.getColumnNames(), contains("col")); assertThat(row.hasNonNull("col"), equalTo(false)); } }
@Test public void putNullValue() { TypedRowBuilder builder = Row.builder(ImmutableMap.of("col", new ColumnMetadata("col", Schema.INTEGER, "desc"))); // we should be able to put null Row row = builder.put("col", null).build(); assertThat(row.get("col", Schema.INTEGER), Matchers.is(nullValue())); }
@Test public void ofTyped() { assertThat( Row.of(ImmutableMap.of("a", new ColumnMetadata("a", Schema.INTEGER, "desc")), "a", 5), equalTo(Row.builder().put("a", 5).build())); _thrown.expect(IllegalArgumentException.class); _thrown.expectMessage("Column 'b' is not present"); Row.of(ImmutableMap.of("a", new ColumnMetadata("a", Schema.INTEGER, "desc")), "b", 5); } }
@Test public void testComputeColumnMaxNoRows() { String columnName = "col"; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.INTEGER, "foobar")), new DisplayHints().getTextDesc())); assertThat(AnswerMetadataUtil.computeColumnMax(table, columnName, _logger), nullValue()); }
@Test public void testComputeMajorIssueTypesNoColumn() { String columnName = "col"; String value = "foo"; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.STRING, "foobar")), new DisplayHints().getTextDesc())) .addRow(Row.of(columnName, value)); assertThat(AnswerMetadataUtil.computeMajorIssueConfigs(table), equalTo(ImmutableMap.of())); }
@Test public void testComputeColumnMaxNullInteger() { String columnName = "col"; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.INTEGER, "foobar")), new DisplayHints().getTextDesc())) .addRow(Row.of(columnName, null)); assertThat(AnswerMetadataUtil.computeColumnMax(table, columnName, _logger), nullValue()); }
@Test public void testComputeColumnMaxInvalidSchema() { String columnName = "col"; String value = "hello"; TableAnswerElement table = new TableAnswerElement( new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.STRING, "foobar")), new DisplayHints().getTextDesc())) .addRow(Row.of(columnName, value)); assertThat(AnswerMetadataUtil.computeColumnMax(table, columnName, _logger), nullValue()); }
@Test public void putBadColumn() { TypedRowBuilder builder = Row.builder(ImmutableMap.of("col", new ColumnMetadata("col", Schema.INTEGER, "desc"))); // we should not be able to put in a non-existent column _thrown.expect(IllegalArgumentException.class); _thrown.expectMessage("not present"); builder.put("badcol", 2); }
@Test public void testComputeMajorIssueTypesNone() { String columnName = "col"; TableMetadata tableMetadata = new TableMetadata( ImmutableList.of(new ColumnMetadata(columnName, Schema.ISSUE, "foobar")), new DisplayHints().getTextDesc()); TableAnswerElement table = new TableAnswerElement(tableMetadata) .addRow(Row.builder(tableMetadata.toColumnMap()).build()); assertThat(AnswerMetadataUtil.computeMajorIssueConfigs(table), equalTo(ImmutableMap.of())); }
@Test public void testColumnComparatorIp() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.IP, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, Ip.ZERO); Row r2 = Row.of(col, Ip.MAX); assertThat(comparator.compare(r1, r2), lessThan(0)); }
@Test public void testColumnComparatorBoolean() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.BOOLEAN, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, false); Row r2 = Row.of(col, true); assertThat(comparator.compare(r1, r2), lessThan(0)); }
@Test public void testColumnComparatorInteger() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.INTEGER, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, 0); Row r2 = Row.of(col, 1); assertThat(comparator.compare(r1, r2), lessThan(0)); }
@Test public void testColumnComparatorString() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.STRING, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, "a"); Row r2 = Row.of(col, "b"); assertThat(comparator.compare(r1, r2), lessThan(0)); }
@Test public void testColumnComparatorLong() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.LONG, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, 0L); Row r2 = Row.of(col, 1L); Row r3 = Row.of(col, Long.MAX_VALUE); assertThat(comparator.compare(r1, r2), lessThan(0)); assertThat(comparator.compare(r1, r3), lessThan(0)); assertThat(comparator.compare(r2, r3), lessThan(0)); }
@Test public void testColumnComparatorAclTrace() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.ACL_TRACE, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, new AclTrace(ImmutableList.of(new DefaultDeniedByIpAccessList("a", "a", "a")))); Row r2 = Row.of(col, new AclTrace(ImmutableList.of(new DefaultDeniedByIpAccessList("b", "b", "b")))); assertThat(comparator.compare(r1, r2), lessThan(0)); }
@Test public void testColumnComparatorSelfDescribingObject() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.SELF_DESCRIBING, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, new SelfDescribingObject(Schema.STRING, "a")); Row r2 = Row.of(col, new SelfDescribingObject(Schema.STRING, "b")); assertThat(comparator.compare(r1, r2), lessThan(0)); }
@Test public void testColumnComparatorInterface() { String col = "col1"; ColumnMetadata columnMetadata = new ColumnMetadata(col, Schema.INTERFACE, "colDesc"); Comparator<Row> comparator = _manager.columnComparator(columnMetadata); Row r1 = Row.of(col, new NodeInterfacePair("a", "a")); Row r2 = Row.of(col, new NodeInterfacePair("a", "b")); Row r3 = Row.of(col, new NodeInterfacePair("b", "a")); assertThat(comparator.compare(r1, r2), lessThan(0)); assertThat(comparator.compare(r1, r3), lessThan(0)); assertThat(comparator.compare(r2, r3), lessThan(0)); }