Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c30195b authored by Ken Chen's avatar Ken Chen Committed by Automerger Merge Worker
Browse files

Merge "Refactor the expectDnsQueryCountsFn in ResolverMultinetworkTest" am:...

Merge "Refactor the expectDnsQueryCountsFn in ResolverMultinetworkTest" am: abd545bf am: b928ffb3

Original change: https://android-review.googlesource.com/c/platform/packages/modules/DnsResolver/+/1757231

Change-Id: I8747e4ff0579ae78c138b16ed7583e667aac2bd9
parents eb01f5df b928ffb3
Loading
Loading
Loading
Loading
+20 −25
Original line number Diff line number Diff line
@@ -6583,6 +6583,13 @@ class ResolverMultinetworkTest : public ResolverTest {
                                                         const char* ipv4_addr,
                                                         const char* ipv6_addr);

    void expectDnsQueryCountsFn(std::shared_ptr<test::DNSResponder> dnsServer,
                                const char* host_name, size_t count, unsigned expectedDnsNetId) {
        EXPECT_EQ(GetNumQueries(*dnsServer, host_name), count);
        EXPECT_TRUE(mDnsClient.resolvService()->flushNetworkCache(expectedDnsNetId).isOk());
        dnsServer->clearQueries();
    }

  private:
    // Use a different netId because this class inherits from the class ResolverTest which
    // always creates TEST_NETID in setup. It's incremented when CreateScoped{Physical,
