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

Commit 6cb2be07 authored by Hungming Chen's avatar Hungming Chen Committed by Nucca Chen
Browse files

resolv_gold_test: use static linked libprotobuf-cpp-lite

Currently, resolv gold test is using dynamic linked libprotobuf-cpp-full
because it needs class TextFormat to convert the human readable protobuf
text file to protobuf object. Unfortunately, the libprotobuf-cpp-full
raises a linked library compatibility issue and it is prohibited to be
static linked. The resolv gold test built from R can't run on Q device.

An alternative way is that uses static linked libprotobuf-cpp-lite and
pre-convert all pb text files into pb binary files. It helps the test
get rid of libprotobuf-cpp-full because class TextFormat is not
required any more.

Bug: 145176964
Test: atest
Change-Id: Id35bd71eb427c09af47ab871e1ad3bef1d1eb9a1
parent 427364ce
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ cc_library_static {
    defaults: ["netd_defaults"],
    proto: {
        export_proto_headers: true,
        type: "full",
        type: "lite",
    },
    srcs: [
        "golddata.proto",
@@ -34,7 +34,7 @@ cc_test {
    test_suites: ["device-tests", "mts"],
    require_root: true,
    defaults: ["netd_defaults"],
    data: ["testdata/*.pbtxt"],
    data: ["testdata/pb/*.pb"],
    srcs: [
        "resolv_gold_test.cpp",
    ],
@@ -44,7 +44,6 @@ cc_test {
    shared_libs: [
        "libbinder_ndk",
        "libcrypto",
        "libprotobuf-cpp-full",
        "libssl",
    ],
    static_libs: [
@@ -57,6 +56,7 @@ cc_test {
        "libnetd_test_dnsresponder_ndk",
        "libnetd_test_resolv_utils",
        "libnetdutils",
        "libprotobuf-cpp-lite",
        "netd_aidl_interface-ndk_platform",
        "netd_event_listener_interface-ndk_platform",
        "server_configurable_flags",
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

syntax = "proto3";
package android.net;
option optimize_for = LITE_RUNTIME;

// Used to indicate which call is invoked to send DNS lookups.
enum CallType {
+13 −12
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@
#include <android-base/result.h>
#include <android-base/stringprintf.h>
#include <gmock/gmock-matchers.h>
#include <google/protobuf/text_format.h>
#include <gtest/gtest.h>

#include "PrivateDnsConfiguration.h"
@@ -50,17 +49,19 @@ enum class DnsProtocol { CLEARTEXT, TLS };
// TODO: Consider moving to packages/modules/DnsResolver/tests/resolv_test_utils.h.
constexpr unsigned int MAXPACKET = 8 * 1024;

const std::string kTestDataPath = android::base::GetExecutableDirectory() + "/testdata/";
// The testdata/pb/*.pb are generated from testdata/*.pbtext.
// TODO: Generate .pb files via precompiler.
const std::string kTestDataPath = android::base::GetExecutableDirectory() + "/testdata/pb/";
const std::vector<std::string> kGoldFilesGetAddrInfo = {
        "getaddrinfo.topsite.google.pbtxt",    "getaddrinfo.topsite.youtube.pbtxt",
        "getaddrinfo.topsite.amazon.pbtxt",    "getaddrinfo.topsite.yahoo.pbtxt",
        "getaddrinfo.topsite.facebook.pbtxt",  "getaddrinfo.topsite.reddit.pbtxt",
        "getaddrinfo.topsite.wikipedia.pbtxt", "getaddrinfo.topsite.ebay.pbtxt",
        "getaddrinfo.topsite.netflix.pbtxt",   "getaddrinfo.topsite.bing.pbtxt"};
const std::vector<std::string> kGoldFilesGetAddrInfoTls = {"getaddrinfo.tls.topsite.google.pbtxt"};
const std::vector<std::string> kGoldFilesGetHostByName = {"gethostbyname.topsite.youtube.pbtxt"};
        "getaddrinfo.topsite.google.pb",    "getaddrinfo.topsite.youtube.pb",
        "getaddrinfo.topsite.amazon.pb",    "getaddrinfo.topsite.yahoo.pb",
        "getaddrinfo.topsite.facebook.pb",  "getaddrinfo.topsite.reddit.pb",
        "getaddrinfo.topsite.wikipedia.pb", "getaddrinfo.topsite.ebay.pb",
        "getaddrinfo.topsite.netflix.pb",   "getaddrinfo.topsite.bing.pb"};
const std::vector<std::string> kGoldFilesGetAddrInfoTls = {"getaddrinfo.tls.topsite.google.pb"};
const std::vector<std::string> kGoldFilesGetHostByName = {"gethostbyname.topsite.youtube.pb"};
const std::vector<std::string> kGoldFilesGetHostByNameTls = {
        "gethostbyname.tls.topsite.youtube.pbtxt"};
        "gethostbyname.tls.topsite.youtube.pb"};

// Fixture test class definition.
class TestBase : public ::testing::Test {
@@ -126,7 +127,7 @@ class TestBase : public ::testing::Test {
    }

    Result<GoldTest> ToProto(const std::string& filename) {
        // Convert the testing configuration from .pbtxt file to proto.
        // Convert the testing configuration from binary .pb file to proto.
        std::string content;
        const std::string path = kTestDataPath + filename;

@@ -134,7 +135,7 @@ class TestBase : public ::testing::Test {
        if (!ret) return Errorf("Read {} failed: {}", path, strerror(errno));

        android::net::GoldTest goldtest;
        ret = google::protobuf::TextFormat::ParseFromString(content, &goldtest);
        ret = goldtest.ParseFromString(content);
        if (!ret) return Errorf("Parse {} failed", path);

        return goldtest;
+672 B

File added.

No diff preview for this file type.

+414 B

File added.

No diff preview for this file type.

Loading