blob: f6fecd821140e90b34785df76eaa798ef2bab48d [file] [log] [blame]
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <android-base/strings.h>
#include <gtest/gtest.h>
#include <resolv_stats_test_utils.h>
#include <stats.pb.h>
namespace android::net {
TEST(ResolvStatsUtils, NetworkDnsEventEq) {
NetworkDnsEventReported event1;
// Following fields will not be verified during the test in proto NetworkDnsEventReported.
// So don't need to config those values: event_type, return_code, latency_micros,
// hints_ai_flags, res_nsend_flags, network_type, private_dns_modes.
constexpr char event2[] = R"Event(
NetworkDnsEventReported {
dns_query_events:
{
dns_query_event:[
{
rcode: 3,
type: 28,
cache_hit: 1,
ip_version: 1,
protocol: 3,
retry_times: 28,
dns_server_index: 0,
connected: 1,
latency_micros: 5,
},
{
rcode: 0,
type: 1,
cache_hit: 1,
ip_version: 1,
protocol: 1,
retry_times: 56,
dns_server_index: 1,
connected: 0,
latency_micros: 0,
}
]
}
})Event";
// TODO: Add integration test to verify Level 1 fields of NetworkDnsEventReported.
// Level 1 fields, including event_type, return_code, hints_ai_flags, network_type, etc.
DnsQueryEvent* dnsQueryEvent1 = event1.mutable_dns_query_events()->add_dns_query_event();
dnsQueryEvent1->set_rcode(NS_R_NXDOMAIN);
dnsQueryEvent1->set_type(NS_T_AAAA);
dnsQueryEvent1->set_cache_hit(CS_NOTFOUND);
dnsQueryEvent1->set_ip_version(IV_IPV4);
dnsQueryEvent1->set_protocol(PROTO_DOT);
dnsQueryEvent1->set_retry_times(28);
dnsQueryEvent1->set_dns_server_index(0);
dnsQueryEvent1->set_connected(1);
dnsQueryEvent1->set_latency_micros(5);
DnsQueryEvent* dnsQueryEvent2 = event1.mutable_dns_query_events()->add_dns_query_event();
dnsQueryEvent2->set_rcode(NS_R_NO_ERROR);
dnsQueryEvent2->set_type(NS_T_A);
dnsQueryEvent2->set_cache_hit(CS_NOTFOUND);
dnsQueryEvent2->set_ip_version(IV_IPV4);
dnsQueryEvent2->set_protocol(PROTO_UDP);
dnsQueryEvent2->set_retry_times(56);
dnsQueryEvent2->set_dns_server_index(1);
dnsQueryEvent2->set_connected(0);
dnsQueryEvent2->set_latency_micros(5);
EXPECT_THAT(event1, NetworkDnsEventEq(fromNetworkDnsEventReportedStr(event2)));
}
} // namespace android::net