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

Commit d7233998 authored by Wayne Ma's avatar Wayne Ma
Browse files

Address comment from aosp/2138392.

Test: atest ResolverTest
Change-Id: Id2328ae1ebb90fe93f8852df61e9dcf09cd5b646
parent f941b86e
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1650,15 +1650,15 @@ int resolv_set_nameservers(unsigned netid, const std::vector<std::string>& serve
    uint8_t old_max_samples = netconfig->params.max_samples;
    netconfig->params = params;

    const int retryCount = Experiments::getInstance()->getFlag("retry_count", RES_DFLRETRY);
    const int retransmissionInterval =
            Experiments::getInstance()->getFlag("retransmission_time_interval", RES_TIMEOUT);
    // This check must always be true, but add a protection against OEMs configure negative values
    // for retry_count and base_timeout_msec.
    if (netconfig->params.retry_count == 0) {
        const int retryCount = Experiments::getInstance()->getFlag("retry_count", RES_DFLRETRY);
        netconfig->params.retry_count = (retryCount <= 0) ? RES_DFLRETRY : retryCount;
    }
    if (netconfig->params.base_timeout_msec == 0) {
        const int retransmissionInterval =
                Experiments::getInstance()->getFlag("retransmission_time_interval", RES_TIMEOUT);
        netconfig->params.base_timeout_msec =
                (retransmissionInterval <= 0) ? RES_TIMEOUT : retransmissionInterval;
    }
+32 −39
Original line number Diff line number Diff line
@@ -7627,12 +7627,26 @@ TEST_F(ResolverMultinetworkTest, PerAppDefaultNetwork) {
    }
}

TEST_F(ResolverTest, NegativeValueInExperimentFlag_WithValidParams) {
    ScopedSystemProperties sp1(kRetransIntervalFlag, "-3000");
    ScopedSystemProperties sp2(kRetryCountFlag, "-2");
TEST_F(ResolverTest, NegativeValueInExperimentFlag) {
    // Test setting up different retry count and BASE_TIMEOUT_MSEC in DNS server.
    const struct TestConfig {
        int retryCount;
        int baseTimeoutMsec;
        int expectedRetryCount;
        int expectedBaseTimeoutMsec;
    } TestConfigs[]{{2, 1000, 2, 1000}, {0, 0, RES_DFLRETRY, RES_TIMEOUT}};

    for (const auto& config : TestConfigs) {
        SCOPED_TRACE(fmt::format("Setting up retryCount = {}, baseTimeoutMsec = {}",
                                 config.retryCount, config.baseTimeoutMsec));
        // Initiate negative values in experiment flags.
        ScopedSystemProperties sp1(kRetryCountFlag, "-2");
        ScopedSystemProperties sp2(kRetransIntervalFlag, "-3000");
        resetNetwork();

        ResolverParamsParcel setupParams = DnsResponderClient::GetDefaultResolverParamsParcel();
        setupParams.retryCount = config.retryCount;
        setupParams.baseTimeoutMsec = config.baseTimeoutMsec;
        ASSERT_TRUE(mDnsClient.SetResolversFromParcel(setupParams));

        std::vector<std::string> res_servers;
@@ -7642,31 +7656,10 @@ TEST_F(ResolverTest, NegativeValueInExperimentFlag_WithValidParams) {
        std::vector<ResolverStats> res_stats;
        int wait_for_pending_req_timeout_count;
        ASSERT_TRUE(DnsResponderClient::GetResolverInfo(
            mDnsClient.resolvService(), TEST_NETID, &res_servers, &res_domains, &res_tls_servers,
            &res_params, &res_stats, &wait_for_pending_req_timeout_count));
    EXPECT_EQ(setupParams.retryCount, res_params.retry_count);
    EXPECT_EQ(setupParams.baseTimeoutMsec, res_params.base_timeout_msec);
}

TEST_F(ResolverTest, NegativeValueInExperimentFlag_WithZeroParams) {
    ScopedSystemProperties sp1(kRetransIntervalFlag, "-3000");
    ScopedSystemProperties sp2(kRetryCountFlag, "-2");
    resetNetwork();

    ResolverParamsParcel setupParams = DnsResponderClient::GetDefaultResolverParamsParcel();
    setupParams.retryCount = 0;
    setupParams.baseTimeoutMsec = 0;
    ASSERT_TRUE(mDnsClient.SetResolversFromParcel(setupParams));
                mDnsClient.resolvService(), TEST_NETID, &res_servers, &res_domains,
                &res_tls_servers, &res_params, &res_stats, &wait_for_pending_req_timeout_count));

    std::vector<std::string> res_servers;
    std::vector<std::string> res_domains;
    std::vector<std::string> res_tls_servers;
    res_params res_params;
    std::vector<ResolverStats> res_stats;
    int wait_for_pending_req_timeout_count;
    ASSERT_TRUE(DnsResponderClient::GetResolverInfo(
            mDnsClient.resolvService(), TEST_NETID, &res_servers, &res_domains, &res_tls_servers,
            &res_params, &res_stats, &wait_for_pending_req_timeout_count));
    EXPECT_EQ(RES_DFLRETRY, res_params.retry_count);
    EXPECT_EQ(RES_TIMEOUT, res_params.base_timeout_msec);
        EXPECT_EQ(config.expectedRetryCount, res_params.retry_count);
        EXPECT_EQ(config.expectedBaseTimeoutMsec, res_params.base_timeout_msec);
    }
}