Merge pull request #8559 from murgatroid99/v1.0.1_upmerge

V1.0.1 upmerge
pull/8562/head
Michael Lumish 9 years ago committed by GitHub
commit 15b04e41f1
  1. 4
      gRPC-Core.podspec
  2. 2
      gRPC-ProtoRPC.podspec
  3. 2
      gRPC-RxLibrary.podspec
  4. 2
      gRPC.podspec
  5. 25
      package.json
  6. 39
      src/compiler/ruby_generator.cc
  7. 14
      src/node/ext/byte_buffer.cc
  8. 8
      src/node/ext/call.cc
  9. 4
      src/node/ext/channel.cc
  10. 2
      src/node/ext/server.cc
  11. 2
      src/node/src/common.js
  12. 4
      src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
  13. 2
      src/objective-c/!ProtoCompiler.podspec
  14. 532
      src/objective-c/BoringSSL.podspec
  15. 39
      src/objective-c/CronetFramework.podspec
  16. 2
      src/objective-c/GRPCClient/private/GRPCHost.m
  17. 13
      src/ruby/ext/grpc/rb_call_credentials.c
  18. 55
      src/ruby/spec/generic/client_stub_spec.rb
  19. 4
      templates/gRPC-Core.podspec.template
  20. 25
      templates/package.json.template
  21. 5
      tools/run_tests/pre_build_node.bat
  22. 4
      tools/run_tests/pre_build_node.sh
  23. 3
      tools/run_tests/report_utils.py
  24. 4
      tools/run_tests/run_tests.py
  25. 8
      tools/run_tests/run_tests_in_workspace.sh

@ -35,7 +35,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-Core' s.name = 'gRPC-Core'
version = '1.0.0' version = '1.0.1'
s.version = version s.version = version
s.summary = 'Core cross-platform gRPC library, written in C' s.summary = 'Core cross-platform gRPC library, written in C'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'
@ -186,7 +186,7 @@ Pod::Spec.new do |s|
ss.header_mappings_dir = '.' ss.header_mappings_dir = '.'
ss.libraries = 'z' ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version ss.dependency "#{s.name}/Interface", version
ss.dependency 'BoringSSL', '~> 6.0' ss.dependency 'BoringSSL', '~> 7.0'
# To save you from scrolling, this is the last part of the podspec. # To save you from scrolling, this is the last part of the podspec.
ss.source_files = 'src/core/lib/profiling/timers.h', ss.source_files = 'src/core/lib/profiling/timers.h',

@ -30,7 +30,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-ProtoRPC' s.name = 'gRPC-ProtoRPC'
version = '1.0.0' version = '1.0.1'
s.version = version s.version = version
s.summary = 'RPC library for Protocol Buffers, based on gRPC' s.summary = 'RPC library for Protocol Buffers, based on gRPC'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'

@ -30,7 +30,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-RxLibrary' s.name = 'gRPC-RxLibrary'
version = '1.0.0' version = '1.0.1'
s.version = version s.version = version
s.summary = 'Reactive Extensions library for iOS/OSX.' s.summary = 'Reactive Extensions library for iOS/OSX.'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'

@ -30,7 +30,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC' s.name = 'gRPC'
version = '1.0.0' version = '1.0.1'
s.version = version s.version = version
s.summary = 'gRPC client library for iOS/OSX' s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'

