Merge "Unit test routes with interfaces in LinkProperties" into jb-mr2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
90fbffb1e9
@@ -146,9 +146,9 @@ public class LinkProperties implements Parcelable {
|
|||||||
if (route != null) {
|
if (route != null) {
|
||||||
String routeIface = route.getInterface();
|
String routeIface = route.getInterface();
|
||||||
if (routeIface != null && !routeIface.equals(mIfaceName)) {
|
if (routeIface != null && !routeIface.equals(mIfaceName)) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalArgumentException(
|
||||||
"Route added with non-matching interface: " + routeIface +
|
"Route added with non-matching interface: " + routeIface +
|
||||||
" vs. mIfaceName");
|
" vs. " + mIfaceName);
|
||||||
}
|
}
|
||||||
mRoutes.add(routeWithInterface(route));
|
mRoutes.add(routeWithInterface(route));
|
||||||
}
|
}
|
||||||
@@ -370,7 +370,7 @@ public class LinkProperties implements Parcelable {
|
|||||||
public CompareResult<RouteInfo> compareRoutes(LinkProperties target) {
|
public CompareResult<RouteInfo> compareRoutes(LinkProperties target) {
|
||||||
/*
|
/*
|
||||||
* Duplicate the RouteInfos into removed, we will be removing
|
* Duplicate the RouteInfos into removed, we will be removing
|
||||||
* routes which are common between mDnses and target
|
* routes which are common between mRoutes and target
|
||||||
* leaving the routes that are different. And route address which
|
* leaving the routes that are different. And route address which
|
||||||
* are in target but not in mRoutes are placed in added.
|
* are in target but not in mRoutes are placed in added.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -197,4 +197,63 @@ public class LinkPropertiesTest extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void assertAllRoutesHaveInterface(String iface, LinkProperties lp) {
|
||||||
|
for (RouteInfo r : lp.getRoutes()) {
|
||||||
|
assertEquals(iface, r.getInterface());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
public void testRouteInterfaces() {
|
||||||
|
LinkAddress prefix = new LinkAddress(
|
||||||
|
NetworkUtils.numericToInetAddress("2001:db8::"), 32);
|
||||||
|
InetAddress address = NetworkUtils.numericToInetAddress(ADDRV6);
|
||||||
|
|
||||||
|
// Add a route with no interface to a LinkProperties with no interface. No errors.
|
||||||
|
LinkProperties lp = new LinkProperties();
|
||||||
|
RouteInfo r = new RouteInfo(prefix, address, null);
|
||||||
|
lp.addRoute(r);
|
||||||
|
assertEquals(1, lp.getRoutes().size());
|
||||||
|
assertAllRoutesHaveInterface(null, lp);
|
||||||
|
|
||||||
|
// Add a route with an interface. Except an exception.
|
||||||
|
r = new RouteInfo(prefix, address, "wlan0");
|
||||||
|
try {
|
||||||
|
lp.addRoute(r);
|
||||||
|
fail("Adding wlan0 route to LP with no interface, expect exception");
|
||||||
|
} catch (IllegalArgumentException expected) {}
|
||||||
|
|
||||||
|
// Change the interface name. All the routes should change their interface name too.
|
||||||
|
lp.setInterfaceName("rmnet0");
|
||||||
|
assertAllRoutesHaveInterface("rmnet0", lp);
|
||||||
|
|
||||||
|
// Now add a route with the wrong interface. This causes an exception too.
|
||||||
|
try {
|
||||||
|
lp.addRoute(r);
|
||||||
|
fail("Adding wlan0 route to rmnet0 LP, expect exception");
|
||||||
|
} catch (IllegalArgumentException expected) {}
|
||||||
|
|
||||||
|
// If the interface name matches, the route is added.
|
||||||
|
lp.setInterfaceName("wlan0");
|
||||||
|
lp.addRoute(r);
|
||||||
|
assertEquals(2, lp.getRoutes().size());
|
||||||
|
assertAllRoutesHaveInterface("wlan0", lp);
|
||||||
|
|
||||||
|
// Routes with null interfaces are converted to wlan0.
|
||||||
|
r = RouteInfo.makeHostRoute(NetworkUtils.numericToInetAddress(ADDRV6), null);
|
||||||
|
lp.addRoute(r);
|
||||||
|
assertEquals(3, lp.getRoutes().size());
|
||||||
|
assertAllRoutesHaveInterface("wlan0", lp);
|
||||||
|
|
||||||
|
// Check comparisons work.
|
||||||
|
LinkProperties lp2 = new LinkProperties(lp);
|
||||||
|
assertAllRoutesHaveInterface("wlan0", lp);
|
||||||
|
assertEquals(0, lp.compareRoutes(lp2).added.size());
|
||||||
|
assertEquals(0, lp.compareRoutes(lp2).removed.size());
|
||||||
|
|
||||||
|
lp2.setInterfaceName("p2p0");
|
||||||
|
assertAllRoutesHaveInterface("p2p0", lp2);
|
||||||
|
assertEquals(3, lp.compareRoutes(lp2).added.size());
|
||||||
|
assertEquals(3, lp.compareRoutes(lp2).removed.size());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user