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

Commit 0f4dd25d authored by Luke Huang's avatar Luke Huang Committed by Gerrit Code Review
Browse files

Merge "Add remote version check for flush cache tests"

parents 47106030 0b5a76c1
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -139,6 +139,20 @@ bool DnsResponderClient::GetResolverInfo(aidl::android::net::IDnsResolver* dnsRe
    return ResolverStats::decodeAll(stats32, stats);
}

bool DnsResponderClient::isRemoteVersionSupported(
        aidl::android::net::IDnsResolver* dnsResolverService, int requiredVersion) {
    int remoteVersion = 0;
    if (!dnsResolverService->getInterfaceVersion(&remoteVersion).isOk()) {
        LOG(FATAL) << "Can't get 'dnsresolver' remote version";
    }
    if (remoteVersion < requiredVersion) {
        LOG(WARNING) << StringPrintf("Remote version: %d < Required version: %d", remoteVersion,
                                     requiredVersion);
        return false;
    }
    return true;
}

bool DnsResponderClient::SetResolversForNetwork(const std::vector<std::string>& servers,
                                                const std::vector<std::string>& domains,
                                                const std::vector<int>& params) {
+12 −0
Original line number Diff line number Diff line
@@ -37,6 +37,15 @@ inline const std::vector<int> kDefaultParams = {
        2,        // retry count
};

#define SKIP_IF_REMOTE_VERSION_LESS_THAN(service, version)                                         \
    do {                                                                                           \
        if (!DnsResponderClient::isRemoteVersionSupported(service, version)) {                     \
            std::cerr << "    Skip test. Remote version is too old, required version: " << version \
                      << std::endl;                                                                \
            return;                                                                                \
        }                                                                                          \
    } while (0)

class DnsResponderClient {
  public:
    struct Mapping {
@@ -74,6 +83,9 @@ class DnsResponderClient {

    bool SetResolversFromParcel(const aidl::android::net::ResolverParamsParcel& resolverParams);

    static bool isRemoteVersionSupported(aidl::android::net::IDnsResolver* dnsResolverService,
                                         int enabledVersion);

    static bool GetResolverInfo(aidl::android::net::IDnsResolver* dnsResolverService,
                                unsigned netId, std::vector<std::string>* servers,
                                std::vector<std::string>* domains,
+1 −0
Original line number Diff line number Diff line
@@ -322,6 +322,7 @@ TEST_F(DnsResolverBinderTest, CreateDestroyNetworkCache) {
}

TEST_F(DnsResolverBinderTest, FlushNetworkCache) {
    SKIP_IF_REMOTE_VERSION_LESS_THAN(mDnsResolver.get(), 4);
    // cache has beed created in DnsResolverBinderTest constructor
    EXPECT_TRUE(mDnsResolver->flushNetworkCache(TEST_NETID).isOk());
    EXPECT_EQ(ENONET, mDnsResolver->flushNetworkCache(-1).getServiceSpecificError());
+3 −0
Original line number Diff line number Diff line
@@ -3553,6 +3553,7 @@ TEST_F(ResolverTest, ConnectTlsServerTimeout) {
}

TEST_F(ResolverTest, FlushNetworkCache) {
    SKIP_IF_REMOTE_VERSION_LESS_THAN(mDnsClient.resolvService(), 4);
    test::DNSResponder dns;
    StartDns(dns, {{kHelloExampleCom, ns_type::ns_t_a, kHelloExampleComAddrV4}});
    ASSERT_TRUE(mDnsClient.SetResolversForNetwork());
@@ -3571,6 +3572,7 @@ TEST_F(ResolverTest, FlushNetworkCache) {
}

TEST_F(ResolverTest, FlushNetworkCache_random) {
    SKIP_IF_REMOTE_VERSION_LESS_THAN(mDnsClient.resolvService(), 4);
    constexpr int num_flush = 10;
    constexpr int num_queries = 20;
    test::DNSResponder dns;
@@ -3596,6 +3598,7 @@ TEST_F(ResolverTest, FlushNetworkCache_random) {

// flush cache while one query is wait-for-response, another is pending.
TEST_F(ResolverTest, FlushNetworkCache_concurrent) {
    SKIP_IF_REMOTE_VERSION_LESS_THAN(mDnsClient.resolvService(), 4);
    const char* listen_addr1 = "127.0.0.9";
    const char* listen_addr2 = "127.0.0.10";
    test::DNSResponder dns1(listen_addr1);