Tests for AddressFilter.
| 30 | |
| 31 | /** Tests for {@link AddressFilter}. */ |
| 32 | @RunWith(JUnit4.class) |
| 33 | public class AddressFilterTest { |
| 34 | @Test |
| 35 | public void filterAddresses() { |
| 36 | Attributes.Key<String> key1 = Attributes.Key.create("key1"); |
| 37 | Attributes attributes1 = Attributes.newBuilder().set(key1, "value1").build(); |
| 38 | EquivalentAddressGroup eag0 = new EquivalentAddressGroup(new InetSocketAddress(8000)); |
| 39 | EquivalentAddressGroup eag1 = |
| 40 | new EquivalentAddressGroup(new InetSocketAddress(8001), attributes1); |
| 41 | EquivalentAddressGroup eag2 = new EquivalentAddressGroup(new InetSocketAddress(8002)); |
| 42 | EquivalentAddressGroup eag3 = |
| 43 | new EquivalentAddressGroup( |
| 44 | Arrays.<SocketAddress>asList(new InetSocketAddress(8003), new InetSocketAddress(8083))); |
| 45 | eag0 = AddressFilter.setPathFilter(eag0, Arrays.asList("A", "C")); |
| 46 | eag1 = AddressFilter.setPathFilter(eag1, Arrays.asList("A", "B")); |
| 47 | eag2 = AddressFilter.setPathFilter(eag2, Arrays.asList("D", "C")); |
| 48 | eag3 = AddressFilter.setPathFilter(eag3, Arrays.asList("A", "B")); |
| 49 | |
| 50 | List<EquivalentAddressGroup> addresses = |
| 51 | AddressFilter.filter(Arrays.asList(eag0, eag1, eag2, eag3), "A"); |
| 52 | assertThat(addresses).hasSize(3); |
| 53 | addresses = AddressFilter.filter(addresses, "B"); |
| 54 | assertThat(addresses).hasSize(2); |
| 55 | EquivalentAddressGroup filteredAddress0 = addresses.get(0); |
| 56 | EquivalentAddressGroup filteredAddress1 = addresses.get(1); |
| 57 | assertThat(filteredAddress0.getAddresses()).containsExactlyElementsIn(eag1.getAddresses()); |
| 58 | assertThat(filteredAddress0.getAttributes().get(key1)).isEqualTo("value1"); |
| 59 | assertThat(filteredAddress1.getAddresses()).containsExactlyElementsIn(eag3.getAddresses()); |
| 60 | } |
| 61 | |
| 62 | @Test |
| 63 | public void longerPathChain() { |
| 64 | List<EquivalentAddressGroup> addresses = Arrays.asList( |
| 65 | newEag(new InetSocketAddress(8000), Arrays.asList("A", "B", "C")), |
| 66 | newEag(new InetSocketAddress(8001), Arrays.asList("Z", "B", "C")), |
| 67 | newEag(new InetSocketAddress(8002), Arrays.asList("A", "Z", "C")), |
| 68 | newEag(new InetSocketAddress(8003), Arrays.asList("A", "B", "Z"))); |
| 69 | addresses = AddressFilter.filter(addresses, "A"); |
| 70 | assertThat(addresses).hasSize(3); |
| 71 | |
| 72 | addresses = AddressFilter.filter(addresses, "B"); |
| 73 | assertThat(addresses).hasSize(2); |
| 74 | |
| 75 | addresses = AddressFilter.filter(addresses, "C"); |
| 76 | assertThat(addresses).hasSize(1); |
| 77 | assertThat(addresses.get(0).getAddresses()).containsExactly(new InetSocketAddress(8000)); |
| 78 | |
| 79 | addresses = AddressFilter.filter(addresses, "D"); |
| 80 | assertThat(addresses).hasSize(0); |
| 81 | } |
| 82 | |
| 83 | private static EquivalentAddressGroup newEag(InetSocketAddress address, List<String> names) { |
| 84 | return AddressFilter.setPathFilter(new EquivalentAddressGroup(address), names); |
| 85 | } |
| 86 | } |
nothing calls this directly
no outgoing calls
no test coverage detected