mirror of https://github.com/grpc/grpc-node.git
Merge pull request #864 from murgatroid99/native_cares_activation
Enable use of cares resolver
This commit is contained in:
commit
2e13f46141
|
@ -62,7 +62,7 @@
|
||||||
"all": true
|
"all": true
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "nyc gulp test",
|
"test": "nyc gulp test && GRPC_DNS_RESOLVER=ares nyc gulp nativeTestOnly",
|
||||||
"coverage": "nyc report --reporter=text-lcov | coveralls"
|
"coverage": "nyc report --reporter=text-lcov | coveralls"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,15 +83,20 @@
|
||||||
'include_dirs': [
|
'include_dirs': [
|
||||||
'deps/grpc',
|
'deps/grpc',
|
||||||
'deps/grpc/include',
|
'deps/grpc/include',
|
||||||
|
'deps/grpc/third_party/address_sorting/include',
|
||||||
|
'deps/grpc/third_party/cares',
|
||||||
|
'deps/grpc/third_party/cares/cares',
|
||||||
'deps/grpc/third_party/abseil-cpp',
|
'deps/grpc/third_party/abseil-cpp',
|
||||||
'deps/grpc/third_party/nanopb'
|
'deps/grpc/third_party/nanopb',
|
||||||
],
|
],
|
||||||
'defines': [
|
'defines': [
|
||||||
'PB_FIELD_32BIT',
|
'PB_FIELD_32BIT',
|
||||||
'GPR_BACKWARDS_COMPATIBILITY_MODE',
|
'GPR_BACKWARDS_COMPATIBILITY_MODE',
|
||||||
'GRPC_ARES=0',
|
'GRPC_ARES=1',
|
||||||
'GRPC_UV',
|
'GRPC_UV',
|
||||||
'GRPC_NODE_VERSION="1.22.0-dev"'
|
'GRPC_NODE_VERSION="1.22.0-dev"',
|
||||||
|
'CARES_STATICLIB',
|
||||||
|
'CARES_SYMBOL_HIDING'
|
||||||
],
|
],
|
||||||
'defines!': [
|
'defines!': [
|
||||||
'OPENSSL_THREADS'
|
'OPENSSL_THREADS'
|
||||||
|
@ -156,8 +161,7 @@
|
||||||
}],
|
}],
|
||||||
['OS == "win"', {
|
['OS == "win"', {
|
||||||
"include_dirs": [
|
"include_dirs": [
|
||||||
"deps/grpc/third_party/zlib",
|
"deps/grpc/third_party/zlib"
|
||||||
"deps/grpc/third_party/cares/cares"
|
|
||||||
],
|
],
|
||||||
"defines": [
|
"defines": [
|
||||||
'_WIN32_WINNT=0x0600',
|
'_WIN32_WINNT=0x0600',
|
||||||
|
@ -177,8 +181,7 @@
|
||||||
]
|
]
|
||||||
}, { # OS != "win"
|
}, { # OS != "win"
|
||||||
'include_dirs': [
|
'include_dirs': [
|
||||||
'<(node_root_dir)/deps/zlib',
|
'<(node_root_dir)/deps/zlib'
|
||||||
'<(node_root_dir)/deps/cares/include'
|
|
||||||
]
|
]
|
||||||
}],
|
}],
|
||||||
['OS == "mac"', {
|
['OS == "mac"', {
|
||||||
|
@ -561,6 +564,114 @@
|
||||||
}]
|
}]
|
||||||
],
|
],
|
||||||
'targets': [
|
'targets': [
|
||||||
|
{
|
||||||
|
'target_name': 'ares',
|
||||||
|
'product_prefix': 'lib',
|
||||||
|
'type': 'static_library',
|
||||||
|
'sources': [
|
||||||
|
'deps/grpc/third_party/cares/cares/ares__close_sockets.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares__get_hostent.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares__read_line.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares__timeval.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_cancel.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_create_query.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_data.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_destroy.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_expand_name.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_expand_string.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_fds.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_free_hostent.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_free_string.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_getenv.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_gethostbyaddr.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_gethostbyname.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_getnameinfo.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_getopt.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_getsock.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_init.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_library_init.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_llist.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_mkquery.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_nowarn.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_options.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_a_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_aaaa_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_mx_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_naptr_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_ns_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_ptr_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_soa_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_srv_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_parse_txt_reply.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_platform.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_process.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_query.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_search.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_send.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_strcasecmp.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_strdup.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_strerror.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_strsplit.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_timeout.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_version.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/ares_writev.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/bitncmp.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/inet_net_pton.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/inet_ntop.c',
|
||||||
|
'deps/grpc/third_party/cares/cares/windows_port.c',
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'_GNU_SOURCE'
|
||||||
|
],
|
||||||
|
'conditions': [
|
||||||
|
['OS == "mac"', {
|
||||||
|
'xcode_settings': {
|
||||||
|
'MACOSX_DEPLOYMENT_TARGET': '10.9'
|
||||||
|
},
|
||||||
|
'include_dirs': [
|
||||||
|
'deps/grpc/third_party/cares/config_darwin'
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'HAVE_CONFIG_H'
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
['OS == "linux"', {
|
||||||
|
'include_dirs': [
|
||||||
|
'deps/grpc/third_party/cares/config_linux'
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'HAVE_CONFIG_H'
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
['OS == "win"', {
|
||||||
|
'include_dirs': [
|
||||||
|
'deps/grpc/third_party/cares/config_windows'
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'HAVE_CONFIG_H'
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'target_name': 'address_sorting',
|
||||||
|
'product_prefix': 'lib',
|
||||||
|
'type': 'static_library',
|
||||||
|
'dependencies': [
|
||||||
|
],
|
||||||
|
'sources': [
|
||||||
|
'deps/grpc/third_party/address_sorting/address_sorting.c',
|
||||||
|
'deps/grpc/third_party/address_sorting/address_sorting_posix.c',
|
||||||
|
'deps/grpc/third_party/address_sorting/address_sorting_windows.c',
|
||||||
|
],
|
||||||
|
'conditions': [
|
||||||
|
['OS == "mac"', {
|
||||||
|
'xcode_settings': {
|
||||||
|
'MACOSX_DEPLOYMENT_TARGET': '10.9'
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
'target_name': 'gpr',
|
'target_name': 'gpr',
|
||||||
'product_prefix': 'lib',
|
'product_prefix': 'lib',
|
||||||
|
@ -1009,6 +1120,8 @@
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"grpc",
|
"grpc",
|
||||||
"gpr",
|
"gpr",
|
||||||
|
"ares",
|
||||||
|
"address_sorting"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit bb6a97b0c8fc11a5c27b03e2058dc383bbfc1e64
|
Subproject commit 64ec7201fd50c41a67ca3064833309f4e259cf06
|
|
@ -75,15 +75,20 @@
|
||||||
'include_dirs': [
|
'include_dirs': [
|
||||||
'deps/grpc',
|
'deps/grpc',
|
||||||
'deps/grpc/include',
|
'deps/grpc/include',
|
||||||
|
'deps/grpc/third_party/address_sorting/include',
|
||||||
|
'deps/grpc/third_party/cares',
|
||||||
|
'deps/grpc/third_party/cares/cares',
|
||||||
'deps/grpc/third_party/abseil-cpp',
|
'deps/grpc/third_party/abseil-cpp',
|
||||||
'deps/grpc/third_party/nanopb'
|
'deps/grpc/third_party/nanopb',
|
||||||
],
|
],
|
||||||
'defines': [
|
'defines': [
|
||||||
'PB_FIELD_32BIT',
|
'PB_FIELD_32BIT',
|
||||||
'GPR_BACKWARDS_COMPATIBILITY_MODE',
|
'GPR_BACKWARDS_COMPATIBILITY_MODE',
|
||||||
'GRPC_ARES=0',
|
'GRPC_ARES=1',
|
||||||
'GRPC_UV',
|
'GRPC_UV',
|
||||||
'GRPC_NODE_VERSION="${settings.get('node_version', settings.version)}"'
|
'GRPC_NODE_VERSION="${settings.get('node_version', settings.version)}"',
|
||||||
|
'CARES_STATICLIB',
|
||||||
|
'CARES_SYMBOL_HIDING'
|
||||||
],
|
],
|
||||||
'defines!': [
|
'defines!': [
|
||||||
'OPENSSL_THREADS'
|
'OPENSSL_THREADS'
|
||||||
|
@ -140,8 +145,7 @@
|
||||||
}],
|
}],
|
||||||
['OS == "win"', {
|
['OS == "win"', {
|
||||||
"include_dirs": [
|
"include_dirs": [
|
||||||
"deps/grpc/third_party/zlib",
|
"deps/grpc/third_party/zlib"
|
||||||
"deps/grpc/third_party/cares/cares"
|
|
||||||
],
|
],
|
||||||
"defines": [
|
"defines": [
|
||||||
'_WIN32_WINNT=0x0600',
|
'_WIN32_WINNT=0x0600',
|
||||||
|
@ -161,8 +165,7 @@
|
||||||
]
|
]
|
||||||
}, { # OS != "win"
|
}, { # OS != "win"
|
||||||
'include_dirs': [
|
'include_dirs': [
|
||||||
'<(node_root_dir)/deps/zlib',
|
'<(node_root_dir)/deps/zlib'
|
||||||
'<(node_root_dir)/deps/cares/include'
|
|
||||||
]
|
]
|
||||||
}],
|
}],
|
||||||
['OS == "mac"', {
|
['OS == "mac"', {
|
||||||
|
@ -279,8 +282,54 @@
|
||||||
}]
|
}]
|
||||||
],
|
],
|
||||||
'targets': [
|
'targets': [
|
||||||
|
% for lib in libs:
|
||||||
|
% if lib.name == 'ares':
|
||||||
|
{
|
||||||
|
'target_name': '${lib.name}',
|
||||||
|
'product_prefix': 'lib',
|
||||||
|
'type': 'static_library',
|
||||||
|
'sources': [
|
||||||
|
% for source in lib.src:
|
||||||
|
'deps/grpc/${source}',
|
||||||
|
% endfor
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'_GNU_SOURCE'
|
||||||
|
],
|
||||||
|
'conditions': [
|
||||||
|
['OS == "mac"', {
|
||||||
|
'xcode_settings': {
|
||||||
|
'MACOSX_DEPLOYMENT_TARGET': '10.9'
|
||||||
|
},
|
||||||
|
'include_dirs': [
|
||||||
|
'deps/grpc/third_party/cares/config_darwin'
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'HAVE_CONFIG_H'
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
['OS == "linux"', {
|
||||||
|
'include_dirs': [
|
||||||
|
'deps/grpc/third_party/cares/config_linux'
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'HAVE_CONFIG_H'
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
['OS == "win"', {
|
||||||
|
'include_dirs': [
|
||||||
|
'deps/grpc/third_party/cares/config_windows'
|
||||||
|
],
|
||||||
|
'defines': [
|
||||||
|
'HAVE_CONFIG_H'
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
% endif
|
||||||
|
% endfor
|
||||||
% for core in libs:
|
% for core in libs:
|
||||||
% if core.name == 'grpc':
|
% if core.name == 'grpc' or core.name == 'address_sorting':
|
||||||
% for lib in libs:
|
% for lib in libs:
|
||||||
% if lib.name == core.name or (lib.name in core.transitive_deps and lib.name not in ('boringssl', 'z')):
|
% if lib.name == core.name or (lib.name in core.transitive_deps and lib.name not in ('boringssl', 'z')):
|
||||||
{
|
{
|
||||||
|
@ -347,6 +396,8 @@
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"grpc",
|
"grpc",
|
||||||
"gpr",
|
"gpr",
|
||||||
|
"ares",
|
||||||
|
"address_sorting"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright 2019 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var assert = require('assert');
|
||||||
|
var _ = require('lodash');
|
||||||
|
|
||||||
|
var grpc = require('..');
|
||||||
|
|
||||||
|
const insecureCreds = grpc.credentials.createInsecure();
|
||||||
|
|
||||||
|
describe('Name resolver', function() {
|
||||||
|
let server;
|
||||||
|
let port;
|
||||||
|
before(function(done) {
|
||||||
|
const insecureServerCreds = grpc.ServerCredentials.createInsecure();
|
||||||
|
server = new grpc.Server();
|
||||||
|
server.bindAsync('localhost:0', insecureServerCreds, (error, portVal) => {
|
||||||
|
port = portVal;
|
||||||
|
done(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
after(function() {
|
||||||
|
server.forceShutdown();
|
||||||
|
});
|
||||||
|
// This test also seems to have problems with the native resolver on Windows
|
||||||
|
it.skip('Should resolve a target to IPv4 addresses', function(done) {
|
||||||
|
const client = new grpc.Client(`loopback4.unittest.grpc.io:${port}`, insecureCreds);
|
||||||
|
let deadline = new Date();
|
||||||
|
deadline.setSeconds(deadline.getSeconds() + 1);
|
||||||
|
client.waitForReady(deadline, (error) => {
|
||||||
|
assert.ifError(error);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
/* This test doesn't work with the native resolver on Windows on our test
|
||||||
|
* machines because they don't have IPv6 addresses, so Windows omits IPv6
|
||||||
|
* addresses from getaddrinfo results. */
|
||||||
|
it.skip('Should resolve a target to IPv6 addresses', function(done) {
|
||||||
|
const client = new grpc.Client(`loopback6.unittest.grpc.io:${port}`, insecureCreds);
|
||||||
|
let deadline = new Date();
|
||||||
|
deadline.setSeconds(deadline.getSeconds() + 1);
|
||||||
|
client.waitForReady(deadline, (error) => {
|
||||||
|
assert.ifError(error);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('Should resolve a target to IPv4 and IPv6 addresses', function(done) {
|
||||||
|
const client = new grpc.Client(`loopback46.unittest.grpc.io:${port}`, insecureCreds);
|
||||||
|
let deadline = new Date();
|
||||||
|
deadline.setSeconds(deadline.getSeconds() + 1);
|
||||||
|
client.waitForReady(deadline, (error) => {
|
||||||
|
assert.ifError(error);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -56,6 +56,7 @@ for %%v in (6 7 8 9 10 11 12) do (
|
||||||
call .\node_modules\.bin\gulp cleanAll || SET FAILED=1
|
call .\node_modules\.bin\gulp cleanAll || SET FAILED=1
|
||||||
call .\node_modules\.bin\gulp setupWindows || SET FAILED=1
|
call .\node_modules\.bin\gulp setupWindows || SET FAILED=1
|
||||||
call .\node_modules\.bin\gulp test || SET FAILED=1
|
call .\node_modules\.bin\gulp test || SET FAILED=1
|
||||||
|
cmd.exe /c "SET GRPC_DNS_RESOLVER=ares& call .\node_modules\.bin\gulp nativeTestOnly" || SET FAILED=1
|
||||||
)
|
)
|
||||||
|
|
||||||
node merge_kokoro_logs.js
|
node merge_kokoro_logs.js
|
||||||
|
|
Loading…
Reference in New Issue