Merge "Add util to compare getAllAddresses"
diff --git a/staticlibs/framework/com/android/net/module/util/LinkPropertiesUtils.java b/staticlibs/framework/com/android/net/module/util/LinkPropertiesUtils.java
index 1565f2b..e271f64 100644
--- a/staticlibs/framework/com/android/net/module/util/LinkPropertiesUtils.java
+++ b/staticlibs/framework/com/android/net/module/util/LinkPropertiesUtils.java
@@ -146,6 +146,24 @@
right != null ? right.getLinkAddresses() : null);
}
+ /**
+ * Compares {@code left} {@code LinkProperties} allLinkAddresses against the {@code right}.
+ *
+ * @param left A LinkProperties or null
+ * @param right A LinkProperties or null
+ * @return {@code true} if both are identical, {@code false} otherwise.
+ * @see LinkProperties#getAllLinkAddresses()
+ */
+ public static boolean isIdenticalAllLinkAddresses(@Nullable LinkProperties left,
+ @Nullable LinkProperties right) {
+ if (left == right) return true;
+ if (left == null || right == null) return false;
+ final List<LinkAddress> leftAddresses = left.getAllLinkAddresses();
+ final List<LinkAddress> rightAddresses = right.getAllLinkAddresses();
+ if (leftAddresses.size() != rightAddresses.size()) return false;
+ return leftAddresses.containsAll(rightAddresses);
+ }
+
/**
* Compares {@code left} {@code LinkProperties} interface addresses against the {@code right}.
*
diff --git a/staticlibs/tests/unit/src/com/android/net/module/util/LinkPropertiesUtilsTest.java b/staticlibs/tests/unit/src/com/android/net/module/util/LinkPropertiesUtilsTest.java
index 09f0490..80ab618 100644
--- a/staticlibs/tests/unit/src/com/android/net/module/util/LinkPropertiesUtilsTest.java
+++ b/staticlibs/tests/unit/src/com/android/net/module/util/LinkPropertiesUtilsTest.java
@@ -94,6 +94,9 @@
assertTrue(LinkPropertiesUtils.isIdenticalAddresses(source, target));
assertTrue(LinkPropertiesUtils.isIdenticalAddresses(target, source));
+ assertTrue(LinkPropertiesUtils.isIdenticalAllLinkAddresses(source, target));
+ assertTrue(LinkPropertiesUtils.isIdenticalAllLinkAddresses(target, source));
+
assertTrue(LinkPropertiesUtils.isIdenticalDnses(source, target));
assertTrue(LinkPropertiesUtils.isIdenticalDnses(target, source));
@@ -116,12 +119,17 @@
assertFalse(LinkPropertiesUtils.isIdenticalAddresses(source, target));
assertFalse(LinkPropertiesUtils.isIdenticalAddresses(target, source));
+ assertFalse(LinkPropertiesUtils.isIdenticalAllLinkAddresses(source, target));
+ assertFalse(LinkPropertiesUtils.isIdenticalAllLinkAddresses(target, source));
+
// Currently, target contains V4_LINKADDR, V6_LINKADDR and testLinkAddr.
// Compare addresses.size() equals but contains different address.
target.removeLinkAddress(V4_LINKADDR);
assertEquals(source.getAddresses().size(), target.getAddresses().size());
assertFalse(LinkPropertiesUtils.isIdenticalAddresses(source, target));
assertFalse(LinkPropertiesUtils.isIdenticalAddresses(target, source));
+ assertFalse(LinkPropertiesUtils.isIdenticalAllLinkAddresses(source, target));
+ assertFalse(LinkPropertiesUtils.isIdenticalAllLinkAddresses(target, source));
// Restore link address
target.addLinkAddress(V4_LINKADDR);
target.removeLinkAddress(testLinkAddr);
@@ -169,6 +177,13 @@
target.setHttpProxy(null);
assertFalse(LinkPropertiesUtils.isIdenticalHttpProxy(source, target));
assertFalse(LinkPropertiesUtils.isIdenticalHttpProxy(target, source));
+
+ final LinkProperties stacked = new LinkProperties();
+ stacked.setInterfaceName("v4-" + target.getInterfaceName());
+ stacked.addLinkAddress(testLinkAddr);
+ target.addStackedLink(stacked);
+ assertFalse(LinkPropertiesUtils.isIdenticalAllLinkAddresses(source, target));
+ assertFalse(LinkPropertiesUtils.isIdenticalAllLinkAddresses(target, source));
}
private <T> void compareResult(List<T> oldItems, List<T> newItems, List<T> expectRemoved,