test: dm: net: Add a test of the netretry behavior
authorJoe Hershberger <joe.hershberger@ni.com>
Sun, 22 Mar 2015 22:09:20 +0000 (17:09 -0500)
committerSimon Glass <sjg@chromium.org>
Sat, 18 Apr 2015 17:11:13 +0000 (11:11 -0600)
The effect of the "netretry" env var was recently changed. This test
checks that behavior.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
test/dm/eth.c

index 9b550139b52de52b4bf2d853de98c0b2fca0bb8f..a0e935939f012ee2da4754cc097c61fcfb8be09b 100644 (file)
@@ -14,6 +14,7 @@
 #include <fdtdec.h>
 #include <malloc.h>
 #include <net.h>
+#include <asm/eth.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -122,3 +123,34 @@ static int dm_test_eth_rotate(struct dm_test_state *dms)
        return 0;
 }
 DM_TEST(dm_test_eth_rotate, DM_TESTF_SCAN_FDT);
+
+static int dm_test_net_retry(struct dm_test_state *dms)
+{
+       NetPingIP = string_to_ip("1.1.2.2");
+
+       /*
+        * eth1 is disabled and netretry is yes, so the ping should succeed and
+        * the active device should be eth0
+        */
+       sandbox_eth_disable_response(1, true);
+       setenv("ethact", "eth@10004000");
+       setenv("netretry", "yes");
+       ut_assertok(NetLoop(PING));
+       ut_asserteq_str("eth@10002000", getenv("ethact"));
+
+       /*
+        * eth1 is disabled and netretry is no, so the ping should fail and the
+        * active device should be eth1
+        */
+       setenv("ethact", "eth@10004000");
+       setenv("netretry", "no");
+       ut_asserteq(-1, NetLoop(PING));
+       ut_asserteq_str("eth@10004000", getenv("ethact"));
+
+       /* Restore the env */
+       setenv("netretry", NULL);
+       sandbox_eth_disable_response(1, false);
+
+       return 0;
+}
+DM_TEST(dm_test_net_retry, DM_TESTF_SCAN_FDT);