@@ -6910,15 +6917,6 @@ TEST_F(ResolverMultinetworkTest, DnsWithVpn) {
        const unsigned secureVpnNetId = secureVpnNetwork.netId();
        // We've called setNetworkForProcess in SetupOemNetwork, so reset to default first.
        ScopedSetNetworkForProcess scopedSetNetworkForProcess(NETID_UNSET);
        auto expectDnsQueryCountsFn = [&](size_t count,
                                          std::shared_ptr<test::DNSResponder> dnsServer,
                                          unsigned expectedDnsNetId) -> void {
            EXPECT_EQ(GetNumQueries(*dnsServer, host_name), count);
            EXPECT_TRUE(mDnsClient.resolvService()->flushNetworkCache(expectedDnsNetId).isOk());
            dnsServer->clearQueries();
            // Give DnsResolver some time to clear cache to avoid race.
            usleep(5 * 1000);
        };

        // Create a object to represent default network, do not init it.
        ScopedPhysicalNetwork defaultNetwork{NETID_UNSET, "Default"};
@@ -6945,7 +6943,7 @@ TEST_F(ResolverMultinetworkTest, DnsWithVpn) {
            SCOPED_TRACE(fmt::format("Bypassble VPN with DnsServer, selectedNetwork = {}",
                                     config.selectedNetwork->name()));
            expectDnsWorksForUid(host_name, config.selectedNetwork->netId(), TEST_UID, result);
            expectDnsQueryCountsFn(result.size(), config.expectedDnsServer,
            expectDnsQueryCountsFn(config.expectedDnsServer, host_name, result.size(),
                                   config.expectedDnsNetId);
        }

@@ -6958,7 +6956,7 @@ TEST_F(ResolverMultinetworkTest, DnsWithVpn) {
            SCOPED_TRACE(fmt::format("Bypassble VPN without DnsServer, selectedNetwork = {}",
                                     selectedNetwork->name()));
            expectDnsWorksForUid(host_name, selectedNetwork->netId(), TEST_UID, result);
            expectDnsQueryCountsFn(result.size(), *underlyingNwDnsSv, underlyingNetId);
            expectDnsQueryCountsFn(*underlyingNwDnsSv, host_name, result.size(), underlyingNetId);
        }

        // The same test scenario as before plus enableVpnIsolation for secure VPN, TEST_UID2.
@@ -6974,7 +6972,8 @@ TEST_F(ResolverMultinetworkTest, DnsWithVpn) {
                SCOPED_TRACE(fmt::format("Secure VPN without DnsServer, selectedNetwork = {}",
                                         selectedNetwork->name()));
                expectDnsWorksForUid(host_name, selectedNetwork->netId(), TEST_UID2, result);
                expectDnsQueryCountsFn(result.size(), *underlyingNwDnsSv, underlyingNetId);
                expectDnsQueryCountsFn(*underlyingNwDnsSv, host_name, result.size(),
                                       underlyingNetId);
            }

            // Test secure VPN with DNS server.
@@ -6983,7 +6982,7 @@ TEST_F(ResolverMultinetworkTest, DnsWithVpn) {
                SCOPED_TRACE(fmt::format("Secure VPN with DnsServer, selectedNetwork = {}",
                                         selectedNetwork->name()));
                expectDnsWorksForUid(host_name, selectedNetwork->netId(), TEST_UID2, result);
                expectDnsQueryCountsFn(result.size(), *secureVpnDnsSv, secureVpnNetId);
                expectDnsQueryCountsFn(*secureVpnDnsSv, host_name, result.size(), secureVpnNetId);
            }

            if (enableVpnIsolation) {
@@ -7043,21 +7042,16 @@ TEST_F(ResolverMultinetworkTest, PerAppDefaultNetwork) {

        // We've called setNetworkForProcess in SetupOemNetwork, reset to default first.
        ScopedSetNetworkForProcess scopedSetNetworkForProcess(NETID_UNSET);
        auto expectDnsQueryCountsFn = [&](size_t count,
                                          std::shared_ptr<test::DNSResponder> dnsServer,
                                          unsigned expectedDnsNetId) -> void {
            EXPECT_EQ(GetNumQueries(*dnsServer, host_name), count);
            EXPECT_TRUE(mDnsClient.resolvService()->flushNetworkCache(expectedDnsNetId).isOk());
            dnsServer->clearQueries();
        };

        // Test DNS query without selecting a network. --> use system default network.
        expectDnsWorksForUid(host_name, NETID_UNSET, TEST_UID, expectedDnsReply);
        expectDnsQueryCountsFn(expectedDnsReply.size(), *sysDefaultNwDnsSv, systemDefaultNetId);
        expectDnsQueryCountsFn(*sysDefaultNwDnsSv, host_name, expectedDnsReply.size(),
                               systemDefaultNetId);
        // Add user to app default network. --> use app default network.
        ASSERT_RESULT_OK(appDefaultNetwork.addUser(TEST_UID));
        expectDnsWorksForUid(host_name, NETID_UNSET, TEST_UID, expectedDnsReply);
        expectDnsQueryCountsFn(expectedDnsReply.size(), *appDefaultNwDnsSv, appDefaultNetId);
        expectDnsQueryCountsFn(*appDefaultNwDnsSv, host_name, expectedDnsReply.size(),
                               appDefaultNetId);

        // Test DNS query with a selected network.
        // App default network applies to uid, vpn does not applies to uid.
@@ -7080,18 +7074,19 @@ TEST_F(ResolverMultinetworkTest, PerAppDefaultNetwork) {
                                     config.selectedNetwork->name()));
            expectDnsWorksForUid(host_name, config.selectedNetwork->netId(), TEST_UID,
                                 expectedDnsReply);
            expectDnsQueryCountsFn(expectedDnsReply.size(), config.expectedDnsServer,
            expectDnsQueryCountsFn(config.expectedDnsServer, host_name, expectedDnsReply.size(),
                                   config.expectedDnsNetId);
        }

        // App default network applies to uid, vpn applies to uid. --> use vpn.
        ASSERT_RESULT_OK(vpn.addUser(TEST_UID));
        expectDnsWorksForUid(host_name, vpn.netId(), TEST_UID, expectedDnsReply);
        expectDnsQueryCountsFn(expectedDnsReply.size(), *vpnDnsSv, vpnNetId);
        expectDnsQueryCountsFn(*vpnDnsSv, host_name, expectedDnsReply.size(), vpnNetId);

        // vpn without server. --> fallback to app default network.
        ASSERT_TRUE(vpn.clearDnsConfiguration());
        expectDnsWorksForUid(host_name, vpn.netId(), TEST_UID, expectedDnsReply);
        expectDnsQueryCountsFn(expectedDnsReply.size(), *appDefaultNwDnsSv, appDefaultNetId);
        expectDnsQueryCountsFn(*appDefaultNwDnsSv, host_name, expectedDnsReply.size(),
                               appDefaultNetId);
    }
}