public AddressGroup toAddressGroup() { return new AddressGroup( ImmutableSortedSet.copyOf(firstNonNull(addresses, ImmutableSet.of())), name); } }
public AddressGroupBean(AddressGroup addressGroup) { name = addressGroup.getName(); addresses = ImmutableSet.copyOf(addressGroup.getAddresses()); }
/** Return the {@link AddressGroup} with name {@code groupName} */ public Optional<AddressGroup> getAddressGroup(String groupName) { return _addressGroups.stream().filter(group -> group.getName().equals(groupName)).findAny(); }
@Override public IpSpaceAssignment resolve(Set<Location> locations, SpecifierContext ctxt) { AddressGroup addressGroup = ctxt.getReferenceBook(_bookName) .orElseThrow( () -> new NoSuchElementException("ReferenceBook '" + _bookName + "' not found")) .getAddressGroup(_addressGroupName) .orElseThrow( () -> new NoSuchElementException( "AddressGroup '" + _addressGroupName + "' not found in ReferenceBook '" + _bookName + "'")); return IpSpaceAssignment.builder() .assign( locations, firstNonNull( AclIpSpace.union( addressGroup.getAddresses().stream() .map(add -> new IpWildcard(add).toIpSpace()) .collect(Collectors.toList())), EmptyIpSpace.INSTANCE)) .build(); } }
@Test public void conversionToAndFrom() { AddressGroup group = new AddressGroup(ImmutableSortedSet.of("1.1.1.1:255.255.255.1"), "ag1"); AddressGroupBean bean = new AddressGroupBean(group); assertThat(new AddressGroupBean(bean.toAddressGroup()), equalTo(bean)); } }
@Test public void testGetAddressGroups() { String group1 = "group1"; String group2 = "group2"; AddressGroup addressGroup1 = new AddressGroup(null, group1); AddressGroup addressGroup2 = new AddressGroup(null, group2); ReferenceBook refBook1 = ReferenceBook.builder("book1") .setAddressGroups(ImmutableList.of(addressGroup1, addressGroup2)) .build(); ReferenceBook refBook2 = ReferenceBook.builder("book2").setAddressGroups(ImmutableList.of(addressGroup1)).build(); ReferenceBook refBook3 = ReferenceBook.builder("book3").build(); ReferenceLibrary referenceLibrary = new ReferenceLibrary(ImmutableList.of(refBook1, refBook2, refBook3)); assertThat(getAddressGroups(referenceLibrary), equalTo(ImmutableSet.of(group1, group2))); }
@Test public void constructorNonEmptyBook() { ReferenceBook book2 = ReferenceBook.builder("book2") .setAddressGroups(ImmutableList.of(new AddressGroup(ImmutableSortedSet.of(), "ag1"))) .setFilterGroups(ImmutableList.of(new FilterGroup(ImmutableList.of(), "fg1"))) .setInterfaceGroups( ImmutableList.of(new InterfaceGroup(ImmutableSortedSet.of(), "ig1"))) .setServiceEndpoints(ImmutableList.of(new ServiceEndpoint("ag1", "se1", "so1"))) .setServiceObjectGroups( ImmutableList.of(new ServiceObjectGroup("sog1", ImmutableSortedSet.of()))) .setServiceObjects( ImmutableList.of(new ServiceObject(IpProtocol.TCP, "so1", new SubRange(2, 3)))) .build(); beanBookMatch(new ReferenceBookBean(book2), book2); }
@Test public void resolve() { ReferenceBook book = ReferenceBook.builder("book1") .setAddressGroups( ImmutableList.of( new AddressGroup( ImmutableSortedSet.of("1.1.1.1", "2.2.2.2:0.0.0.8"), "group1"))) .build(); MockSpecifierContext ctxt = MockSpecifierContext.builder().setReferenceBooks(ImmutableSortedSet.of(book)).build(); ReferenceAddressGroupIpSpaceSpecifier specifier = new ReferenceAddressGroupIpSpaceSpecifier("group1", "book1"); IpSpace resolvedSpace = AclIpSpace.union( specifier.resolve(ImmutableSet.of(), ctxt).getEntries().stream() .map(e -> e.getIpSpace()) .collect(Collectors.toSet())); assertThat( resolvedSpace, equalTo( AclIpSpace.union( new IpWildcard("1.1.1.1").toIpSpace(), new IpWildcard("2.2.2.2:0.0.0.8").toIpSpace()))); } }
@Test public void toAddressBook() { ReferenceBookBean bean = new ReferenceBookBean( ReferenceBook.builder("book2") .setAddressGroups( ImmutableList.of(new AddressGroup(ImmutableSortedSet.of(), "ag1"))) .setFilterGroups(ImmutableList.of(new FilterGroup(ImmutableList.of(), "fg1"))) .setInterfaceGroups( ImmutableList.of(new InterfaceGroup(ImmutableSortedSet.of(), "ig1"))) .setServiceEndpoints(ImmutableList.of(new ServiceEndpoint("ag1", "se1", "so1"))) .setServiceObjectGroups( ImmutableList.of(new ServiceObjectGroup("sog1", ImmutableSortedSet.of()))) .setServiceObjects( ImmutableList.of(new ServiceObject(IpProtocol.TCP, "so1", new SubRange(2, 3)))) .build()); beanBookMatch(bean, bean.toAddressBook()); } }
ReferenceBook.builder("book1") .setAddressGroups( ImmutableList.of(new AddressGroup(ImmutableSortedSet.of(), "add1"))) .build(), ReferenceBook.builder("book3").build()); ReferenceBook.builder("book1") .setAddressGroups( ImmutableList.of(new AddressGroup(ImmutableSortedSet.of(), "add1"))) .build(), ReferenceBook.builder("book2").build(),