refine test TestIpfwdEnableDisableStatusForwarding and some minor changes on test
1. fix flaky test for TestIpfwdEnableDisableStatusForwarding
2. fix time unit error in binder_test, set retry default
interval as 50ms
3. refine naming in binder_test
Bug: 128533612
Test: built, flashed, booted
system/netd/tests/runtests.sh pass
Change-Id: Ia03d0c30b49cdd233b627cce8bd2f3f05548798e
diff --git a/tests/binder_test.cpp b/tests/binder_test.cpp
index 2e425db..bb569e9 100644
--- a/tests/binder_test.cpp
+++ b/tests/binder_test.cpp
@@ -1283,7 +1283,7 @@
namespace {
std::vector<std::string> tryToFindProcesses(const std::string& processName, uint32_t maxTries = 1,
- uint32_t intervalMs = 0) {
+ uint32_t intervalMs = 50) {
// Output looks like:(clatd)
// clat 4963 850 1 12:16:51 ? 00:00:00 clatd-netd10a88 -i netd10a88 ...
// ...
@@ -1302,16 +1302,16 @@
break;
}
- usleep(intervalMs);
+ usleep(intervalMs * 1000);
}
return result;
}
void expectProcessExists(const std::string& processName) {
- EXPECT_EQ(1U, tryToFindProcesses(processName, 5 /*maxTries*/, 50 /*intervalMs*/).size());
+ EXPECT_EQ(1U, tryToFindProcesses(processName, 5 /*maxTries*/).size());
}
-void expectProcessDoesNotExists(const std::string& processName) {
+void expectProcessDoesNotExist(const std::string& processName) {
EXPECT_FALSE(tryToFindProcesses(processName).size());
}
@@ -1370,13 +1370,13 @@
// Expect clatd to stop successfully.
status = mNetd->clatdStop(sTun.name());
EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
- expectProcessDoesNotExists(clatdName);
+ expectProcessDoesNotExist(clatdName);
// Stopping a clatd that doesn't exist returns ENODEV.
status = mNetd->clatdStop(sTun.name());
EXPECT_FALSE(status.isOk());
EXPECT_EQ(ENODEV, status.serviceSpecificErrorCode());
- expectProcessDoesNotExists(clatdName);
+ expectProcessDoesNotExist(clatdName);
// Clean up.
EXPECT_TRUE(mNetd->networkRemoveRoute(TEST_NETID1, sTun.name(), "::/0", "").isOk());
@@ -1438,25 +1438,56 @@
} // namespace
TEST_F(BinderTest, TestIpfwdEnableDisableStatusForwarding) {
- // Netd default enable Ipfwd with requester NetdHwService
- const std::string defaultRequester = "NetdHwService";
-
- binder::Status status = mNetd->ipfwdDisableForwarding(defaultRequester);
+ // Get ipfwd requester list from Netd
+ std::vector<std::string> requesterList;
+ binder::Status status = mNetd->ipfwdGetRequesterList(&requesterList);
EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
- expectIpfwdEnable(false);
bool ipfwdEnabled;
- status = mNetd->ipfwdEnabled(&ipfwdEnabled);
- EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
- EXPECT_FALSE(ipfwdEnabled);
+ if (requesterList.size() == 0) {
+ // No requester in Netd, ipfwd should be disabled
+ // So add one test requester and verify
+ status = mNetd->ipfwdEnableForwarding("TestRequester");
+ EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
- status = mNetd->ipfwdEnableForwarding(defaultRequester);
- EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
- expectIpfwdEnable(true);
+ expectIpfwdEnable(true);
+ status = mNetd->ipfwdEnabled(&ipfwdEnabled);
+ EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
+ EXPECT_TRUE(ipfwdEnabled);
- status = mNetd->ipfwdEnabled(&ipfwdEnabled);
- EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
- EXPECT_TRUE(ipfwdEnabled);
+ // Remove test one, verify again
+ status = mNetd->ipfwdDisableForwarding("TestRequester");
+ EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
+
+ expectIpfwdEnable(false);
+ status = mNetd->ipfwdEnabled(&ipfwdEnabled);
+ EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
+ EXPECT_FALSE(ipfwdEnabled);
+ } else {
+ // Disable all requesters
+ for (const auto& requester : requesterList) {
+ status = mNetd->ipfwdDisableForwarding(requester);
+ EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
+ }
+
+ // After disable all requester, ipfwd should be disabled
+ expectIpfwdEnable(false);
+ status = mNetd->ipfwdEnabled(&ipfwdEnabled);
+ EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
+ EXPECT_FALSE(ipfwdEnabled);
+
+ // Enable them back
+ for (const auto& requester : requesterList) {
+ status = mNetd->ipfwdEnableForwarding(requester);
+ EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
+ }
+
+ // ipfwd should be enabled
+ expectIpfwdEnable(true);
+ status = mNetd->ipfwdEnabled(&ipfwdEnabled);
+ EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
+ EXPECT_TRUE(ipfwdEnabled);
+ }
}
TEST_F(BinderTest, TestIpfwdAddRemoveInterfaceForward) {
@@ -2088,7 +2119,7 @@
status = mNetd->tetherStop();
EXPECT_TRUE(status.isOk()) << status.exceptionMessage();
- expectProcessDoesNotExists(dnsdName);
+ expectProcessDoesNotExist(dnsdName);
status = mNetd->tetherIsEnabled(&tetherEnabled);
EXPECT_TRUE(status.isOk()) << status.exceptionMessage();