86 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
| /*
 | |
|  * 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
 |