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

Commit 383855b2 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
Change-Id: I04de6e3c7b1400a5a57daa1bf855330c20516db7
parent 88640bd8
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1086,6 +1086,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;