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

Commit 1a4058a1 authored by Luke Huang's avatar Luke Huang Committed by android-build-merger
Browse files

Merge "Add remote version check for flush cache tests"

am: 0f4dd25d

Change-Id: I5bee925de86935c4fdf635a29de80937acf2fcda
parents e71d6486 0f4dd25d
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);