[EventEngine] Posix NativeDNSResolver implementation (#35153)
<!--
If you know who should review your pull request, please assign it to that
person, otherwise the pull request would get assigned randomly.
If your pull request is for a specific language, please add the appropriate
lang label.
-->
Closes #35153
COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35153 from yijiem:native_dns_resolver a4107f7d81
PiperOrigin-RevId: 588543137
This commit is contained in:
parent
a58f3f2df5
commit
1abfc97502
|
|
@ -1212,6 +1212,9 @@ if(gRPC_BUILD_TESTS)
|
|||
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
|
||||
add_dependencies(buildtests_cxx posix_event_engine_connect_test)
|
||||
endif()
|
||||
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
|
||||
add_dependencies(buildtests_cxx posix_event_engine_native_dns_test)
|
||||
endif()
|
||||
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
|
||||
add_dependencies(buildtests_cxx posix_event_engine_test)
|
||||
endif()
|
||||
|
|
@ -2245,6 +2248,7 @@ add_library(grpc
|
|||
src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
|
||||
src/core/lib/event_engine/posix_engine/internal_errqueue.cc
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
|
||||
|
|
@ -2973,6 +2977,7 @@ add_library(grpc_unsecure
|
|||
src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
|
||||
src/core/lib/event_engine/posix_engine/internal_errqueue.cc
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
|
||||
|
|
@ -4961,6 +4966,7 @@ add_library(grpc_authorization_provider
|
|||
src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
|
||||
src/core/lib/event_engine/posix_engine/internal_errqueue.cc
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
|
||||
|
|
@ -18275,6 +18281,48 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
|
|||
)
|
||||
|
||||
|
||||
endif()
|
||||
endif()
|
||||
if(gRPC_BUILD_TESTS)
|
||||
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
|
||||
|
||||
add_executable(posix_event_engine_native_dns_test
|
||||
test/core/event_engine/event_engine_test_utils.cc
|
||||
test/core/event_engine/test_suite/event_engine_test_framework.cc
|
||||
test/core/event_engine/test_suite/posix/oracle_event_engine_posix.cc
|
||||
test/core/event_engine/test_suite/posix_event_engine_native_dns_test.cc
|
||||
test/core/event_engine/test_suite/tests/dns_test.cc
|
||||
test/core/util/fake_udp_and_tcp_server.cc
|
||||
test/cpp/util/get_grpc_test_runfile_dir.cc
|
||||
test/cpp/util/windows/manifest_file.cc
|
||||
)
|
||||
target_compile_features(posix_event_engine_native_dns_test PUBLIC cxx_std_14)
|
||||
target_include_directories(posix_event_engine_native_dns_test
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
|
||||
${_gRPC_RE2_INCLUDE_DIR}
|
||||
${_gRPC_SSL_INCLUDE_DIR}
|
||||
${_gRPC_UPB_GENERATED_DIR}
|
||||
${_gRPC_UPB_GRPC_GENERATED_DIR}
|
||||
${_gRPC_UPB_INCLUDE_DIR}
|
||||
${_gRPC_XXHASH_INCLUDE_DIR}
|
||||
${_gRPC_ZLIB_INCLUDE_DIR}
|
||||
third_party/googletest/googletest/include
|
||||
third_party/googletest/googletest
|
||||
third_party/googletest/googlemock/include
|
||||
third_party/googletest/googlemock
|
||||
${_gRPC_PROTO_GENS_DIR}
|
||||
)
|
||||
|
||||
target_link_libraries(posix_event_engine_native_dns_test
|
||||
${_gRPC_ALLTARGETS_LIBRARIES}
|
||||
gtest
|
||||
grpc++_test_util
|
||||
)
|
||||
|
||||
|
||||
endif()
|
||||
endif()
|
||||
if(gRPC_BUILD_TESTS)
|
||||
|
|
@ -24603,6 +24651,7 @@ add_executable(test_core_transport_chaotic_good_frame_test
|
|||
src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
|
||||
src/core/lib/event_engine/posix_engine/internal_errqueue.cc
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc
|
||||
src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
|
||||
|
|
|
|||
|
|
@ -1450,6 +1450,7 @@ LIBGRPC_SRC = \
|
|||
src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc \
|
||||
src/core/lib/event_engine/posix_engine/internal_errqueue.cc \
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc \
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_engine_listener.cc \
|
||||
|
|
@ -2028,6 +2029,7 @@ LIBGRPC_UNSECURE_SRC = \
|
|||
src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc \
|
||||
src/core/lib/event_engine/posix_engine/internal_errqueue.cc \
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc \
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_engine_listener.cc \
|
||||
|
|
|
|||
|
|
@ -1277,6 +1277,8 @@ let package = Package(
|
|||
"src/core/lib/event_engine/posix_engine/internal_errqueue.h",
|
||||
"src/core/lib/event_engine/posix_engine/lockfree_event.cc",
|
||||
"src/core/lib/event_engine/posix_engine/lockfree_event.h",
|
||||
"src/core/lib/event_engine/posix_engine/native_dns_resolver.cc",
|
||||
"src/core/lib/event_engine/posix_engine/native_dns_resolver.h",
|
||||
"src/core/lib/event_engine/posix_engine/posix_endpoint.cc",
|
||||
"src/core/lib/event_engine/posix_engine/posix_endpoint.h",
|
||||
"src/core/lib/event_engine/posix_engine/posix_engine.cc",
|
||||
|
|
@ -1303,6 +1305,7 @@ let package = Package(
|
|||
"src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h",
|
||||
"src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc",
|
||||
"src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h",
|
||||
"src/core/lib/event_engine/ref_counted_dns_resolver_interface.h",
|
||||
"src/core/lib/event_engine/resolved_address.cc",
|
||||
"src/core/lib/event_engine/resolved_address_internal.h",
|
||||
"src/core/lib/event_engine/shim.cc",
|
||||
|
|
|
|||
|
|
@ -877,6 +877,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h
|
||||
- src/core/lib/event_engine/posix_engine/internal_errqueue.h
|
||||
- src/core/lib/event_engine/posix_engine/lockfree_event.h
|
||||
- src/core/lib/event_engine/posix_engine/native_dns_resolver.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_endpoint.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine_closure.h
|
||||
|
|
@ -891,6 +892,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h
|
||||
- src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h
|
||||
- src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h
|
||||
- src/core/lib/event_engine/ref_counted_dns_resolver_interface.h
|
||||
- src/core/lib/event_engine/resolved_address_internal.h
|
||||
- src/core/lib/event_engine/shim.h
|
||||
- src/core/lib/event_engine/tcp_socket_utils.h
|
||||
|
|
@ -1699,6 +1701,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
|
||||
- src/core/lib/event_engine/posix_engine/internal_errqueue.cc
|
||||
- src/core/lib/event_engine/posix_engine/lockfree_event.cc
|
||||
- src/core/lib/event_engine/posix_engine/native_dns_resolver.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_endpoint.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
|
||||
|
|
@ -2331,6 +2334,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h
|
||||
- src/core/lib/event_engine/posix_engine/internal_errqueue.h
|
||||
- src/core/lib/event_engine/posix_engine/lockfree_event.h
|
||||
- src/core/lib/event_engine/posix_engine/native_dns_resolver.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_endpoint.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine_closure.h
|
||||
|
|
@ -2345,6 +2349,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h
|
||||
- src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h
|
||||
- src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h
|
||||
- src/core/lib/event_engine/ref_counted_dns_resolver_interface.h
|
||||
- src/core/lib/event_engine/resolved_address_internal.h
|
||||
- src/core/lib/event_engine/shim.h
|
||||
- src/core/lib/event_engine/tcp_socket_utils.h
|
||||
|
|
@ -2777,6 +2782,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
|
||||
- src/core/lib/event_engine/posix_engine/internal_errqueue.cc
|
||||
- src/core/lib/event_engine/posix_engine/lockfree_event.cc
|
||||
- src/core/lib/event_engine/posix_engine/native_dns_resolver.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_endpoint.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
|
||||
|
|
@ -4465,6 +4471,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h
|
||||
- src/core/lib/event_engine/posix_engine/internal_errqueue.h
|
||||
- src/core/lib/event_engine/posix_engine/lockfree_event.h
|
||||
- src/core/lib/event_engine/posix_engine/native_dns_resolver.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_endpoint.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine_closure.h
|
||||
|
|
@ -4479,6 +4486,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h
|
||||
- src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h
|
||||
- src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h
|
||||
- src/core/lib/event_engine/ref_counted_dns_resolver_interface.h
|
||||
- src/core/lib/event_engine/resolved_address_internal.h
|
||||
- src/core/lib/event_engine/shim.h
|
||||
- src/core/lib/event_engine/tcp_socket_utils.h
|
||||
|
|
@ -4818,6 +4826,7 @@ libs:
|
|||
- src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
|
||||
- src/core/lib/event_engine/posix_engine/internal_errqueue.cc
|
||||
- src/core/lib/event_engine/posix_engine/lockfree_event.cc
|
||||
- src/core/lib/event_engine/posix_engine/native_dns_resolver.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_endpoint.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
|
||||
|
|
@ -12970,6 +12979,33 @@ targets:
|
|||
platforms:
|
||||
- linux
|
||||
- posix
|
||||
- name: posix_event_engine_native_dns_test
|
||||
gtest: true
|
||||
build: test
|
||||
language: c++
|
||||
headers:
|
||||
- test/core/event_engine/event_engine_test_utils.h
|
||||
- test/core/event_engine/test_suite/event_engine_test_framework.h
|
||||
- test/core/event_engine/test_suite/posix/oracle_event_engine_posix.h
|
||||
- test/core/event_engine/test_suite/tests/dns_test.h
|
||||
- test/core/util/fake_udp_and_tcp_server.h
|
||||
- test/cpp/util/get_grpc_test_runfile_dir.h
|
||||
- test/cpp/util/windows/manifest_file.h
|
||||
src:
|
||||
- test/core/event_engine/event_engine_test_utils.cc
|
||||
- test/core/event_engine/test_suite/event_engine_test_framework.cc
|
||||
- test/core/event_engine/test_suite/posix/oracle_event_engine_posix.cc
|
||||
- test/core/event_engine/test_suite/posix_event_engine_native_dns_test.cc
|
||||
- test/core/event_engine/test_suite/tests/dns_test.cc
|
||||
- test/core/util/fake_udp_and_tcp_server.cc
|
||||
- test/cpp/util/get_grpc_test_runfile_dir.cc
|
||||
- test/cpp/util/windows/manifest_file.cc
|
||||
deps:
|
||||
- gtest
|
||||
- grpc++_test_util
|
||||
platforms:
|
||||
- linux
|
||||
- posix
|
||||
- name: posix_event_engine_test
|
||||
gtest: true
|
||||
build: test
|
||||
|
|
@ -16795,6 +16831,7 @@ targets:
|
|||
- src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h
|
||||
- src/core/lib/event_engine/posix_engine/internal_errqueue.h
|
||||
- src/core/lib/event_engine/posix_engine/lockfree_event.h
|
||||
- src/core/lib/event_engine/posix_engine/native_dns_resolver.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_endpoint.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine.h
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine_closure.h
|
||||
|
|
@ -16809,6 +16846,7 @@ targets:
|
|||
- src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h
|
||||
- src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h
|
||||
- src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h
|
||||
- src/core/lib/event_engine/ref_counted_dns_resolver_interface.h
|
||||
- src/core/lib/event_engine/resolved_address_internal.h
|
||||
- src/core/lib/event_engine/shim.h
|
||||
- src/core/lib/event_engine/tcp_socket_utils.h
|
||||
|
|
@ -17129,6 +17167,7 @@ targets:
|
|||
- src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
|
||||
- src/core/lib/event_engine/posix_engine/internal_errqueue.cc
|
||||
- src/core/lib/event_engine/posix_engine/lockfree_event.cc
|
||||
- src/core/lib/event_engine/posix_engine/native_dns_resolver.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_endpoint.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine.cc
|
||||
- src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
|
||||
|
|
|
|||
|
|
@ -540,6 +540,7 @@ if test "$PHP_GRPC" != "no"; then
|
|||
src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc \
|
||||
src/core/lib/event_engine/posix_engine/internal_errqueue.cc \
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc \
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_engine_listener.cc \
|
||||
|
|
|
|||
|
|
@ -505,6 +505,7 @@ if (PHP_GRPC != "no") {
|
|||
"src\\core\\lib\\event_engine\\posix_engine\\event_poller_posix_default.cc " +
|
||||
"src\\core\\lib\\event_engine\\posix_engine\\internal_errqueue.cc " +
|
||||
"src\\core\\lib\\event_engine\\posix_engine\\lockfree_event.cc " +
|
||||
"src\\core\\lib\\event_engine\\posix_engine\\native_dns_resolver.cc " +
|
||||
"src\\core\\lib\\event_engine\\posix_engine\\posix_endpoint.cc " +
|
||||
"src\\core\\lib\\event_engine\\posix_engine\\posix_engine.cc " +
|
||||
"src\\core\\lib\\event_engine\\posix_engine\\posix_engine_listener.cc " +
|
||||
|
|
|
|||
|
|
@ -951,6 +951,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h',
|
||||
'src/core/lib/event_engine/posix_engine/internal_errqueue.h',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.h',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine_closure.h',
|
||||
|
|
@ -965,6 +966,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h',
|
||||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h',
|
||||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h',
|
||||
'src/core/lib/event_engine/ref_counted_dns_resolver_interface.h',
|
||||
'src/core/lib/event_engine/resolved_address_internal.h',
|
||||
'src/core/lib/event_engine/shim.h',
|
||||
'src/core/lib/event_engine/tcp_socket_utils.h',
|
||||
|
|
@ -2183,6 +2185,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h',
|
||||
'src/core/lib/event_engine/posix_engine/internal_errqueue.h',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.h',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine_closure.h',
|
||||
|
|
@ -2197,6 +2200,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h',
|
||||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h',
|
||||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h',
|
||||
'src/core/lib/event_engine/ref_counted_dns_resolver_interface.h',
|
||||
'src/core/lib/event_engine/resolved_address_internal.h',
|
||||
'src/core/lib/event_engine/shim.h',
|
||||
'src/core/lib/event_engine/tcp_socket_utils.h',
|
||||
|
|
|
|||
|
|
@ -1380,6 +1380,8 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/event_engine/posix_engine/internal_errqueue.h',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.cc',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.h',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.cc',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine.cc',
|
||||
|
|
@ -1406,6 +1408,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h',
|
||||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc',
|
||||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h',
|
||||
'src/core/lib/event_engine/ref_counted_dns_resolver_interface.h',
|
||||
'src/core/lib/event_engine/resolved_address.cc',
|
||||
'src/core/lib/event_engine/resolved_address_internal.h',
|
||||
'src/core/lib/event_engine/shim.cc',
|
||||
|
|
@ -2945,6 +2948,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h',
|
||||
'src/core/lib/event_engine/posix_engine/internal_errqueue.h',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.h',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine.h',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine_closure.h',
|
||||
|
|
@ -2959,6 +2963,7 @@ Pod::Spec.new do |s|
|
|||
'src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h',
|
||||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h',
|
||||
'src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h',
|
||||
'src/core/lib/event_engine/ref_counted_dns_resolver_interface.h',
|
||||
'src/core/lib/event_engine/resolved_address_internal.h',
|
||||
'src/core/lib/event_engine/shim.h',
|
||||
'src/core/lib/event_engine/tcp_socket_utils.h',
|
||||
|
|
|
|||
|
|
@ -1283,6 +1283,8 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/event_engine/posix_engine/internal_errqueue.h )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/lockfree_event.cc )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/lockfree_event.h )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/native_dns_resolver.cc )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/native_dns_resolver.h )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/posix_endpoint.cc )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/posix_endpoint.h )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/posix_engine.cc )
|
||||
|
|
@ -1309,6 +1311,7 @@ Gem::Specification.new do |s|
|
|||
s.files += %w( src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc )
|
||||
s.files += %w( src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h )
|
||||
s.files += %w( src/core/lib/event_engine/ref_counted_dns_resolver_interface.h )
|
||||
s.files += %w( src/core/lib/event_engine/resolved_address.cc )
|
||||
s.files += %w( src/core/lib/event_engine/resolved_address_internal.h )
|
||||
s.files += %w( src/core/lib/event_engine/shim.cc )
|
||||
|
|
|
|||
|
|
@ -770,6 +770,7 @@
|
|||
'src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc',
|
||||
'src/core/lib/event_engine/posix_engine/internal_errqueue.cc',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.cc',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine_listener.cc',
|
||||
|
|
@ -1290,6 +1291,7 @@
|
|||
'src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc',
|
||||
'src/core/lib/event_engine/posix_engine/internal_errqueue.cc',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.cc',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine_listener.cc',
|
||||
|
|
@ -2069,6 +2071,7 @@
|
|||
'src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc',
|
||||
'src/core/lib/event_engine/posix_engine/internal_errqueue.cc',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.cc',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine_listener.cc',
|
||||
|
|
|
|||
|
|
@ -1265,6 +1265,8 @@
|
|||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/internal_errqueue.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/lockfree_event.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/lockfree_event.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/native_dns_resolver.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/native_dns_resolver.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/posix_endpoint.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/posix_endpoint.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/posix_engine.cc" role="src" />
|
||||
|
|
@ -1291,6 +1293,7 @@
|
|||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/ref_counted_dns_resolver_interface.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/resolved_address.cc" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/resolved_address_internal.h" role="src" />
|
||||
<file baseinstalldir="/" name="src/core/lib/event_engine/shim.cc" role="src" />
|
||||
|
|
|
|||
|
|
@ -2141,6 +2141,7 @@ grpc_cc_library(
|
|||
"forkable",
|
||||
"init_internally",
|
||||
"iomgr_port",
|
||||
"native_dns_resolver",
|
||||
"no_destruct",
|
||||
"posix_event_engine_base_hdrs",
|
||||
"posix_event_engine_closure",
|
||||
|
|
@ -2151,7 +2152,9 @@ grpc_cc_library(
|
|||
"posix_event_engine_tcp_socket_utils",
|
||||
"posix_event_engine_timer",
|
||||
"posix_event_engine_timer_manager",
|
||||
"ref_counted_dns_resolver_interface",
|
||||
"useful",
|
||||
"//:config_vars",
|
||||
"//:event_engine_base_hdrs",
|
||||
"//:gpr",
|
||||
"//:grpc_trace",
|
||||
|
|
@ -2472,6 +2475,41 @@ grpc_cc_library(
|
|||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "ref_counted_dns_resolver_interface",
|
||||
hdrs = ["lib/event_engine/ref_counted_dns_resolver_interface.h"],
|
||||
external_deps = ["absl/strings"],
|
||||
deps = [
|
||||
"//:event_engine_base_hdrs",
|
||||
"//:gpr_platform",
|
||||
"//:orphanable",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "native_dns_resolver",
|
||||
srcs = [
|
||||
"lib/event_engine/posix_engine/native_dns_resolver.cc",
|
||||
],
|
||||
hdrs = [
|
||||
"lib/event_engine/posix_engine/native_dns_resolver.h",
|
||||
],
|
||||
external_deps = [
|
||||
"absl/functional:any_invocable",
|
||||
"absl/status",
|
||||
"absl/status:statusor",
|
||||
"absl/strings",
|
||||
"absl/strings:str_format",
|
||||
],
|
||||
deps = [
|
||||
"iomgr_port",
|
||||
"ref_counted_dns_resolver_interface",
|
||||
"useful",
|
||||
"//:event_engine_base_hdrs",
|
||||
"//:gpr",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_library(
|
||||
name = "ares_resolver",
|
||||
srcs = [
|
||||
|
|
@ -2507,6 +2545,7 @@ grpc_cc_library(
|
|||
"posix_event_engine_closure",
|
||||
"posix_event_engine_event_poller",
|
||||
"posix_event_engine_tcp_socket_utils",
|
||||
"ref_counted_dns_resolver_interface",
|
||||
"resolved_address",
|
||||
"slice",
|
||||
"windows_iocp",
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ AresResolver::CreateAresResolver(
|
|||
AresResolver::AresResolver(
|
||||
std::unique_ptr<GrpcPolledFdFactory> polled_fd_factory,
|
||||
std::shared_ptr<EventEngine> event_engine, ares_channel channel)
|
||||
: grpc_core::InternallyRefCounted<AresResolver>(
|
||||
: RefCountedDNSResolverInterface(
|
||||
GRPC_TRACE_FLAG_ENABLED(grpc_trace_ares_resolver) ? "AresResolver"
|
||||
: nullptr),
|
||||
channel_(channel),
|
||||
|
|
@ -230,8 +230,8 @@ void AresResolver::Orphan() {
|
|||
}
|
||||
|
||||
void AresResolver::LookupHostname(
|
||||
absl::string_view name, absl::string_view default_port,
|
||||
EventEngine::DNSResolver::LookupHostnameCallback callback) {
|
||||
EventEngine::DNSResolver::LookupHostnameCallback callback,
|
||||
absl::string_view name, absl::string_view default_port) {
|
||||
absl::string_view host;
|
||||
absl::string_view port_string;
|
||||
if (!grpc_core::SplitHostPort(name, &host, &port_string)) {
|
||||
|
|
@ -296,8 +296,8 @@ void AresResolver::LookupHostname(
|
|||
}
|
||||
|
||||
void AresResolver::LookupSRV(
|
||||
absl::string_view name,
|
||||
EventEngine::DNSResolver::LookupSRVCallback callback) {
|
||||
EventEngine::DNSResolver::LookupSRVCallback callback,
|
||||
absl::string_view name) {
|
||||
absl::string_view host;
|
||||
absl::string_view port;
|
||||
if (!grpc_core::SplitHostPort(name, &host, &port)) {
|
||||
|
|
@ -325,8 +325,8 @@ void AresResolver::LookupSRV(
|
|||
}
|
||||
|
||||
void AresResolver::LookupTXT(
|
||||
absl::string_view name,
|
||||
EventEngine::DNSResolver::LookupTXTCallback callback) {
|
||||
EventEngine::DNSResolver::LookupTXTCallback callback,
|
||||
absl::string_view name) {
|
||||
absl::string_view host;
|
||||
absl::string_view port;
|
||||
if (!grpc_core::SplitHostPort(name, &host, &port)) {
|
||||
|
|
@ -387,7 +387,8 @@ void AresResolver::CheckSocketsLocked() {
|
|||
event_engine_->Run(
|
||||
[self = Ref(DEBUG_LOCATION, "CheckSocketsLocked"),
|
||||
fd_node]() mutable {
|
||||
self->OnReadable(fd_node, absl::OkStatus());
|
||||
static_cast<AresResolver*>(self.get())
|
||||
->OnReadable(fd_node, absl::OkStatus());
|
||||
});
|
||||
} else {
|
||||
// Otherwise register with the poller for readable event.
|
||||
|
|
@ -396,7 +397,8 @@ void AresResolver::CheckSocketsLocked() {
|
|||
fd_node->polled_fd->RegisterForOnReadableLocked(
|
||||
[self = Ref(DEBUG_LOCATION, "CheckSocketsLocked"),
|
||||
fd_node](absl::Status status) mutable {
|
||||
self->OnReadable(fd_node, status);
|
||||
static_cast<AresResolver*>(self.get())
|
||||
->OnReadable(fd_node, status);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -410,7 +412,8 @@ void AresResolver::CheckSocketsLocked() {
|
|||
fd_node->polled_fd->RegisterForOnWriteableLocked(
|
||||
[self = Ref(DEBUG_LOCATION, "CheckSocketsLocked"),
|
||||
fd_node](absl::Status status) mutable {
|
||||
self->OnWritable(fd_node, status);
|
||||
static_cast<AresResolver*>(self.get())
|
||||
->OnWritable(fd_node, status);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -453,7 +456,7 @@ void AresResolver::MaybeStartTimerLocked() {
|
|||
ares_backup_poll_alarm_handle_ = event_engine_->RunAfter(
|
||||
kAresBackupPollAlarmDuration,
|
||||
[self = Ref(DEBUG_LOCATION, "MaybeStartTimerLocked")]() {
|
||||
self->OnAresBackupPollAlarm();
|
||||
static_cast<AresResolver*>(self.get())->OnAresBackupPollAlarm();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
#include <grpc/support/log.h>
|
||||
|
||||
#include "src/core/lib/event_engine/grpc_polled_fd.h"
|
||||
#include "src/core/lib/event_engine/ref_counted_dns_resolver_interface.h"
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
#include "src/core/lib/gprpp/sync.h"
|
||||
|
||||
|
|
@ -54,7 +55,7 @@ extern grpc_core::TraceFlag grpc_trace_ares_resolver;
|
|||
} \
|
||||
} while (0)
|
||||
|
||||
class AresResolver : public grpc_core::InternallyRefCounted<AresResolver> {
|
||||
class AresResolver : public RefCountedDNSResolverInterface {
|
||||
public:
|
||||
static absl::StatusOr<grpc_core::OrphanablePtr<AresResolver>>
|
||||
CreateAresResolver(absl::string_view dns_server,
|
||||
|
|
@ -67,15 +68,13 @@ class AresResolver : public grpc_core::InternallyRefCounted<AresResolver> {
|
|||
~AresResolver() override;
|
||||
void Orphan() override ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
|
||||
void LookupHostname(absl::string_view name, absl::string_view default_port,
|
||||
EventEngine::DNSResolver::LookupHostnameCallback callback)
|
||||
ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
void LookupSRV(absl::string_view name,
|
||||
EventEngine::DNSResolver::LookupSRVCallback callback)
|
||||
ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
void LookupTXT(absl::string_view name,
|
||||
EventEngine::DNSResolver::LookupTXTCallback callback)
|
||||
ABSL_LOCKS_EXCLUDED(mutex_);
|
||||
void LookupHostname(EventEngine::DNSResolver::LookupHostnameCallback callback,
|
||||
absl::string_view name, absl::string_view default_port)
|
||||
ABSL_LOCKS_EXCLUDED(mutex_) override;
|
||||
void LookupSRV(EventEngine::DNSResolver::LookupSRVCallback callback,
|
||||
absl::string_view name) ABSL_LOCKS_EXCLUDED(mutex_) override;
|
||||
void LookupTXT(EventEngine::DNSResolver::LookupTXTCallback callback,
|
||||
absl::string_view name) ABSL_LOCKS_EXCLUDED(mutex_) override;
|
||||
|
||||
private:
|
||||
// A FdNode saves (not owns) a live socket/fd which c-ares creates, and owns a
|
||||
|
|
|
|||
|
|
@ -0,0 +1,131 @@
|
|||
// Copyright 2023 The gRPC Authors.
|
||||
//
|
||||
// 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 <grpc/support/port_platform.h>
|
||||
|
||||
#include "src/core/lib/iomgr/port.h"
|
||||
|
||||
#ifdef GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
|
||||
|
||||
#include <netdb.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/functional/any_invocable.h"
|
||||
#include "absl/status/status.h"
|
||||
#include "absl/status/statusor.h"
|
||||
#include "absl/strings/str_cat.h"
|
||||
#include "absl/strings/str_format.h"
|
||||
|
||||
#include "src/core/lib/event_engine/posix_engine/native_dns_resolver.h"
|
||||
#include "src/core/lib/gpr/useful.h"
|
||||
#include "src/core/lib/gprpp/host_port.h"
|
||||
|
||||
namespace grpc_event_engine {
|
||||
namespace experimental {
|
||||
namespace {
|
||||
|
||||
absl::StatusOr<std::vector<EventEngine::ResolvedAddress>>
|
||||
LookupHostnameBlocking(absl::string_view name, absl::string_view default_port) {
|
||||
struct addrinfo hints;
|
||||
struct addrinfo *result = nullptr, *resp;
|
||||
std::string host;
|
||||
std::string port;
|
||||
// parse name, splitting it into host and port parts
|
||||
grpc_core::SplitHostPort(name, &host, &port);
|
||||
if (host.empty()) {
|
||||
return absl::InvalidArgumentError(absl::StrCat("Unparseable name: ", name));
|
||||
}
|
||||
if (port.empty()) {
|
||||
if (default_port.empty()) {
|
||||
return absl::InvalidArgumentError(
|
||||
absl::StrFormat("No port in name %s or default_port argument", name));
|
||||
}
|
||||
port = std::string(default_port);
|
||||
}
|
||||
// Call getaddrinfo
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_family = AF_UNSPEC; // ipv4 or ipv6
|
||||
hints.ai_socktype = SOCK_STREAM; // stream socket
|
||||
hints.ai_flags = AI_PASSIVE; // for wildcard IP address
|
||||
int s = getaddrinfo(host.c_str(), port.c_str(), &hints, &result);
|
||||
if (s != 0) {
|
||||
// Retry if well-known service name is recognized
|
||||
const char* svc[][2] = {{"http", "80"}, {"https", "443"}};
|
||||
for (size_t i = 0; i < GPR_ARRAY_SIZE(svc); i++) {
|
||||
if (port == svc[i][0]) {
|
||||
s = getaddrinfo(host.c_str(), svc[i][1], &hints, &result);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (s != 0) {
|
||||
return absl::UnknownError(absl::StrFormat(
|
||||
"Address lookup failed for %s os_error: %s syscall: getaddrinfo", name,
|
||||
gai_strerror(s)));
|
||||
}
|
||||
// Success path: fill in addrs
|
||||
std::vector<EventEngine::ResolvedAddress> addresses;
|
||||
for (resp = result; resp != nullptr; resp = resp->ai_next) {
|
||||
addresses.emplace_back(resp->ai_addr, resp->ai_addrlen);
|
||||
}
|
||||
if (result) {
|
||||
freeaddrinfo(result);
|
||||
}
|
||||
return addresses;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
NativeDNSResolver::NativeDNSResolver(std::shared_ptr<EventEngine> event_engine)
|
||||
: event_engine_(std::move(event_engine)) {}
|
||||
|
||||
void NativeDNSResolver::LookupHostname(
|
||||
EventEngine::DNSResolver::LookupHostnameCallback on_resolved,
|
||||
absl::string_view name, absl::string_view default_port) {
|
||||
event_engine_->Run(
|
||||
[name, default_port, on_resolved = std::move(on_resolved)]() mutable {
|
||||
on_resolved(LookupHostnameBlocking(name, default_port));
|
||||
});
|
||||
}
|
||||
|
||||
void NativeDNSResolver::LookupSRV(
|
||||
EventEngine::DNSResolver::LookupSRVCallback on_resolved,
|
||||
absl::string_view /* name */) {
|
||||
// Not supported
|
||||
event_engine_->Run([on_resolved = std::move(on_resolved)]() mutable {
|
||||
on_resolved(absl::UnimplementedError(
|
||||
"The Native resolver does not support looking up SRV records"));
|
||||
});
|
||||
}
|
||||
|
||||
void NativeDNSResolver::LookupTXT(
|
||||
EventEngine::DNSResolver::LookupTXTCallback on_resolved,
|
||||
absl::string_view /* name */) {
|
||||
// Not supported
|
||||
event_engine_->Run([on_resolved = std::move(on_resolved)]() mutable {
|
||||
on_resolved(absl::UnimplementedError(
|
||||
"The Native resolver does not support looking up TXT records"));
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace experimental
|
||||
} // namespace grpc_event_engine
|
||||
|
||||
#endif // GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
// Copyright 2023 The gRPC Authors.
|
||||
//
|
||||
// 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.
|
||||
|
||||
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_NATIVE_DNS_RESOLVER_H
|
||||
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_NATIVE_DNS_RESOLVER_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
#include "src/core/lib/iomgr/port.h"
|
||||
|
||||
#ifdef GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
|
||||
|
||||
#include <grpc/event_engine/event_engine.h>
|
||||
|
||||
#include "src/core/lib/event_engine/ref_counted_dns_resolver_interface.h"
|
||||
|
||||
namespace grpc_event_engine {
|
||||
namespace experimental {
|
||||
|
||||
// An asynchronous DNS resolver which uses the native platform's getaddrinfo
|
||||
// API. Only supports A/AAAA records.
|
||||
class NativeDNSResolver : public RefCountedDNSResolverInterface {
|
||||
public:
|
||||
explicit NativeDNSResolver(std::shared_ptr<EventEngine> event_engine);
|
||||
|
||||
void LookupHostname(
|
||||
EventEngine::DNSResolver::LookupHostnameCallback on_resolved,
|
||||
absl::string_view name, absl::string_view default_port) override;
|
||||
|
||||
void LookupSRV(EventEngine::DNSResolver::LookupSRVCallback on_resolved,
|
||||
absl::string_view name) override;
|
||||
|
||||
void LookupTXT(EventEngine::DNSResolver::LookupTXTCallback on_resolved,
|
||||
absl::string_view name) override;
|
||||
|
||||
void Orphan() override { delete this; }
|
||||
|
||||
private:
|
||||
std::shared_ptr<EventEngine> event_engine_;
|
||||
};
|
||||
|
||||
} // namespace experimental
|
||||
} // namespace grpc_event_engine
|
||||
|
||||
#endif // GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
|
||||
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_NATIVE_DNS_RESOLVER_H
|
||||
|
|
@ -28,6 +28,7 @@
|
|||
#include "absl/cleanup/cleanup.h"
|
||||
#include "absl/functional/any_invocable.h"
|
||||
#include "absl/status/status.h"
|
||||
#include "absl/strings/match.h"
|
||||
#include "absl/strings/str_cat.h"
|
||||
|
||||
#include <grpc/event_engine/event_engine.h>
|
||||
|
|
@ -36,12 +37,15 @@
|
|||
#include <grpc/support/cpu.h>
|
||||
#include <grpc/support/log.h>
|
||||
|
||||
#include "src/core/lib/config/config_vars.h"
|
||||
#include "src/core/lib/debug/trace.h"
|
||||
#include "src/core/lib/event_engine/ares_resolver.h"
|
||||
#include "src/core/lib/event_engine/forkable.h"
|
||||
#include "src/core/lib/event_engine/grpc_polled_fd.h"
|
||||
#include "src/core/lib/event_engine/poller.h"
|
||||
#include "src/core/lib/event_engine/posix.h"
|
||||
#include "src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h"
|
||||
#include "src/core/lib/event_engine/posix_engine/native_dns_resolver.h"
|
||||
#include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h"
|
||||
#include "src/core/lib/event_engine/posix_engine/timer.h"
|
||||
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
||||
|
|
@ -90,6 +94,15 @@ class TimerForkCallbackMethods {
|
|||
static void PostforkChild() { g_timer_fork_manager->PostforkChild(); }
|
||||
};
|
||||
|
||||
bool ShouldUseAresDnsResolver() {
|
||||
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
||||
auto resolver_env = grpc_core::ConfigVars::Get().DnsResolver();
|
||||
return resolver_env.empty() || absl::EqualsIgnoreCase(resolver_env, "ares");
|
||||
#else // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
||||
return false;
|
||||
#endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
#ifdef GRPC_POSIX_SOCKET_TCP
|
||||
|
|
@ -517,49 +530,54 @@ EventEngine::TaskHandle PosixEventEngine::RunAfterInternal(
|
|||
return handle;
|
||||
}
|
||||
|
||||
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
|
||||
PosixEventEngine::PosixDNSResolver::PosixDNSResolver(
|
||||
grpc_core::OrphanablePtr<AresResolver> ares_resolver)
|
||||
: ares_resolver_(std::move(ares_resolver)) {}
|
||||
grpc_core::OrphanablePtr<RefCountedDNSResolverInterface> dns_resolver)
|
||||
: dns_resolver_(std::move(dns_resolver)) {}
|
||||
|
||||
void PosixEventEngine::PosixDNSResolver::LookupHostname(
|
||||
LookupHostnameCallback on_resolve, absl::string_view name,
|
||||
absl::string_view default_port) {
|
||||
ares_resolver_->LookupHostname(name, default_port, std::move(on_resolve));
|
||||
dns_resolver_->LookupHostname(std::move(on_resolve), name, default_port);
|
||||
}
|
||||
|
||||
void PosixEventEngine::PosixDNSResolver::LookupSRV(LookupSRVCallback on_resolve,
|
||||
absl::string_view name) {
|
||||
ares_resolver_->LookupSRV(name, std::move(on_resolve));
|
||||
dns_resolver_->LookupSRV(std::move(on_resolve), name);
|
||||
}
|
||||
|
||||
void PosixEventEngine::PosixDNSResolver::LookupTXT(LookupTXTCallback on_resolve,
|
||||
absl::string_view name) {
|
||||
ares_resolver_->LookupTXT(name, std::move(on_resolve));
|
||||
dns_resolver_->LookupTXT(std::move(on_resolve), name);
|
||||
}
|
||||
|
||||
#endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
|
||||
absl::StatusOr<std::unique_ptr<EventEngine::DNSResolver>>
|
||||
PosixEventEngine::GetDNSResolver(
|
||||
const EventEngine::DNSResolver::ResolverOptions& options) {
|
||||
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
auto ares_resolver = AresResolver::CreateAresResolver(
|
||||
options.dns_server,
|
||||
std::make_unique<GrpcPolledFdFactoryPosix>(poller_manager_->Poller()),
|
||||
shared_from_this());
|
||||
if (!ares_resolver.ok()) {
|
||||
return ares_resolver.status();
|
||||
#ifndef GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
|
||||
grpc_core::Crash("Unable to get DNS resolver for this platform.");
|
||||
#else // GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
|
||||
// If c-ares is supported on the platform, build according to user's
|
||||
// configuration.
|
||||
if (ShouldUseAresDnsResolver()) {
|
||||
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
||||
GRPC_EVENT_ENGINE_DNS_TRACE("PosixEventEngine:%p creating AresResolver",
|
||||
this);
|
||||
auto ares_resolver = AresResolver::CreateAresResolver(
|
||||
options.dns_server,
|
||||
std::make_unique<GrpcPolledFdFactoryPosix>(poller_manager_->Poller()),
|
||||
shared_from_this());
|
||||
if (!ares_resolver.ok()) {
|
||||
return ares_resolver.status();
|
||||
}
|
||||
return std::make_unique<PosixEventEngine::PosixDNSResolver>(
|
||||
std::move(*ares_resolver));
|
||||
#endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
|
||||
}
|
||||
GRPC_EVENT_ENGINE_DNS_TRACE("PosixEventEngine:%p creating NativeDNSResolver",
|
||||
this);
|
||||
return std::make_unique<PosixEventEngine::PosixDNSResolver>(
|
||||
std::move(*ares_resolver));
|
||||
#else // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
// TODO(yijiem): Implement a basic A/AAAA-only native resolver in
|
||||
// PosixEventEngine.
|
||||
(void)options;
|
||||
grpc_core::Crash("unimplemented");
|
||||
#endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
grpc_core::MakeOrphanable<NativeDNSResolver>(shared_from_this()));
|
||||
#endif // GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
|
||||
}
|
||||
|
||||
bool PosixEventEngine::IsWorkerThread() { grpc_core::Crash("unimplemented"); }
|
||||
|
|
|
|||
|
|
@ -34,11 +34,11 @@
|
|||
#include <grpc/event_engine/event_engine.h>
|
||||
#include <grpc/event_engine/memory_allocator.h>
|
||||
|
||||
#include "src/core/lib/event_engine/ares_resolver.h"
|
||||
#include "src/core/lib/event_engine/handle_containers.h"
|
||||
#include "src/core/lib/event_engine/posix.h"
|
||||
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
|
||||
#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
|
||||
#include "src/core/lib/event_engine/ref_counted_dns_resolver_interface.h"
|
||||
#include "src/core/lib/event_engine/thread_pool/thread_pool.h"
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
#include "src/core/lib/gprpp/sync.h"
|
||||
|
|
@ -141,11 +141,8 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport,
|
|||
public:
|
||||
class PosixDNSResolver : public EventEngine::DNSResolver {
|
||||
public:
|
||||
PosixDNSResolver() = delete;
|
||||
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
explicit PosixDNSResolver(
|
||||
grpc_core::OrphanablePtr<AresResolver> ares_resolver);
|
||||
#endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
grpc_core::OrphanablePtr<RefCountedDNSResolverInterface> dns_resolver);
|
||||
void LookupHostname(LookupHostnameCallback on_resolve,
|
||||
absl::string_view name,
|
||||
absl::string_view default_port) override;
|
||||
|
|
@ -154,10 +151,8 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport,
|
|||
void LookupTXT(LookupTXTCallback on_resolve,
|
||||
absl::string_view name) override;
|
||||
|
||||
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
private:
|
||||
grpc_core::OrphanablePtr<AresResolver> ares_resolver_;
|
||||
#endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_TCP)
|
||||
grpc_core::OrphanablePtr<RefCountedDNSResolverInterface> dns_resolver_;
|
||||
};
|
||||
|
||||
#ifdef GRPC_POSIX_SOCKET_TCP
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
// Copyright 2023 The gRPC Authors.
|
||||
//
|
||||
// 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.
|
||||
|
||||
#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_REF_COUNTED_DNS_RESOLVER_INTERFACE_H
|
||||
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_REF_COUNTED_DNS_RESOLVER_INTERFACE_H
|
||||
|
||||
#include <grpc/support/port_platform.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
#include <grpc/event_engine/event_engine.h>
|
||||
|
||||
#include "src/core/lib/gprpp/orphanable.h"
|
||||
|
||||
namespace grpc_event_engine {
|
||||
namespace experimental {
|
||||
|
||||
class RefCountedDNSResolverInterface
|
||||
: public grpc_core::InternallyRefCounted<RefCountedDNSResolverInterface> {
|
||||
public:
|
||||
explicit RefCountedDNSResolverInterface(const char* trace = nullptr,
|
||||
intptr_t initial_refcount = 1)
|
||||
: grpc_core::InternallyRefCounted<RefCountedDNSResolverInterface>(
|
||||
trace, initial_refcount) {}
|
||||
|
||||
virtual void LookupHostname(
|
||||
EventEngine::DNSResolver::LookupHostnameCallback on_resolved,
|
||||
absl::string_view name, absl::string_view default_port) = 0;
|
||||
|
||||
virtual void LookupSRV(
|
||||
EventEngine::DNSResolver::LookupSRVCallback on_resolved,
|
||||
absl::string_view name) = 0;
|
||||
|
||||
virtual void LookupTXT(
|
||||
EventEngine::DNSResolver::LookupTXTCallback on_resolved,
|
||||
absl::string_view name) = 0;
|
||||
};
|
||||
|
||||
} // namespace experimental
|
||||
} // namespace grpc_event_engine
|
||||
|
||||
#endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_REF_COUNTED_DNS_RESOLVER_INTERFACE_H
|
||||
|
|
@ -204,17 +204,17 @@ WindowsEventEngine::WindowsDNSResolver::WindowsDNSResolver(
|
|||
void WindowsEventEngine::WindowsDNSResolver::LookupHostname(
|
||||
LookupHostnameCallback on_resolve, absl::string_view name,
|
||||
absl::string_view default_port) {
|
||||
ares_resolver_->LookupHostname(name, default_port, std::move(on_resolve));
|
||||
ares_resolver_->LookupHostname(std::move(on_resolve), name, default_port);
|
||||
}
|
||||
|
||||
void WindowsEventEngine::WindowsDNSResolver::LookupSRV(
|
||||
LookupSRVCallback on_resolve, absl::string_view name) {
|
||||
ares_resolver_->LookupSRV(name, std::move(on_resolve));
|
||||
ares_resolver_->LookupSRV(std::move(on_resolve), name);
|
||||
}
|
||||
|
||||
void WindowsEventEngine::WindowsDNSResolver::LookupTXT(
|
||||
LookupTXTCallback on_resolve, absl::string_view name) {
|
||||
ares_resolver_->LookupTXT(name, std::move(on_resolve));
|
||||
ares_resolver_->LookupTXT(std::move(on_resolve), name);
|
||||
}
|
||||
|
||||
#endif // GRPC_ARES == 1 && defined(GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER)
|
||||
|
|
|
|||
|
|
@ -514,6 +514,7 @@ CORE_SOURCE_FILES = [
|
|||
'src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc',
|
||||
'src/core/lib/event_engine/posix_engine/internal_errqueue.cc',
|
||||
'src/core/lib/event_engine/posix_engine/lockfree_event.cc',
|
||||
'src/core/lib/event_engine/posix_engine/native_dns_resolver.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_endpoint.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine.cc',
|
||||
'src/core/lib/event_engine/posix_engine/posix_engine_listener.cc',
|
||||
|
|
|
|||
|
|
@ -56,6 +56,24 @@ grpc_cc_test(
|
|||
],
|
||||
)
|
||||
|
||||
grpc_cc_test(
|
||||
name = "posix_event_engine_native_dns_test",
|
||||
srcs = ["posix_event_engine_native_dns_test.cc"],
|
||||
tags = [
|
||||
"no_mac",
|
||||
"no_windows",
|
||||
],
|
||||
uses_event_engine = True,
|
||||
uses_polling = True,
|
||||
deps = [
|
||||
"//:config_vars",
|
||||
"//src/core:posix_event_engine",
|
||||
"//test/core/event_engine:event_engine_test_utils",
|
||||
"//test/core/event_engine/test_suite/posix:oracle_event_engine_posix",
|
||||
"//test/core/event_engine/test_suite/tests:dns",
|
||||
],
|
||||
)
|
||||
|
||||
grpc_cc_test(
|
||||
name = "thready_posix_event_engine_test",
|
||||
srcs = ["thready_posix_event_engine_test.cc"],
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
// Copyright 2023 The gRPC Authors
|
||||
//
|
||||
// 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 <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <grpc/grpc.h>
|
||||
|
||||
#include "src/core/lib/config/config_vars.h"
|
||||
#include "src/core/lib/event_engine/posix_engine/posix_engine.h"
|
||||
#include "test/core/event_engine/test_suite/event_engine_test_framework.h"
|
||||
#include "test/core/event_engine/test_suite/posix/oracle_event_engine_posix.h"
|
||||
#include "test/core/event_engine/test_suite/tests/dns_test.h"
|
||||
#include "test/core/util/test_config.h"
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
grpc::testing::TestEnvironment env(&argc, argv);
|
||||
SetEventEngineFactories(
|
||||
[]() {
|
||||
return std::make_unique<
|
||||
grpc_event_engine::experimental::PosixEventEngine>();
|
||||
},
|
||||
[]() {
|
||||
return std::make_unique<
|
||||
grpc_event_engine::experimental::PosixOracleEventEngine>();
|
||||
});
|
||||
// TODO(ctiller): EventEngine temporarily needs grpc to be initialized first
|
||||
// until we clear out the iomgr shutdown code.
|
||||
grpc_core::ConfigVars::Overrides overrides;
|
||||
overrides.dns_resolver = "native";
|
||||
grpc_core::ConfigVars::SetOverrides(overrides);
|
||||
grpc_event_engine::experimental::InitDNSTests();
|
||||
grpc_init();
|
||||
int r = RUN_ALL_TESTS();
|
||||
grpc_shutdown();
|
||||
return r;
|
||||
}
|
||||
|
|
@ -35,6 +35,7 @@
|
|||
|
||||
#include <grpc/event_engine/event_engine.h>
|
||||
|
||||
#include "src/core/lib/config/config_vars.h"
|
||||
#include "src/core/lib/event_engine/tcp_socket_utils.h"
|
||||
#include "src/core/lib/gprpp/crash.h" // IWYU pragma: keep
|
||||
#include "src/core/lib/gprpp/notification.h"
|
||||
|
|
@ -96,6 +97,15 @@ MATCHER(StatusCodeEq, "") {
|
|||
return std::get<0>(arg).code() == std::get<1>(arg);
|
||||
}
|
||||
|
||||
#define SKIP_TEST_FOR_NATIVE_DNS_RESOLVER() \
|
||||
do { \
|
||||
if (grpc_core::ConfigVars::Get().DnsResolver() == "native") { \
|
||||
GTEST_SKIP() \
|
||||
<< "This test specifies a target DNS server which the native " \
|
||||
"DNS resolver does not support."; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
} // namespace
|
||||
|
||||
class EventEngineDNSTest : public EventEngineTest {
|
||||
|
|
@ -227,6 +237,7 @@ EventEngineDNSTest::DNSServer EventEngineDNSTest::dns_server_;
|
|||
#ifndef GRPC_IOS_EVENT_ENGINE_CLIENT
|
||||
|
||||
TEST_F(EventEngineDNSTest, QueryNXHostname) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
auto dns_resolver = CreateDefaultDNSResolver();
|
||||
dns_resolver->LookupHostname(
|
||||
[this](auto result) {
|
||||
|
|
@ -242,6 +253,7 @@ TEST_F(EventEngineDNSTest, QueryNXHostname) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, QueryWithIPLiteral) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
auto dns_resolver = CreateDefaultDNSResolver();
|
||||
dns_resolver->LookupHostname(
|
||||
[this](auto result) {
|
||||
|
|
@ -257,6 +269,7 @@ TEST_F(EventEngineDNSTest, QueryWithIPLiteral) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, QueryARecord) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
auto dns_resolver = CreateDefaultDNSResolver();
|
||||
dns_resolver->LookupHostname(
|
||||
[this](auto result) {
|
||||
|
|
@ -274,6 +287,7 @@ TEST_F(EventEngineDNSTest, QueryARecord) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, QueryAAAARecord) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
auto dns_resolver = CreateDefaultDNSResolver();
|
||||
dns_resolver->LookupHostname(
|
||||
[this](auto result) {
|
||||
|
|
@ -294,6 +308,7 @@ TEST_F(EventEngineDNSTest, QueryAAAARecord) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, TestAddressSorting) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
auto dns_resolver = CreateDefaultDNSResolver();
|
||||
dns_resolver->LookupHostname(
|
||||
[this](auto result) {
|
||||
|
|
@ -311,6 +326,7 @@ TEST_F(EventEngineDNSTest, TestAddressSorting) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, QuerySRVRecord) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
const SRVRecord kExpectedRecords[] = {
|
||||
{/*host=*/"ipv4-only-multi-target.dns-test.event-engine", /*port=*/1234,
|
||||
/*priority=*/0, /*weight=*/0},
|
||||
|
|
@ -329,6 +345,7 @@ TEST_F(EventEngineDNSTest, QuerySRVRecord) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, QuerySRVRecordWithLocalhost) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
auto dns_resolver = CreateDefaultDNSResolver();
|
||||
dns_resolver->LookupSRV(
|
||||
[this](auto result) {
|
||||
|
|
@ -341,6 +358,7 @@ TEST_F(EventEngineDNSTest, QuerySRVRecordWithLocalhost) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, QueryTXTRecord) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
// clang-format off
|
||||
const std::string kExpectedRecord =
|
||||
"grpc_config=[{"
|
||||
|
|
@ -370,6 +388,7 @@ TEST_F(EventEngineDNSTest, QueryTXTRecord) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, QueryTXTRecordWithLocalhost) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
auto dns_resolver = CreateDefaultDNSResolver();
|
||||
dns_resolver->LookupTXT(
|
||||
[this](auto result) {
|
||||
|
|
@ -382,6 +401,7 @@ TEST_F(EventEngineDNSTest, QueryTXTRecordWithLocalhost) {
|
|||
}
|
||||
|
||||
TEST_F(EventEngineDNSTest, TestCancelActiveDNSQuery) {
|
||||
SKIP_TEST_FOR_NATIVE_DNS_RESOLVER();
|
||||
const std::string name = "dont-care-since-wont-be-resolved.test.com:1234";
|
||||
auto dns_resolver = CreateDNSResolverWithNonResponsiveServer();
|
||||
dns_resolver->LookupHostname(
|
||||
|
|
|
|||
|
|
@ -2282,6 +2282,8 @@ src/core/lib/event_engine/posix_engine/internal_errqueue.cc \
|
|||
src/core/lib/event_engine/posix_engine/internal_errqueue.h \
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc \
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.h \
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc \
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.h \
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.h \
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc \
|
||||
|
|
@ -2308,6 +2310,7 @@ src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h \
|
|||
src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h \
|
||||
src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc \
|
||||
src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h \
|
||||
src/core/lib/event_engine/ref_counted_dns_resolver_interface.h \
|
||||
src/core/lib/event_engine/resolved_address.cc \
|
||||
src/core/lib/event_engine/resolved_address_internal.h \
|
||||
src/core/lib/event_engine/shim.cc \
|
||||
|
|
|
|||
|
|
@ -2058,6 +2058,8 @@ src/core/lib/event_engine/posix_engine/internal_errqueue.cc \
|
|||
src/core/lib/event_engine/posix_engine/internal_errqueue.h \
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.cc \
|
||||
src/core/lib/event_engine/posix_engine/lockfree_event.h \
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.cc \
|
||||
src/core/lib/event_engine/posix_engine/native_dns_resolver.h \
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.cc \
|
||||
src/core/lib/event_engine/posix_engine/posix_endpoint.h \
|
||||
src/core/lib/event_engine/posix_engine/posix_engine.cc \
|
||||
|
|
@ -2084,6 +2086,7 @@ src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h \
|
|||
src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h \
|
||||
src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc \
|
||||
src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h \
|
||||
src/core/lib/event_engine/ref_counted_dns_resolver_interface.h \
|
||||
src/core/lib/event_engine/resolved_address.cc \
|
||||
src/core/lib/event_engine/resolved_address_internal.h \
|
||||
src/core/lib/event_engine/shim.cc \
|
||||
|
|
|
|||
|
|
@ -6881,6 +6881,26 @@
|
|||
],
|
||||
"uses_polling": true
|
||||
},
|
||||
{
|
||||
"args": [],
|
||||
"benchmark": false,
|
||||
"ci_platforms": [
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"cpu_cost": 1.0,
|
||||
"exclude_configs": [],
|
||||
"exclude_iomgrs": [],
|
||||
"flaky": false,
|
||||
"gtest": true,
|
||||
"language": "c++",
|
||||
"name": "posix_event_engine_native_dns_test",
|
||||
"platforms": [
|
||||
"linux",
|
||||
"posix"
|
||||
],
|
||||
"uses_polling": true
|
||||
},
|
||||
{
|
||||
"args": [],
|
||||
"benchmark": false,
|
||||
|
|
|
|||
Loading…
Reference in New Issue