@ -25,26 +25,28 @@
"coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test", "coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test",
"install": "./node_modules/.bin/node-pre-gyp install --fallback-to-build" "install": "./node_modules/.bin/node-pre-gyp install --fallback-to-build"
}, },
"bundledDependencies": ["node-pre-gyp"], "bundledDependencies": [
"node-pre-gyp"
],
"dependencies": { "dependencies": {
"arguejs": "^0.2.3", "arguejs": "^0.2.3",
"lodash": "^3.9.3", "lodash": "^4.15.0",
"nan": "^2.0.0", "nan": "^2.0.0",
"protobufjs": "^4.0.0" "node-pre-gyp": "^0.6.0",
"protobufjs": "^5.0.0"
}, },
"devDependencies": { "devDependencies": {
"async": "^1.5.0", "async": "^2.0.1",
"body-parser": "^1.15.2", "body-parser": "^1.15.2",
"express": "^4.14.0", "express": "^4.14.0",
"google-auth-library": "^0.9.2", "google-auth-library": "^0.9.2",
"google-protobuf": "^3.0.0", "google-protobuf": "^3.0.0",
"istanbul": "^0.3.21", "istanbul": "^0.4.4",
"jsdoc": "^3.3.2", "jsdoc": "^3.3.2",
"jshint": "^2.5.0", "jshint": "^2.5.0",
"minimist": "^1.1.0", "minimist": "^1.1.0",
"mocha": "^2.3.4", "mocha": "^3.0.2",
"mocha-jenkins-reporter": "^0.1.9", "mocha-jenkins-reporter": "^0.2.3",
"mustache": "^2.0.0",
"poisson-process": "^0.2.1" "poisson-process": "^0.2.1"
}, },
"engines": { "engines": {
@ -52,11 +54,10 @@
}, },
"binary": { "binary": {
"module_name": "grpc_node", "module_name": "grpc_node",
"module_path": "./build/Release/", "module_path": "src/node/extension_binary",
"host": "https://storage.googleapis.com/", "host": "https://storage.googleapis.com/",
"remote_path": "grpc-precompiled-binaries/node/{name}/v{version}", "remote_path": "grpc-precompiled-binaries/node/{name}/v{version}",
"package_name": "{node_abi}-{platform}-{arch}.tar.gz", "package_name": "{node_abi}-{platform}-{arch}.tar.gz"
"module_path": "src/node/extension_binary"
}, },
"files": [ "files": [
"LICENSE", "LICENSE",
@ -77,7 +78,7 @@
], ],
"main": "src/node/index.js", "main": "src/node/index.js",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"jshintConfig" : { "jshintConfig": {
"bitwise": true, "bitwise": true,
"curly": true, "curly": true,
"eqeqeq": true, "eqeqeq": true,

@ -119,6 +119,43 @@ void PrintService(const ServiceDescriptor *service, const grpc::string &package,
} // namespace } // namespace
// The following functions are copied directly from the source for the protoc
// ruby generator
// to ensure compatibility (with the exception of int and string type changes).
// See
// https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/ruby/ruby_generator.cc#L250
// TODO: keep up to date with protoc code generation, though this behavior isn't
// expected to change
bool IsLower(char ch) { return ch >= 'a' && ch <= 'z'; }
char ToUpper(char ch) { return IsLower(ch) ? (ch - 'a' + 'A') : ch; }
// Package names in protobuf are snake_case by convention, but Ruby module
// names must be PascalCased.
//
// foo_bar_baz -> FooBarBaz
grpc::string PackageToModule(const grpc::string &name) {
bool next_upper = true;
grpc::string result;
result.reserve(name.size());
for (grpc::string::size_type i = 0; i < name.size(); i++) {
if (name[i] == '_') {
next_upper = true;
} else {
if (next_upper) {
result.push_back(ToUpper(name[i]));
} else {
result.push_back(name[i]);
}
next_upper = false;
}
}
return result;
}
// end copying of protoc generator for ruby code
grpc::string GetServices(const FileDescriptor *file) { grpc::string GetServices(const FileDescriptor *file) {
grpc::string output; grpc::string output;
{ {
@ -162,7 +199,7 @@ grpc::string GetServices(const FileDescriptor *file) {
std::vector<grpc::string> modules = Split(file->package(), '.'); std::vector<grpc::string> modules = Split(file->package(), '.');
for (size_t i = 0; i < modules.size(); ++i) { for (size_t i = 0; i < modules.size(); ++i) {
std::map<grpc::string, grpc::string> module_vars = ListToDict({ std::map<grpc::string, grpc::string> module_vars = ListToDict({
"module.name", CapitalizeFirst(modules[i]), "module.name", PackageToModule(modules[i]),
}); });
out.Print(module_vars, "module $module.name$\n"); out.Print(module_vars, "module $module.name$\n");
out.Indent(); out.Indent();

@ -44,8 +44,8 @@
namespace grpc { namespace grpc {
namespace node { namespace node {
using Nan::MaybeLocal;
using v8::Context;
using v8::Function; using v8::Function;
using v8::Local; using v8::Local;
using v8::Object; using v8::Object;
@ -89,15 +89,19 @@ Local<Value> ByteBufferToBuffer(grpc_byte_buffer *buffer) {
Local<Value> MakeFastBuffer(Local<Value> slowBuffer) { Local<Value> MakeFastBuffer(Local<Value> slowBuffer) {
Nan::EscapableHandleScope scope; Nan::EscapableHandleScope scope;
Local<Object> globalObj = Nan::GetCurrentContext()->Global(); Local<Object> globalObj = Nan::GetCurrentContext()->Global();
MaybeLocal<Value> constructorValue = Nan::Get(
globalObj, Nan::New("Buffer").ToLocalChecked());
Local<Function> bufferConstructor = Local<Function>::Cast( Local<Function> bufferConstructor = Local<Function>::Cast(
globalObj->Get(Nan::New("Buffer").ToLocalChecked())); constructorValue.ToLocalChecked());
Local<Value> consArgs[3] = { const int argc = 3;
Local<Value> consArgs[argc] = {
slowBuffer, slowBuffer,
Nan::New<Number>(::node::Buffer::Length(slowBuffer)), Nan::New<Number>(::node::Buffer::Length(slowBuffer)),
Nan::New<Number>(0) Nan::New<Number>(0)
}; };
Local<Object> fastBuffer = bufferConstructor->NewInstance(3, consArgs); MaybeLocal<Object> fastBuffer = Nan::NewInstance(bufferConstructor,
return scope.Escape(fastBuffer); argc, consArgs);
return scope.Escape(fastBuffer.ToLocalChecked());
} }
} // namespace node } // namespace node
} // namespace grpc } // namespace grpc

@ -669,16 +669,16 @@ NAN_METHOD(Call::New) {
return Nan::ThrowTypeError("Call's fourth argument must be a string"); return Nan::ThrowTypeError("Call's fourth argument must be a string");
} }
call = new Call(wrapped_call); call = new Call(wrapped_call);
info.This()->SetHiddenValue(Nan::New("channel_").ToLocalChecked(), Nan::Set(info.This(), Nan::New("channel_").ToLocalChecked(),
channel_object); channel_object);
} }
call->Wrap(info.This()); call->Wrap(info.This());
info.GetReturnValue().Set(info.This()); info.GetReturnValue().Set(info.This());
} else { } else {
const int argc = 4; const int argc = 4;
Local<Value> argv[argc] = {info[0], info[1], info[2], info[3]}; Local<Value> argv[argc] = {info[0], info[1], info[2], info[3]};
MaybeLocal<Object> maybe_instance = constructor->GetFunction()->NewInstance( MaybeLocal<Object> maybe_instance = Nan::NewInstance(
argc, argv); constructor->GetFunction(), argc, argv);
if (maybe_instance.IsEmpty()) { if (maybe_instance.IsEmpty()) {
// There's probably a pending exception // There's probably a pending exception
return; return;

@ -208,8 +208,8 @@ NAN_METHOD(Channel::New) {
} else { } else {
const int argc = 3; const int argc = 3;
Local<Value> argv[argc] = {info[0], info[1], info[2]}; Local<Value> argv[argc] = {info[0], info[1], info[2]};
MaybeLocal<Object> maybe_instance = constructor->GetFunction()->NewInstance( MaybeLocal<Object> maybe_instance = Nan::NewInstance(
argc, argv); constructor->GetFunction(), argc, argv);
if (maybe_instance.IsEmpty()) { if (maybe_instance.IsEmpty()) {
// There's probably a pending exception // There's probably a pending exception
return; return;

@ -222,7 +222,7 @@ NAN_METHOD(Server::New) {
const int argc = 1; const int argc = 1;
Local<Value> argv[argc] = {info[0]}; Local<Value> argv[argc] = {info[0]};
MaybeLocal<Object> maybe_instance = MaybeLocal<Object> maybe_instance =
constructor->GetFunction()->NewInstance(argc, argv); Nan::NewInstance(constructor->GetFunction(), argc, argv);
if (maybe_instance.IsEmpty()) { if (maybe_instance.IsEmpty()) {
// There's probably a pending exception // There's probably a pending exception
return; return;

@ -141,7 +141,7 @@ exports.getProtobufServiceAttrs = function getProtobufServiceAttrs(service,
binaryAsBase64 = options.binaryAsBase64; binaryAsBase64 = options.binaryAsBase64;
longsAsStrings = options.longsAsStrings; longsAsStrings = options.longsAsStrings;
} }
return _.object(_.map(service.children, function(method) { return _.fromPairs(_.map(service.children, function(method) {
return [_.camelCase(method.name), { return [_.camelCase(method.name), {
path: prefix + method.name, path: prefix + method.name,
requestStream: method.requestStream, requestStream: method.requestStream,

@ -36,7 +36,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them. # before them.
s.name = '!ProtoCompiler-gRPCPlugin' s.name = '!ProtoCompiler-gRPCPlugin'
v = '1.0.0' v = '1.0.1'
s.version = v s.version = v
s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.' s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
s.description = <<-DESC s.description = <<-DESC
@ -95,7 +95,7 @@ Pod::Spec.new do |s|
s.preserve_paths = plugin s.preserve_paths = plugin
# Restrict the protoc version to the one supported by this plugin. # Restrict the protoc version to the one supported by this plugin.
s.dependency '!ProtoCompiler', '3.0.0' s.dependency '!ProtoCompiler', '3.0.2'
# For the Protobuf dependency not to complain: # For the Protobuf dependency not to complain:
s.ios.deployment_target = '7.1' s.ios.deployment_target = '7.1'
s.osx.deployment_target = '10.9' s.osx.deployment_target = '10.9'

@ -36,7 +36,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them. # before them.
s.name = '!ProtoCompiler' s.name = '!ProtoCompiler'
v = '3.0.0' v = '3.0.2'
s.version = v s.version = v
s.summary = 'The Protobuf Compiler (protoc) generates Objective-C files from .proto files' s.summary = 'The Protobuf Compiler (protoc) generates Objective-C files from .proto files'
s.description = <<-DESC s.description = <<-DESC

@ -31,7 +31,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'BoringSSL' s.name = 'BoringSSL'
version = '6.0' version = '7.0'
s.version = version s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google’s needs.' s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google’s needs.'
# Adapted from the homepage: # Adapted from the homepage:
@ -70,7 +70,7 @@ Pod::Spec.new do |s|
s.source = { s.source = {
:git => 'https://boringssl.googlesource.com/boringssl', :git => 'https://boringssl.googlesource.com/boringssl',
:tag => "version_for_cocoapods_#{version}", :tag => "version_for_cocoapods_#{version}",
# :commit => '4ac2dc4c0d48ca45da4f66c40e60d6b425fa94a3', # :commit => '4fec04b48406111cb88fdd8d196253adc54f7a31',
} }
name = 'openssl' name = 'openssl'
@ -388,42 +388,42 @@ Pod::Spec.new do |s|
0x28340c19, 0x28340c19,
0x283480ac, 0x283480ac,
0x283500ea, 0x283500ea,
0x2c322843, 0x2c322910,
0x2c32a851, 0x2c32a91e,
0x2c332863, 0x2c332930,
0x2c33a875, 0x2c33a942,
0x2c342889, 0x2c342956,
0x2c34a89b, 0x2c34a968,
0x2c3528b6, 0x2c352983,
0x2c35a8c8, 0x2c35a995,
0x2c3628db, 0x2c3629a8,
0x2c36832d, 0x2c36832d,
0x2c3728e8, 0x2c3729b5,
0x2c37a8fa, 0x2c37a9c7,
0x2c38290d, 0x2c3829da,
0x2c38a924, 0x2c38a9f1,
0x2c392932, 0x2c3929ff,
0x2c39a942, 0x2c39aa0f,
0x2c3a2954, 0x2c3a2a21,
0x2c3aa968, 0x2c3aaa35,
0x2c3b2979, 0x2c3b2a46,
0x2c3ba998, 0x2c3baa65,
0x2c3c29ac, 0x2c3c2a79,
0x2c3ca9c2, 0x2c3caa8f,
0x2c3d29db, 0x2c3d2aa8,
0x2c3da9f8, 0x2c3daac5,
0x2c3e2a09, 0x2c3e2ad6,
0x2c3eaa17, 0x2c3eaae4,
0x2c3f2a2f, 0x2c3f2afc,
0x2c3faa47, 0x2c3fab14,
0x2c402a54, 0x2c402b21,
0x2c4090e7, 0x2c4090e7,
0x2c412a65, 0x2c412b32,
0x2c41aa78, 0x2c41ab45,
0x2c4210c0, 0x2c4210c0,
0x2c42aa89, 0x2c42ab56,
0x2c430720, 0x2c430720,
0x2c43a98a, 0x2c43aa57,
0x30320000, 0x30320000,
0x30328015, 0x30328015,
0x3033001f, 0x3033001f,
@ -576,174 +576,183 @@ Pod::Spec.new do |s|
0x403b9861, 0x403b9861,
0x403c0064, 0x403c0064,
0x403c8083, 0x403c8083,
0x403d1890, 0x403d18aa,
0x403d98a6, 0x403d98c0,
0x403e18b5, 0x403e18cf,
0x403e98c8, 0x403e98e2,
0x403f18e2, 0x403f18fc,
0x403f98f0, 0x403f990a,
0x40401905, 0x4040191f,
0x40409919, 0x40409933,
0x40411936, 0x40411950,
0x40419951, 0x4041996b,
0x4042196a, 0x40421984,
0x4042997d, 0x40429997,
0x40431991, 0x404319ab,
0x404399a9, 0x404399c3,
0x404419c0, 0x404419da,
0x404480ac, 0x404480ac,
0x404519d5, 0x404519ef,
0x404599e7, 0x40459a01,
0x40461a0b, 0x40461a25,
0x40469a2b, 0x40469a45,
0x40471a39, 0x40471a53,
0x40479a60, 0x40479a7a,
0x40481a89, 0x40481ab7,
0x40489aa2, 0x40489ad0,
0x40491ab9, 0x40491ae7,
0x40499ad3, 0x40499b01,
0x404a1aea, 0x404a1b18,
0x404a9b08, 0x404a9b36,
0x404b1b20, 0x404b1b4e,
0x404b9b37, 0x404b9b65,
0x404c1b4d, 0x404c1b7b,
0x404c9b5f, 0x404c9b8d,
0x404d1b80, 0x404d1bae,
0x404d9ba2, 0x404d9bd0,
0x404e1bb6, 0x404e1be4,
0x404e9bc3, 0x404e9bf1,
0x404f1bf0, 0x404f1c1e,
0x404f9c19, 0x404f9c47,
0x40501c43, 0x40501c71,
0x40509c57, 0x40509c85,
0x40511c72, 0x40511ca0,
0x40519c82, 0x40519cb0,
0x40521c99, 0x40521cc7,
0x40529cbd, 0x40529ceb,
0x40531cd5, 0x40531d03,
0x40539ce8, 0x40539d16,
0x40541cfd, 0x40541d2b,
0x40549d20, 0x40549d4e,
0x40551d2e, 0x40551d5c,
0x40559d4b, 0x40559d79,
0x40561d58, 0x40561d86,
0x40569d71, 0x40569d9f,
0x40571d89, 0x40571db7,
0x40579d9c, 0x40579dca,
0x40581db1, 0x40581ddf,
0x40589dc3, 0x40589e06,
0x40591df2, 0x40591e35,
0x40599e0b, 0x40599e62,
0x405a1e1f, 0x405a1e76,
0x405a9e2f, 0x405a9e86,
0x405b1e47, 0x405b1e9e,
0x405b9e58, 0x405b9eaf,
0x405c1e6b, 0x405c1ec2,
0x405c9e7c, 0x405c9ee3,
0x405d1e89, 0x405d1ef0,
0x405d9ea0, 0x405d9f07,
0x405e1ec0, 0x405e1f27,
0x405e8a95, 0x405e8a95,
0x405f1ee1, 0x405f1f48,
0x405f9eee, 0x405f9f55,
0x40601efc, 0x40601f63,
0x40609f1e, 0x40609f85,
0x40611f46, 0x40611fad,
0x40619f5b, 0x40619fc2,
0x40621f72, 0x40621fd9,
0x40629f83, 0x40629fea,
0x40631f94, 0x40631ffb,
0x40639fa9, 0x4063a010,
0x40641fc0, 0x40642027,
0x40649fd1, 0x4064a053,
0x40651fec, 0x4065206e,
0x4065a003, 0x4065a085,
0x4066201b, 0x4066209d,
0x4066a045, 0x4066a0c7,
0x40672070, 0x406720f2,
0x4067a091, 0x4067a113,
0x406820a4, 0x40682126,
0x4068a0c5, 0x4068a147,
0x406920f7, 0x40692179,
0x4069a125, 0x4069a1a7,
0x406a2146, 0x406a21c8,
0x406aa166, 0x406aa1e8,
0x406b22ee, 0x406b2370,
0x406ba311, 0x406ba393,
0x406c2327, 0x406c23a9,
0x406ca553, 0x406ca60b,
0x406d2582, 0x406d263a,
0x406da5aa, 0x406da662,
0x406e25c3, 0x406e2690,
0x406ea5db, 0x406ea6a8,
0x406f25fa, 0x406f26c7,
0x406fa60f, 0x406fa6dc,
0x40702622, 0x407026ef,
0x4070a63f, 0x4070a70c,
0x40710800, 0x40710800,
0x4071a651, 0x4071a71e,
0x40722664, 0x40722731,
0x4072a67d, 0x4072a74a,
0x40732695, 0x40732762,
0x4073936d, 0x4073936d,
0x407426a9, 0x40742776,
0x4074a6c3, 0x4074a790,
0x407526d4, 0x407527a1,
0x4075a6e8, 0x4075a7b5,
0x407626f6, 0x407627c3,
0x407691aa, 0x407691aa,
0x4077271b, 0x407727e8,
0x4077a73d, 0x4077a80a,
0x40782758, 0x40782825,
0x4078a791, 0x4078a85e,
0x407927a8, 0x40792875,
0x4079a7be, 0x4079a88b,
0x407a27ca, 0x407a2897,
0x407aa7dd, 0x407aa8aa,
0x407b27f2, 0x407b28bf,
0x407ba804, 0x407ba8d1,
0x407c2819, 0x407c28e6,
0x407ca822, 0x407ca8ef,
0x407d20e0, 0x407d2162,
0x407d9c29, 0x407d9c57,
0x407e276d, 0x407e283a,
0x407e9dd3, 0x407e9e16,
0x407f1a4d, 0x407f1a67,
0x407f986d, 0x407f9887,
0x40801c00, 0x40801c2e,
0x40809a75, 0x40809a8f,
0x40811cab, 0x40811cd9,
0x40819bda, 0x40819c08,
0x41f42219, 0x4082267b,
0x41f922ab, 0x4082986d,
0x41fe219e, 0x40831df1,
0x41fea37a, 0x4083a038,
0x41ff246b, 0x40841aa3,
0x42032232, 0x40849e4e,
0x42082254, 0x40851ed3,
0x4208a290, 0x41f4229b,
0x42092182, 0x41f9232d,
0x4209a2ca, 0x41fe2220,
0x420a21d9, 0x41fea3fc,
0x420aa1b9, 0x41ff24ed,
0x420b21f9, 0x420322b4,
0x420ba272, 0x420822d6,
0x420c2487, 0x4208a312,
0x420ca347, 0x42092204,
0x420d2361, 0x4209a34c,
0x420da398, 0x420a225b,
0x421223b2, 0x420aa23b,
0x4217244e, 0x420b227b,
0x4217a3f4, 0x420ba2f4,
0x421c2416, 0x420c2509,
0x421f23d1, 0x420ca3c9,
0x4221249e, 0x420d23e3,
0x42262431, 0x420da41a,
0x422b2537, 0x42122434,
0x422ba500, 0x421724d0,
0x422c251f, 0x4217a476,
0x422ca4da, 0x421c2498,
0x422d24b9, 0x421f2453,
0x42212520,
0x422624b3,
0x422b25ef,
0x422ba59d,
0x422c25d7,
0x422ca55c,
0x422d253b,
0x422da5bc,
0x422e2582,
0x4432072b, 0x4432072b,
0x4432873a, 0x4432873a,
0x44330746, 0x44330746,
@ -786,69 +795,69 @@ Pod::Spec.new do |s|
0x4c3d136d, 0x4c3d136d,
0x4c3d937c, 0x4c3d937c,
0x4c3e1389, 0x4c3e1389,
0x50322a9b, 0x50322b68,
0x5032aaaa, 0x5032ab77,
0x50332ab5, 0x50332b82,
0x5033aac5, 0x5033ab92,
0x50342ade, 0x50342bab,
0x5034aaf8, 0x5034abc5,
0x50352b06, 0x50352bd3,
0x5035ab1c, 0x5035abe9,
0x50362b2e, 0x50362bfb,
0x5036ab44, 0x5036ac11,
0x50372b5d, 0x50372c2a,
0x5037ab70, 0x5037ac3d,
0x50382b88, 0x50382c55,
0x5038ab99, 0x5038ac66,
0x50392bae, 0x50392c7b,
0x5039abc2, 0x5039ac8f,
0x503a2be2, 0x503a2caf,
0x503aabf8, 0x503aacc5,
0x503b2c10, 0x503b2cdd,
0x503bac22, 0x503bacef,
0x503c2c3e, 0x503c2d0b,
0x503cac55, 0x503cad22,
0x503d2c6e, 0x503d2d3b,
0x503dac84, 0x503dad51,
0x503e2c91, 0x503e2d5e,
0x503eaca7, 0x503ead74,
0x503f2cb9, 0x503f2d86,
0x503f8382, 0x503f8382,
0x50402ccc, 0x50402d99,
0x5040acdc, 0x5040ada9,
0x50412cf6, 0x50412dc3,
0x5041ad05, 0x5041add2,
0x50422d1f, 0x50422dec,
0x5042ad3c, 0x5042ae09,
0x50432d4c, 0x50432e19,
0x5043ad5c, 0x5043ae29,
0x50442d6b, 0x50442e38,
0x5044843f, 0x5044843f,
0x50452d7f, 0x50452e4c,
0x5045ad9d, 0x5045ae6a,
0x50462db0, 0x50462e7d,
0x5046adc6, 0x5046ae93,
0x50472dd8, 0x50472ea5,
0x5047aded, 0x5047aeba,
0x50482e13, 0x50482ee0,
0x5048ae21, 0x5048aeee,
0x50492e34, 0x50492f01,
0x5049ae49, 0x5049af16,
0x504a2e5f, 0x504a2f2c,
0x504aae6f, 0x504aaf3c,
0x504b2e8f, 0x504b2f5c,
0x504baea2, 0x504baf6f,
0x504c2ec5, 0x504c2f92,
0x504caef3, 0x504cafc0,
0x504d2f05, 0x504d2fd2,
0x504daf22, 0x504dafef,
0x504e2f3d, 0x504e300a,
0x504eaf59, 0x504eb026,
0x504f2f6b, 0x504f3038,
0x504faf82, 0x504fb04f,
0x50502f91, 0x5050305e,
0x505086ef, 0x505086ef,
0x50512fa4, 0x50513071,
0x58320ec9, 0x58320ec9,
0x68320e8b, 0x68320e8b,
0x68328c25, 0x68328c25,
@ -1209,6 +1218,7 @@ Pod::Spec.new do |s|
"BAD_SSL_FILETYPE\\0" "BAD_SSL_FILETYPE\\0"
"BAD_WRITE_RETRY\\0" "BAD_WRITE_RETRY\\0"
"BIO_NOT_SET\\0" "BIO_NOT_SET\\0"
"BLOCK_CIPHER_PAD_IS_WRONG\\0"
"BUFFERED_MESSAGES_ON_CIPHER_CHANGE\\0" "BUFFERED_MESSAGES_ON_CIPHER_CHANGE\\0"
"CA_DN_LENGTH_MISMATCH\\0" "CA_DN_LENGTH_MISMATCH\\0"
"CA_DN_TOO_LONG\\0" "CA_DN_TOO_LONG\\0"
@ -1233,6 +1243,7 @@ Pod::Spec.new do |s|
"DOWNGRADE_DETECTED\\0" "DOWNGRADE_DETECTED\\0"
"DTLS_MESSAGE_TOO_BIG\\0" "DTLS_MESSAGE_TOO_BIG\\0"
"DUPLICATE_EXTENSION\\0" "DUPLICATE_EXTENSION\\0"
"DUPLICATE_KEY_SHARE\\0"
"ECC_CERT_NOT_FOR_SIGNING\\0" "ECC_CERT_NOT_FOR_SIGNING\\0"
"EMS_STATE_INCONSISTENT\\0" "EMS_STATE_INCONSISTENT\\0"
"ENCRYPTED_LENGTH_TOO_LONG\\0" "ENCRYPTED_LENGTH_TOO_LONG\\0"
@ -1270,15 +1281,18 @@ Pod::Spec.new do |s|
"NO_CERTIFICATE_SET\\0" "NO_CERTIFICATE_SET\\0"
"NO_CIPHERS_AVAILABLE\\0" "NO_CIPHERS_AVAILABLE\\0"
"NO_CIPHERS_PASSED\\0" "NO_CIPHERS_PASSED\\0"
"NO_CIPHERS_SPECIFIED\\0"
"NO_CIPHER_MATCH\\0" "NO_CIPHER_MATCH\\0"
"NO_COMMON_SIGNATURE_ALGORITHMS\\0" "NO_COMMON_SIGNATURE_ALGORITHMS\\0"
"NO_COMPRESSION_SPECIFIED\\0" "NO_COMPRESSION_SPECIFIED\\0"
"NO_GROUPS_SPECIFIED\\0"
"NO_METHOD_SPECIFIED\\0" "NO_METHOD_SPECIFIED\\0"
"NO_P256_SUPPORT\\0" "NO_P256_SUPPORT\\0"
"NO_PRIVATE_KEY_ASSIGNED\\0" "NO_PRIVATE_KEY_ASSIGNED\\0"
"NO_RENEGOTIATION\\0" "NO_RENEGOTIATION\\0"
"NO_REQUIRED_DIGEST\\0" "NO_REQUIRED_DIGEST\\0"
"NO_SHARED_CIPHER\\0" "NO_SHARED_CIPHER\\0"
"NO_SHARED_GROUP\\0"
"NULL_SSL_CTX\\0" "NULL_SSL_CTX\\0"
"NULL_SSL_METHOD_PASSED\\0" "NULL_SSL_METHOD_PASSED\\0"
"OLD_SESSION_CIPHER_NOT_RETURNED\\0" "OLD_SESSION_CIPHER_NOT_RETURNED\\0"
@ -1294,6 +1308,7 @@ Pod::Spec.new do |s|
"READ_TIMEOUT_EXPIRED\\0" "READ_TIMEOUT_EXPIRED\\0"
"RECORD_LENGTH_MISMATCH\\0" "RECORD_LENGTH_MISMATCH\\0"
"RECORD_TOO_LARGE\\0" "RECORD_TOO_LARGE\\0"
"RENEGOTIATION_EMS_MISMATCH\\0"
"RENEGOTIATION_ENCODING_ERR\\0" "RENEGOTIATION_ENCODING_ERR\\0"
"RENEGOTIATION_MISMATCH\\0" "RENEGOTIATION_MISMATCH\\0"
"REQUIRED_CIPHER_MISSING\\0" "REQUIRED_CIPHER_MISSING\\0"
@ -1338,12 +1353,15 @@ Pod::Spec.new do |s|
"TLSV1_ALERT_USER_CANCELLED\\0" "TLSV1_ALERT_USER_CANCELLED\\0"
"TLSV1_BAD_CERTIFICATE_HASH_VALUE\\0" "TLSV1_BAD_CERTIFICATE_HASH_VALUE\\0"
"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE\\0" "TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE\\0"
"TLSV1_CERTIFICATE_REQUIRED\\0"
"TLSV1_CERTIFICATE_UNOBTAINABLE\\0" "TLSV1_CERTIFICATE_UNOBTAINABLE\\0"
"TLSV1_UNKNOWN_PSK_IDENTITY\\0"
"TLSV1_UNRECOGNIZED_NAME\\0" "TLSV1_UNRECOGNIZED_NAME\\0"
"TLSV1_UNSUPPORTED_EXTENSION\\0" "TLSV1_UNSUPPORTED_EXTENSION\\0"
"TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST\\0" "TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST\\0"
"TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG\\0" "TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG\\0"
"TOO_MANY_EMPTY_FRAGMENTS\\0" "TOO_MANY_EMPTY_FRAGMENTS\\0"
"TOO_MANY_KEY_UPDATES\\0"
"TOO_MANY_WARNING_ALERTS\\0" "TOO_MANY_WARNING_ALERTS\\0"
"UNABLE_TO_FIND_ECDH_PARAMETERS\\0" "UNABLE_TO_FIND_ECDH_PARAMETERS\\0"
"UNEXPECTED_EXTENSION\\0" "UNEXPECTED_EXTENSION\\0"

@ -30,14 +30,47 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = "CronetFramework" s.name = "CronetFramework"
s.version = "0.0.2" s.version = "0.0.3"
s.summary = "Cronet, precompiled and used as a framework." s.summary = "Cronet, precompiled and used as a framework."
s.homepage = "http://chromium.org" s.homepage = "http://chromium.org"
s.license = { :type => 'BSD' } s.license = {
:type => 'BSD',
:text => <<-LICENSE
Copyright 2015, Google Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
LICENSE
}
s.vendored_framework = "Cronet.framework" s.vendored_framework = "Cronet.framework"
s.author = "The Chromium Authors" s.author = "The Chromium Authors"
s.ios.deployment_target = "7.1" s.ios.deployment_target = "8.0"
s.source = { :http => 'https://storage.googleapis.com/grpc-precompiled-binaries/cronet/Cronet.framework.zip' } s.source = { :http => 'https://storage.googleapis.com/grpc-precompiled-binaries/cronet/Cronet.framework.zip' }
s.preserve_paths = "Cronet.framework" s.preserve_paths = "Cronet.framework"
s.public_header_files = "Cronet.framework/Headers/**/*{.h}" s.public_header_files = "Cronet.framework/Headers/**/*{.h}"
s.source_files = "Cronet.framework/Headers/**/*{.h}"
end end

@ -51,7 +51,7 @@ NS_ASSUME_NONNULL_BEGIN
// TODO(jcanizales): Generate the version in a standalone header, from // TODO(jcanizales): Generate the version in a standalone header, from
// templates. Like // templates. Like
// templates/src/core/surface/version.c.template . // templates/src/core/surface/version.c.template .
#define GRPC_OBJC_VERSION_STRING @"1.0.0" #define GRPC_OBJC_VERSION_STRING @"1.0.1"
static NSMutableDictionary *kHostCache; static NSMutableDictionary *kHostCache;

@ -86,19 +86,16 @@ static VALUE grpc_rb_call_credentials_callback_rescue(VALUE args,
rb_funcall(exception_object, rb_intern("backtrace"), 0), rb_funcall(exception_object, rb_intern("backtrace"), 0),
rb_intern("join"), rb_intern("join"),
1, rb_str_new2("\n\tfrom ")); 1, rb_str_new2("\n\tfrom "));
VALUE rb_exception_info = rb_funcall(exception_object, rb_intern("to_s"), 0); VALUE rb_exception_info = rb_funcall(exception_object, rb_intern("inspect"), 0);
const char *exception_classname = rb_obj_classname(exception_object);
(void)args; (void)args;
gpr_log(GPR_INFO, "Call credentials callback failed: %s: %s\n%s", gpr_log(GPR_INFO, "Call credentials callback failed: %s\n%s",
exception_classname, StringValueCStr(rb_exception_info), StringValueCStr(rb_exception_info),
StringValueCStr(backtrace)); StringValueCStr(backtrace));
rb_hash_aset(result, rb_str_new2("metadata"), Qnil); rb_hash_aset(result, rb_str_new2("metadata"), Qnil);
/* Currently only gives the exception class name. It should be possible get
more details */
rb_hash_aset(result, rb_str_new2("status"), rb_hash_aset(result, rb_str_new2("status"),
INT2NUM(GRPC_STATUS_PERMISSION_DENIED)); INT2NUM(GRPC_STATUS_UNAUTHENTICATED));
rb_hash_aset(result, rb_str_new2("details"), rb_hash_aset(result, rb_str_new2("details"),
rb_str_new2(exception_classname)); rb_exception_info);
return result; return result;
} }

@ -168,23 +168,61 @@ describe 'ClientStub' do
expect(&blk).to raise_error(GRPC::BadStatus) expect(&blk).to raise_error(GRPC::BadStatus)
th.join th.join
end end
it 'should receive UNAUTHENTICATED if call credentials plugin fails' do
server_port = create_secure_test_server
th = run_request_response(@sent_msg, @resp, @pass)
certs = load_test_certs
secure_channel_creds = GRPC::Core::ChannelCredentials.new(
certs[0], nil, nil)
secure_stub_opts = {
channel_args: {
GRPC::Core::Channel::SSL_TARGET => 'foo.test.google.fr'
}
}
stub = GRPC::ClientStub.new("localhost:#{server_port}",
secure_channel_creds, **secure_stub_opts)
error_message = 'Failing call credentials callback'
failing_auth = proc do
fail error_message
end
creds = GRPC::Core::CallCredentials.new(failing_auth)
error_occured = false
begin
get_response(stub, credentials: creds)
rescue GRPC::BadStatus => e
error_occured = true
expect(e.code).to eq(GRPC::Core::StatusCodes::UNAUTHENTICATED)
expect(e.details.include?(error_message)).to be true
end
expect(error_occured).to eq(true)
# Kill the server thread so tests can complete
th.kill
end
end end
describe 'without a call operation' do describe 'without a call operation' do
def get_response(stub) def get_response(stub, credentials: nil)
puts credentials.inspect
stub.request_response(@method, @sent_msg, noop, noop, stub.request_response(@method, @sent_msg, noop, noop,
metadata: { k1: 'v1', k2: 'v2' }) metadata: { k1: 'v1', k2: 'v2' },
credentials: credentials)
end end
it_behaves_like 'request response' it_behaves_like 'request response'
end end
describe 'via a call operation' do describe 'via a call operation' do
def get_response(stub, run_start_call_first: false) def get_response(stub, run_start_call_first: false, credentials: nil)
op = stub.request_response(@method, @sent_msg, noop, noop, op = stub.request_response(@method, @sent_msg, noop, noop,
return_op: true, return_op: true,
metadata: { k1: 'v1', k2: 'v2' }, metadata: { k1: 'v1', k2: 'v2' },
deadline: from_relative_time(2)) deadline: from_relative_time(2),
credentials: credentials)
expect(op).to be_a(GRPC::ActiveCall::Operation) expect(op).to be_a(GRPC::ActiveCall::Operation)
op.start_call if run_start_call_first op.start_call if run_start_call_first
result = op.execute result = op.execute
@ -492,6 +530,15 @@ describe 'ClientStub' do
end end
end end
def create_secure_test_server
certs = load_test_certs
secure_credentials = GRPC::Core::ServerCredentials.new(
nil, [{ private_key: certs[1], cert_chain: certs[2] }], false)
@server = GRPC::Core::Server.new(nil)
@server.add_http2_port('0.0.0.0:0', secure_credentials)
end
def create_test_server def create_test_server
@server = GRPC::Core::Server.new(nil) @server = GRPC::Core::Server.new(nil)
@server.add_http2_port('0.0.0.0:0', :this_port_is_insecure) @server.add_http2_port('0.0.0.0:0', :this_port_is_insecure)

@ -62,7 +62,7 @@
%> %>
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-Core' s.name = 'gRPC-Core'
version = '1.0.0' version = '1.0.1'
s.version = version s.version = version
s.summary = 'Core cross-platform gRPC library, written in C' s.summary = 'Core cross-platform gRPC library, written in C'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'
@ -149,7 +149,7 @@
ss.header_mappings_dir = '.' ss.header_mappings_dir = '.'
ss.libraries = 'z' ss.libraries = 'z'
ss.dependency "#{s.name}/Interface", version ss.dependency "#{s.name}/Interface", version
ss.dependency 'BoringSSL', '~> 6.0' ss.dependency 'BoringSSL', '~> 7.0'
# To save you from scrolling, this is the last part of the podspec. # To save you from scrolling, this is the last part of the podspec.
ss.source_files = ${ruby_multiline_list(grpc_private_files(libs), 22)} ss.source_files = ${ruby_multiline_list(grpc_private_files(libs), 22)}

@ -27,26 +27,28 @@
"coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test", "coverage": "./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha src/node/test",
"install": "./node_modules/.bin/node-pre-gyp install --fallback-to-build" "install": "./node_modules/.bin/node-pre-gyp install --fallback-to-build"
}, },
"bundledDependencies": ["node-pre-gyp"], "bundledDependencies": [
"node-pre-gyp"
],
"dependencies": { "dependencies": {
"arguejs": "^0.2.3", "arguejs": "^0.2.3",
"lodash": "^3.9.3", "lodash": "^4.15.0",
"nan": "^2.0.0", "nan": "^2.0.0",
"protobufjs": "^4.0.0" "node-pre-gyp": "^0.6.0",
"protobufjs": "^5.0.0"
}, },
"devDependencies": { "devDependencies": {
"async": "^1.5.0", "async": "^2.0.1",
"body-parser": "^1.15.2", "body-parser": "^1.15.2",
"express": "^4.14.0", "express": "^4.14.0",
"google-auth-library": "^0.9.2", "google-auth-library": "^0.9.2",
"google-protobuf": "^3.0.0", "google-protobuf": "^3.0.0",
"istanbul": "^0.3.21", "istanbul": "^0.4.4",
"jsdoc": "^3.3.2", "jsdoc": "^3.3.2",
"jshint": "^2.5.0", "jshint": "^2.5.0",
"minimist": "^1.1.0", "minimist": "^1.1.0",
"mocha": "^2.3.4", "mocha": "^3.0.2",
"mocha-jenkins-reporter": "^0.1.9", "mocha-jenkins-reporter": "^0.2.3",
"mustache": "^2.0.0",
"poisson-process": "^0.2.1" "poisson-process": "^0.2.1"
}, },
"engines": { "engines": {
@ -54,11 +56,10 @@
}, },
"binary": { "binary": {
"module_name": "grpc_node", "module_name": "grpc_node",
"module_path": "./build/Release/", "module_path": "src/node/extension_binary",
"host": "https://storage.googleapis.com/", "host": "https://storage.googleapis.com/",
"remote_path": "grpc-precompiled-binaries/node/{name}/v{version}", "remote_path": "grpc-precompiled-binaries/node/{name}/v{version}",
"package_name": "{node_abi}-{platform}-{arch}.tar.gz", "package_name": "{node_abi}-{platform}-{arch}.tar.gz"
"module_path": "src/node/extension_binary"
}, },
"files": [ "files": [
"LICENSE", "LICENSE",
@ -79,7 +80,7 @@
], ],
"main": "src/node/index.js", "main": "src/node/index.js",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"jshintConfig" : { "jshintConfig": {
"bitwise": true, "bitwise": true,
"curly": true, "curly": true,
"eqeqeq": true, "eqeqeq": true,

@ -29,6 +29,5 @@
set PATH=%PATH%;C:\Program Files\nodejs\;%APPDATA%\npm set PATH=%PATH%;C:\Program Files\nodejs\;%APPDATA%\npm
@rem Expire cache after 1 week @rem Expire cache after 1 day
call npm update --cache-min 604800 call npm update --cache-min 86400

@ -37,8 +37,8 @@ set -ex
export GRPC_CONFIG=${CONFIG:-opt} export GRPC_CONFIG=${CONFIG:-opt}
# Expire cache after 1 week # Expire cache after 1 day
npm update --cache-min 604800 npm update --cache-min 86400
npm install node-gyp-install npm install node-gyp-install
./node_modules/.bin/node-gyp-install ./node_modules/.bin/node-gyp-install

@ -63,7 +63,7 @@ def render_junit_xml_report(resultset, xml_report, suite_package='grpc',
root = ET.Element('testsuites') root = ET.Element('testsuites')
testsuite = ET.SubElement(root, 'testsuite', id='1', package=suite_package, testsuite = ET.SubElement(root, 'testsuite', id='1', package=suite_package,
name=suite_name) name=suite_name)
for shortname, results in resultset.items(): for shortname, results in resultset.iteritems():
for result in results: for result in results:
xml_test = ET.SubElement(testsuite, 'testcase', name=shortname) xml_test = ET.SubElement(testsuite, 'testcase', name=shortname)
if result.elapsed_time: if result.elapsed_time:
@ -120,4 +120,3 @@ def render_interop_html_report(
except: except:
print(exceptions.text_error_template().render()) print(exceptions.text_error_template().render())
raise raise

@ -363,7 +363,8 @@ class NodeLanguage(object):
self.config = config self.config = config
self.args = args self.args = args
_check_compiler(self.args.compiler, ['default', 'node0.12', _check_compiler(self.args.compiler, ['default', 'node0.12',
'node4', 'node5', 'node6']) 'node4', 'node5', 'node6',
'node7'])
if self.args.compiler == 'default': if self.args.compiler == 'default':
self.node_version = '4' self.node_version = '4'
else: else:
@ -1064,6 +1065,7 @@ argp.add_argument('--compiler',
'clang3.4', 'clang3.5', 'clang3.6', 'clang3.7', 'clang3.4', 'clang3.5', 'clang3.6', 'clang3.7',
'vs2010', 'vs2013', 'vs2015', 'vs2010', 'vs2013', 'vs2015',
'python2.7', 'python3.4', 'python3.5', 'python3.6', 'pypy', 'pypy3', 'python2.7', 'python3.4', 'python3.5', 'python3.6', 'pypy', 'pypy3',
'node0.12', 'node4', 'node5', 'node6', 'node7',
'coreclr'], 'coreclr'],
default='default', default='default',
help='Selects compiler to use. Allowed values depend on the platform and language.') help='Selects compiler to use. Allowed values depend on the platform and language.')

@ -35,11 +35,13 @@
set -ex set -ex
cd $(dirname $0)/../.. cd $(dirname $0)/../..
export repo_root=$(pwd)
rm -rf "${WORKSPACE_NAME}" rm -rf "${WORKSPACE_NAME}"
# TODO(jtattermusch): clone --recursive fetches the submodules from github. git clone . "${WORKSPACE_NAME}"
# Try avoiding that to save time and network capacity. # clone gRPC submodules, use data from locally cloned submodules where possible
git clone --recursive . "${WORKSPACE_NAME}" git submodule foreach 'cd "${repo_root}/${WORKSPACE_NAME}" \
&& git submodule update --init --reference ${repo_root}/${name} ${name}'
echo "Running run_tests.py in workspace ${WORKSPACE_NAME}" echo "Running run_tests.py in workspace ${WORKSPACE_NAME}"
python "${WORKSPACE_NAME}/tools/run_tests/run_tests.py" $@ python "${WORKSPACE_NAME}/tools/run_tests/run_tests.py" $@

Loading…
Cancel
Save