diff --git a/tests/cts/net/src/android/net/cts/DnsTest.java b/tests/cts/net/src/android/net/cts/DnsTest.java
index 0377d04..fed0a8d 100644
--- a/tests/cts/net/src/android/net/cts/DnsTest.java
+++ b/tests/cts/net/src/android/net/cts/DnsTest.java
@@ -62,7 +62,8 @@
         try {
             addrs = InetAddress.getAllByName("www.google.com");
         } catch (UnknownHostException e) {}
-        assertTrue(addrs.length != 0);
+        assertTrue("[RERUN] DNS could not resolve www.gooogle.com. Check internet connection",
+            addrs.length != 0);
         boolean foundV4 = false, foundV6 = false;
         for (InetAddress addr : addrs) {
             if (addr instanceof Inet4Address) foundV4 = true;
@@ -96,7 +97,8 @@
             if (DBG) Log.e(TAG, "ipv6.google.com gave " + addr.toString());
         }
 
-        assertTrue(foundV4 == false);
+        assertTrue("[RERUN] ipv6.google.com returned an ipv4 address, check your network's DNS connection.",
+            foundV4 == false);
         assertTrue(foundV6 == true);
 
         assertTrue(testNativeDns());
diff --git a/tests/cts/net/src/android/net/http/cts/ApacheHttpClientTest.java b/tests/cts/net/src/android/net/http/cts/ApacheHttpClientTest.java
index 7d9189f..91b65b6 100644
--- a/tests/cts/net/src/android/net/http/cts/ApacheHttpClientTest.java
+++ b/tests/cts/net/src/android/net/http/cts/ApacheHttpClientTest.java
@@ -146,7 +146,8 @@
             mContext.registerReceiver(receiver, filter);
 
             assertTrue(mWifiManager.setWifiEnabled(true));
-            assertTrue("Wifi must be configured to connect to an access point for this test.",
+            assertTrue(
+                    "[RERUN] Wifi must be configured to connect to an access point for this test.",
                     receiver.waitForStateChange());
 
             mContext.unregisterReceiver(receiver);
@@ -165,9 +166,11 @@
             mContext.registerReceiver(connectMobileReceiver, filter);
             mContext.registerReceiver(disconnectWifiReceiver, filter);
 
-            assertTrue(mWifiManager.setWifiEnabled(false));
-            assertTrue(disconnectWifiReceiver.waitForStateChange());
-            assertTrue(connectMobileReceiver.waitForStateChange());
+            assertTrue("Wifi did not disconnect.", mWifiManager.setWifiEnabled(false));
+            assertTrue("Timeout waiting for wifi to disconnect.",
+                    disconnectWifiReceiver.waitForStateChange());
+            assertTrue("[RERUN] Timeout waiting for mobile network. Check signal and SIM.",
+                    connectMobileReceiver.waitForStateChange());
 
             mContext.unregisterReceiver(connectMobileReceiver);
             mContext.unregisterReceiver(disconnectWifiReceiver);
@@ -204,7 +207,10 @@
         }
 
         private boolean hasExpectedState() {
-            return mExpectedState == mConnectivityManager.getNetworkInfo(mNetworkType).getState();
+            NetworkInfo network = mConnectivityManager.getNetworkInfo(mNetworkType);
+            assertNotNull("Network type should be supported but it is not. Type: " + mNetworkType,
+                    network);
+            return mExpectedState == network.getState();
         }
     }
 }
