Fix the flakyness: privacy address not found in integration test.

The flaky error "privacy address not found" was introduced by updating
the dual-stack provisioning logic, i.e. start IPv4 provisioning prior to
IPv6, however, we only check if IPv6 is provisioned in the assert
function but it's true as long as one of global IPv6 address shows up in
the LinkProperties, e.g. either privacy address or stable privacy
address, however, we check that both of these two addresses must have
been configured on the interface at the end of provisioning,
isIpv6Provisioned cannot guarantee that, instead, we need to wait until
there are 4 addresses appeared in the LinkProperties such as IPv4
address, IPv6 link-local address, privacy and stable privacy address, to
fix the flaky tests.

Bug: 277300318
Test: atest NetworkStackRooTests --iterations
Change-Id: I7373878b9002a486e985d57690ae9faba0acf699
diff --git a/tests/integration/common/android/net/ip/IpClientIntegrationTestCommon.java b/tests/integration/common/android/net/ip/IpClientIntegrationTestCommon.java
index f4618a6..9790ec9 100644
--- a/tests/integration/common/android/net/ip/IpClientIntegrationTestCommon.java
+++ b/tests/integration/common/android/net/ip/IpClientIntegrationTestCommon.java
@@ -2890,8 +2890,12 @@
         waitForRouterSolicitation();
         mPacketReader.sendResponse(ra);
 
+        // Wait until we see both success IPv4 and IPv6 provisioning, then there would be 4
+        // addresses in LinkProperties, they are IPv4 address, IPv6 link-local address, stable
+        // privacy address and privacy address.
         verify(mCb, timeout(TEST_TIMEOUT_MS).atLeastOnce()).onLinkPropertiesChange(argThat(x -> {
             if (!x.isIpv4Provisioned() || !x.isIpv6Provisioned()) return false;
+            if (x.getLinkAddresses().size() != 4) return false;
             lpFuture.complete(x);
             return true;
         }));