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

Commit 201af352 authored by Mike Yu's avatar Mike Yu Committed by Automerger Merge Worker
Browse files

Support creating a network with a given netId in tests am: 4bdc8678 am: 327d4c8c

Original change: https://android-review.googlesource.com/c/platform/packages/modules/DnsResolver/+/1906165

Change-Id: I83097c84b9399c7cd9813b23ee5d7cc067e349ec
parents a2d29582 327d4c8c
Loading
Loading
Loading
Loading
+22 −19
Original line number Original line Diff line number Diff line
@@ -21,8 +21,6 @@
#include <android/binder_manager.h>
#include <android/binder_manager.h>
#include "NetdClient.h"
#include "NetdClient.h"


// TODO: make this dynamic and stop depending on implementation details.
#define TEST_OEM_NETWORK "oem29"
#define TEST_NETID 30
#define TEST_NETID 30


// TODO: move this somewhere shared.
// TODO: move this somewhere shared.
@@ -172,43 +170,48 @@ void DnsResponderClient::SetupDNSServers(unsigned numServers, const std::vector<
    }
    }
}
}


int DnsResponderClient::SetupOemNetwork() {
int DnsResponderClient::SetupOemNetwork(int oemNetId) {
    mNetdSrv->networkDestroy(TEST_NETID);
    mNetdSrv->networkDestroy(oemNetId);
    mDnsResolvSrv->destroyNetworkCache(TEST_NETID);
    mDnsResolvSrv->destroyNetworkCache(oemNetId);


    ::ndk::ScopedAStatus ret;
    ::ndk::ScopedAStatus ret;
    if (DnsResponderClient::isRemoteVersionSupported(mNetdSrv, 6)) {
    if (DnsResponderClient::isRemoteVersionSupported(mNetdSrv, 6)) {
        const auto& config = DnsResponderClient::makeNativeNetworkConfig(
        const auto& config = DnsResponderClient::makeNativeNetworkConfig(
                TEST_NETID, NativeNetworkType::PHYSICAL, INetd::PERMISSION_NONE, /*secure=*/false);
                oemNetId, NativeNetworkType::PHYSICAL, INetd::PERMISSION_NONE, /*secure=*/false);
        ret = mNetdSrv->networkCreate(config);
        ret = mNetdSrv->networkCreate(config);
    } else {
    } else {
        // Only for presubmit tests that run mainline module (and its tests) on R or earlier images.
        // Only for presubmit tests that run mainline module (and its tests) on R or earlier images.
#pragma clang diagnostic push
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
        ret = mNetdSrv->networkCreatePhysical(TEST_NETID, INetd::PERMISSION_NONE);
        ret = mNetdSrv->networkCreatePhysical(oemNetId, INetd::PERMISSION_NONE);
#pragma clang diagnostic pop
#pragma clang diagnostic pop
    }
    }
    if (!ret.isOk()) {
    if (!ret.isOk()) {
        fprintf(stderr, "Creating physical network %d failed, %s\n", TEST_NETID, ret.getMessage());
        fprintf(stderr, "Creating physical network %d failed, %s\n", oemNetId, ret.getMessage());
        return -1;
        return -1;
    }
    }
    ret = mDnsResolvSrv->createNetworkCache(TEST_NETID);
    ret = mDnsResolvSrv->createNetworkCache(oemNetId);
    if (!ret.isOk()) {
    if (!ret.isOk()) {
        fprintf(stderr, "Creating network cache %d failed, %s\n", TEST_NETID, ret.getMessage());
        fprintf(stderr, "Creating network cache %d failed, %s\n", oemNetId, ret.getMessage());
        return -1;
        return -1;
    }
    }
    setNetworkForProcess(TEST_NETID);
    setNetworkForProcess(oemNetId);
    if ((unsigned)TEST_NETID != getNetworkForProcess()) {
    if ((unsigned)oemNetId != getNetworkForProcess()) {
        return -1;
        return -1;
    }
    }
    return TEST_NETID;
    return 0;
}
}


