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
|
||||
},
|
||||
"scripts": {
|
||||
"test": "nyc gulp test",
|
||||
"test": "nyc gulp test && GRPC_DNS_RESOLVER=ares nyc gulp nativeTestOnly",
|
||||
"coverage": "nyc report --reporter=text-lcov | coveralls"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,15 +83,20 @@
|
|||
'include_dirs': [
|
||||
'deps/grpc',
|
||||
'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/nanopb'
|
||||
'deps/grpc/third_party/nanopb',
|
||||
],
|
||||
'defines': [
|
||||
'PB_FIELD_32BIT',
|
||||
'GPR_BACKWARDS_COMPATIBILITY_MODE',
|
||||
'GRPC_ARES=0',
|
||||
'GRPC_ARES=1',
|
||||
'GRPC_UV',
|
||||
'GRPC_NODE_VERSION="1.22.0-dev"'
|
||||
'GRPC_NODE_VERSION="1.22.0-dev"',
|
||||
'CARES_STATICLIB',
|
||||
'CARES_SYMBOL_HIDING'
|
||||
],
|
||||
'defines!': [
|
||||
'OPENSSL_THREADS'
|
||||
|
@ -156,8 +161,7 @@
|
|||
}],
|
||||
['OS == "win"', {
|
||||
"include_dirs": [
|
||||
"deps/grpc/third_party/zlib",
|
||||
"deps/grpc/third_party/cares/cares"
|
||||
"deps/grpc/third_party/zlib"
|
||||
],
|
||||
"defines": [
|
||||
'_WIN32_WINNT=0x0600',
|
||||
|
@ -177,8 +181,7 @@
|
|||
]
|
||||
}, { # OS != "win"
|
||||
'include_dirs': [
|
||||
'<(node_root_dir)/deps/zlib',
|
||||
'<(node_root_dir)/deps/cares/include'
|
||||
'<(node_root_dir)/deps/zlib'
|
||||
]
|
||||
}],
|
||||
['OS == "mac"', {
|
||||
|
@ -561,6 +564,114 @@
|
|||
}]
|
||||
],
|
||||
'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',
|
||||
'product_prefix': 'lib',
|
||||
|
@ -1009,6 +1120,8 @@
|
|||
"dependencies": [
|
||||
"grpc",
|
||||
"gpr",
|
||||
"ares",
|
||||
"address_sorting"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit bb6a97b0c8fc11a5c27b03e2058dc383bbfc1e64
|
||||
Subproject commit 64ec7201fd50c41a67ca3064833309f4e259cf06
|
|
@ -75,15 +75,20 @@
|
|||
'include_dirs': [
|
||||
'deps/grpc',
|
||||
'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/nanopb'
|
||||
'deps/grpc/third_party/nanopb',
|
||||
],
|
||||
'defines': [
|
||||
'PB_FIELD_32BIT',
|
||||
'GPR_BACKWARDS_COMPATIBILITY_MODE',
|
||||
'GRPC_ARES=0',
|
||||
'GRPC_ARES=1',
|
||||
'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!': [
|
||||
'OPENSSL_THREADS'
|
||||
|
@ -140,8 +145,7 @@
|
|||
}],
|
||||
['OS == "win"', {
|
||||
"include_dirs": [
|
||||
"deps/grpc/third_party/zlib",
|
||||
"deps/grpc/third_party/cares/cares"
|
||||
"deps/grpc/third_party/zlib"
|
||||
],
|
||||
"defines": [
|
||||
'_WIN32_WINNT=0x0600',
|
||||
|
@ -161,8 +165,7 @@
|
|||
]
|
||||
}, { # OS != "win"
|
||||
'include_dirs': [
|
||||
'<(node_root_dir)/deps/zlib',
|
||||
'<(node_root_dir)/deps/cares/include'
|
||||
'<(node_root_dir)/deps/zlib'
|
||||
]
|
||||
}],
|
||||
['OS == "mac"', {
|
||||
|
@ -279,8 +282,54 @@
|
|||
}]
|
||||
],
|
||||
'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:
|
||||
% if core.name == 'grpc':
|
||||
% if core.name == 'grpc' or core.name == 'address_sorting':
|
||||
% for lib in libs:
|
||||
% if lib.name == core.name or (lib.name in core.transitive_deps and lib.name not in ('boringssl', 'z')):
|
||||
{
|
||||
|
@ -347,6 +396,8 @@
|
|||
"dependencies": [
|
||||
"grpc",
|
||||
"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 setupWindows || 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
|
||||
|
|
Loading…
Reference in New Issue