@VisibleForTesting static TableAnswerElement resolveIpSpace(SpecifiersQuestion question, SpecifierContext context) { List<ColumnMetadata> columns = ImmutableList.of(new ColumnMetadata(COL_IP_SPACE, Schema.STRING, "IP space", false, false)); TableAnswerElement table = new TableAnswerElement(new TableMetadata(columns)); Map<String, ColumnMetadata> columnMap = table.getMetadata().toColumnMap(); // this will yield all default locations for the factory Set<Location> locations = question.getLocationSpecifier().resolve(context); IpSpaceAssignment ipSpaceAssignment = question.getIpSpaceSpecifier().resolve(locations, context); for (IpSpaceAssignment.Entry entry : ipSpaceAssignment.getEntries()) { table.addRow(Row.of(columnMap, COL_IP_SPACE, Objects.toString(entry.getIpSpace()))); } return table; }
@Test public void testGetIpSpaceSpecifier_defaultInput() { SpecifiersQuestion question = new SpecifiersQuestion(QueryType.IP_SPACE); question.setIpSpaceSpecifierFactory(new TestIpSpaceSpecifierFactory().getName()); IpSpaceSpecifier ipSpaceSpecifier = question.getIpSpaceSpecifier(); assertThat(ipSpaceSpecifier, instanceOf(TestIpSpaceSpecifier.class)); TestIpSpaceSpecifier testIpSpaceSpecifier = (TestIpSpaceSpecifier) ipSpaceSpecifier; assertThat(testIpSpaceSpecifier.getInput(), nullValue()); }
@Test public void testGetIpSpaceSpecifier() { String input = "input"; SpecifiersQuestion question = new SpecifiersQuestion(QueryType.IP_SPACE); question.setIpSpaceSpecifierFactory(new TestIpSpaceSpecifierFactory().getName()); question.setIpSpaceSpecifierInput(input); IpSpaceSpecifier ipSpaceSpecifier = question.getIpSpaceSpecifier(); assertThat(ipSpaceSpecifier, instanceOf(TestIpSpaceSpecifier.class)); TestIpSpaceSpecifier testIpSpaceSpecifier = (TestIpSpaceSpecifier) ipSpaceSpecifier; assertThat(testIpSpaceSpecifier.getInput(), equalTo(input)); }
@VisibleForTesting static TableAnswerElement resolveIpSpaceOfLocation( SpecifiersQuestion question, SpecifierContext context) { List<ColumnMetadata> columns = ImmutableList.of( new ColumnMetadata(COL_LOCATIONS, Schema.STRING, "Resolution", false, false), new ColumnMetadata(COL_IP_SPACE, Schema.STRING, "IP space", false, false)); TableAnswerElement table = new TableAnswerElement(new TableMetadata(columns)); Map<String, ColumnMetadata> columnMap = table.getMetadata().toColumnMap(); Set<Location> locations = question.getLocationSpecifier().resolve(context); IpSpaceAssignment ipSpaceAssignment = question.getIpSpaceSpecifier().resolve(locations, context); for (IpSpaceAssignment.Entry entry : ipSpaceAssignment.getEntries()) { table.addRow( Row.of( columnMap, COL_LOCATIONS, entry.getLocations().toString(), COL_IP_SPACE, Objects.toString(entry.getIpSpace()))); } return table; }
@Test public void testGetIpSpaceSpecifier_inputWithoutFactory() { exception.expect(NullPointerException.class); SpecifiersQuestion question = new SpecifiersQuestion(QueryType.IP_SPACE); question.setIpSpaceSpecifierFactory(null); question.setIpSpaceSpecifierInput("foo"); question.getIpSpaceSpecifier(); }