void DnsResponderClient::TearDownOemNetwork(int oemNetId) {
int DnsResponderClient::TearDownOemNetwork(int oemNetId) {
    if (oemNetId != -1) {
    if (auto status = mNetdSrv->networkDestroy(oemNetId); !status.isOk()) {
        mNetdSrv->networkDestroy(oemNetId);
        fprintf(stderr, "Removing network %d failed, %s\n", oemNetId, status.getMessage());
        mDnsResolvSrv->destroyNetworkCache(oemNetId);
        return -1;
    }
    if (auto status = mDnsResolvSrv->destroyNetworkCache(oemNetId); !status.isOk()) {
        fprintf(stderr, "Removing network cache %d failed, %s\n", oemNetId, status.getMessage());
        return -1;
    }
    }
    return 0;
}
}


void DnsResponderClient::SetUp() {
void DnsResponderClient::SetUp() {
@@ -228,11 +231,11 @@ void DnsResponderClient::SetUp() {


    // Ensure resolutions go via proxy.
    // Ensure resolutions go via proxy.
    setenv(ANDROID_DNS_MODE, "", 1);
    setenv(ANDROID_DNS_MODE, "", 1);
    mOemNetId = SetupOemNetwork();
    SetupOemNetwork(TEST_NETID);
}
}


void DnsResponderClient::TearDown() {
void DnsResponderClient::TearDown() {
    TearDownOemNetwork(mOemNetId);
    TearDownOemNetwork(TEST_NETID);
}
}


NativeNetworkConfig DnsResponderClient::makeNativeNetworkConfig(int netId,
NativeNetworkConfig DnsResponderClient::makeNativeNetworkConfig(int netId,
+3 −4
Original line number Original line Diff line number Diff line
@@ -128,9 +128,9 @@ class DnsResponderClient {
            const std::vector<std::string>& domains, const std::string& tlsHostname,
            const std::vector<std::string>& domains, const std::string& tlsHostname,
            const std::vector<std::string>& tlsServers, const std::string& caCert = "");
            const std::vector<std::string>& tlsServers, const std::string& caCert = "");


    int SetupOemNetwork();
    // Returns 0 on success and a negative value on failure.

    int SetupOemNetwork(int oemNetId);
    void TearDownOemNetwork(int oemNetId);
    int TearDownOemNetwork(int oemNetId);


    virtual void SetUp();
    virtual void SetUp();
    virtual void TearDown();
    virtual void TearDown();
@@ -141,5 +141,4 @@ class DnsResponderClient {
  private:
  private:
    std::shared_ptr<aidl::android::net::INetd> mNetdSrv;
    std::shared_ptr<aidl::android::net::INetd> mNetdSrv;
    std::shared_ptr<aidl::android::net::IDnsResolver> mDnsResolvSrv;
    std::shared_ptr<aidl::android::net::IDnsResolver> mDnsResolvSrv;
    int mOemNetId = -1;
};
};
+2 −2
Original line number Original line Diff line number Diff line
@@ -226,8 +226,8 @@ class ResolverTest : public ::testing::Test {
    }
    }


    void resetNetwork() {
    void resetNetwork() {
        mDnsClient.TearDown();
        EXPECT_EQ(mDnsClient.TearDownOemNetwork(TEST_NETID), 0);
        mDnsClient.SetupOemNetwork();
        EXPECT_EQ(mDnsClient.SetupOemNetwork(TEST_NETID), 0);
    }
    }


    void StartDns(test::DNSResponder& dns, const std::vector<DnsRecord>& records) {
    void StartDns(test::DNSResponder& dns, const std::vector<DnsRecord>& records) {
+2 −2
Original line number Original line Diff line number Diff line
@@ -192,8 +192,8 @@ class BaseTest : public ::testing::Test {
    }
    }


    void resetNetwork() {
    void resetNetwork() {
        mDnsClient.TearDown();
        EXPECT_EQ(mDnsClient.TearDownOemNetwork(TEST_NETID), 0);
        mDnsClient.SetupOemNetwork();
        EXPECT_EQ(mDnsClient.SetupOemNetwork(TEST_NETID), 0);
    }
    }


    void flushCache() { mDnsClient.resolvService()->flushNetworkCache(TEST_NETID); }
    void flushCache() { mDnsClient.resolvService()->flushNetworkCache(TEST_NETID); }