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

Commit 3d2b1878 authored by Mike Yu's avatar Mike Yu
Browse files

Fix the flaky test MaxServerPrune_Binder

This change fixes resolv_integration_test getting stuck.
It happens when DNSResponder has terminated while DnsTlsFrontend
is still waiting for the response from the DNSResponder, which causes
DnsTlsFrontend loop thread can't be terminated.

Bug: 119694273
Test: system/netd/tests/runtests.sh passed
Merged-In: I04de6e3c7b1400a5a57daa1bf855330c20516db7
Change-Id: I9c6ea40e4a73d53ff460f8e2d34a6c2a605d34b5
(cherry picked from commit b5b3ce5a101fa62566701c623b27885559516618)
parent fb66fbae
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1106,6 +1106,16 @@ TEST_F(ResolverTest, MaxServerPrune_Binder) {

    ASSERT_TRUE(mDnsClient.SetResolversWithTls(servers, domains, kDefaultParams, "", fingerprints));

    // If the private DNS validation hasn't completed yet before backend DNS servers stop,
    // TLS servers will get stuck in handleOneRequest(), which causes this test stuck in
    // ~DnsTlsFrontend() because the TLS server loop threads can't be terminated.
    // So, wait for private DNS validation done before stopping backend DNS servers.
    for (int i = 0; i < MAXNS; i++) {
        ALOGI("Waiting for private DNS validation on %s.", tls[i]->listen_address().c_str());
        EXPECT_TRUE(tls[i]->waitForQueries(1, 5000));
        ALOGI("private DNS validation on %s done.", tls[i]->listen_address().c_str());
    }

    std::vector<std::string> res_servers;
    std::vector<std::string> res_domains;
    std::vector<std::string> res_tls_servers;