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

Commit c0000255 authored by Mike Yu's avatar Mike Yu
Browse files

Merge the changes about the tests repeated setResolverConfiguration

===
Refactor the test code that checks the cleartext DNS stats

The test code for stats check is slightly stricter than before since
now it checks almost every field rathern few of them.

Bug: 150678049
Test: resolv_integration_test passed
Change-Id: I86294a9d3a6050ccf8057b34eaa3463e00742850
===
Add tests to cover repeated setResolverConfiguration

Two tests are added to protect the resolver when it continually
receives the same setup requests.

When the resolver receives repeated and same setup:
[1] Do not clear the cache.
[2] Do not clear the stats (the stats for cleartext DNS servers
    got from GetResolverInfo()).
[3] Do not start a new re-evaluation process for the private DNS
    servers if they have been marked as in_progress.
[4] Need not to re-validate the private DNS servers if they have
    been validated.

Another test is added to protect the implementation of aosp/1108695.

Fix: 150678049
Test: resolv_integration_test passed
Change-Id: I7a866e7e305c0fb703ccb9546d1c70ce77e2d3c7
===

Bug: 150678049
Merged-In: I86294a9d3a6050ccf8057b34eaa3463e00742850
Merged-In: I7a866e7e305c0fb703ccb9546d1c70ce77e2d3c7
Change-Id: I69f449c578799a9437e38743557b8c1bc52d4046
(cherry picked from commit 3ccd410b)
parent b6402aea
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -102,6 +102,10 @@ int PrivateDnsConfiguration::set(int32_t netId, uint32_t mark,
        mPrivateDnsTransports.erase(netId);
        resolv_stats_set_servers_for_dot(netId, {});
        mPrivateDnsValidateThreads.erase(netId);
        // TODO: As mPrivateDnsValidateThreads is reset, validation threads which haven't yet
        // finished are considered outdated. Consider signaling the outdated validation threads to
        // stop them from updating the state of PrivateDnsConfiguration (possibly disallow them to
        // report onPrivateDnsValidationEvent).
        return 0;
    }

+7 −0
Original line number Diff line number Diff line
@@ -57,6 +57,13 @@ class DnsMetricsListener : public BaseMetricsListener {
    // Wait for the expected private DNS validation result until timeout.
    bool waitForPrivateDnsValidation(const std::string& serverAddr, const bool validated);

    // Return true if a validation result for |serverAddr| is found; otherwise, return false.
    // Only exists for testing.
    bool findValidationRecord(const std::string& serverAddr) const EXCLUDES(mMutex) {
        std::lock_guard lock(mMutex);
        return mValidationRecords.find({mNetId, serverAddr}) != mValidationRecords.end();
    }

  private:
    typedef std::pair<int32_t, std::string> ServerKey;

+1 −0
Original line number Diff line number Diff line
@@ -200,6 +200,7 @@ void DnsTlsFrontend::requestHandler() {
                break;
            }

            accept_connection_count_++;
            if (hangOnHandshake_) {
                LOG(DEBUG) << "TEST ONLY: unresponsive to SSL handshake";

+2 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ class DnsTlsFrontend {
    int queries() const { return queries_; }
    void clearQueries() { queries_ = 0; }
    bool waitForQueries(int expected_count) const;
    int acceptConnectionsCount() const { return accept_connection_count_; }

    void set_chain_length(int length) { chain_length_ = length; }
    void setHangOnHandshakeForTesting(bool hangOnHandshake) { hangOnHandshake_ = hangOnHandshake; }
@@ -88,6 +89,7 @@ class DnsTlsFrontend {
    // Eventfd used to signal for the handler thread termination.
    android::base::unique_fd event_fd_;
    std::atomic<int> queries_ = 0;
    std::atomic<int> accept_connection_count_ = 0;
    std::thread handler_thread_ GUARDED_BY(update_mutex_);
    std::mutex update_mutex_;
    int chain_length_ = 1;
+399 −64

File changed.

Preview size limit exceeded, changes collapsed.

Loading