mirror of https://github.com/grpc/grpc-node.git
Resolved merge conflicts with master
This commit is contained in:
commit
225cb6e27d
|
|
@ -11,7 +11,8 @@
|
|||
'-pedantic',
|
||||
'-g',
|
||||
'-zdefs',
|
||||
'-Werror'
|
||||
'-Werror',
|
||||
'-Wno-error=deprecated-declarations'
|
||||
],
|
||||
'ldflags': [
|
||||
'-g'
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ server.addProtoService(math.Math.service, {
|
|||
});
|
||||
|
||||
if (require.main === module) {
|
||||
server.bind('0.0.0.0:50051');
|
||||
server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
|
||||
server.start();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,8 @@ var interop_server = require('../interop/interop_server.js');
|
|||
function runTest(iterations, callback) {
|
||||
var testServer = interop_server.getServer(0, false);
|
||||
testServer.server.listen();
|
||||
var client = new testProto.TestService('localhost:' + testServer.port);
|
||||
var client = new testProto.TestService('localhost:' + testServer.port,
|
||||
grpc.Credentials.createInsecure());
|
||||
|
||||
function runIterations(finish) {
|
||||
var start = process.hrtime();
|
||||
|
|
@ -62,7 +63,7 @@ function runTest(iterations, callback) {
|
|||
var timeDiff = process.hrtime(startTime);
|
||||
intervals[i] = timeDiff[0] * 1000000 + timeDiff[1] / 1000;
|
||||
next(i+1);
|
||||
}, {}, deadline);
|
||||
}, {}, {deadline: deadline});
|
||||
}
|
||||
}
|
||||
next(0);
|
||||
|
|
|
|||
|
|
@ -61,7 +61,8 @@ var interop_server = require('../interop/interop_server.js');
|
|||
function runTest(concurrent_calls, seconds, callback) {
|
||||
var testServer = interop_server.getServer(0, false);
|
||||
testServer.server.listen();
|
||||
var client = new testProto.TestService('localhost:' + testServer.port);
|
||||
var client = new testProto.TestService('localhost:' + testServer.port,
|
||||
grpc.Credentials.createInsecure());
|
||||
|
||||
var warmup_num = 100;
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@ var path = require('path');
|
|||
var _ = require('lodash');
|
||||
var grpc = require('..');
|
||||
var examples = grpc.load(__dirname + '/route_guide.proto').examples;
|
||||
var client = new examples.RouteGuide('localhost:50051');
|
||||
var client = new examples.RouteGuide('localhost:50051',
|
||||
grpc.Credentials.createInsecure());
|
||||
|
||||
var COORD_FACTOR = 1e7;
|
||||
|
||||
|
|
|
|||
|
|
@ -239,7 +239,7 @@ function getServer() {
|
|||
if (require.main === module) {
|
||||
// If this is run as a script, start a server on an unused port
|
||||
var routeServer = getServer();
|
||||
routeServer.bind('0.0.0.0:50051');
|
||||
routeServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
|
||||
var argv = parseArgs(process.argv, {
|
||||
string: 'db_path'
|
||||
});
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ var examples = grpc.load(__dirname + '/stock.proto').examples;
|
|||
* This exports a client constructor for the Stock service. The usage looks like
|
||||
*
|
||||
* var StockClient = require('stock_client.js');
|
||||
* var stockClient = new StockClient(server_address);
|
||||
* var stockClient = new StockClient(server_address,
|
||||
* grpc.Credentials.createInsecure());
|
||||
* stockClient.getLastTradePrice({symbol: 'GOOG'}, function(error, response) {
|
||||
* console.log(error || response);
|
||||
* });
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ stockServer.addProtoService(examples.Stock.service, {
|
|||
});
|
||||
|
||||
if (require.main === module) {
|
||||
stockServer.bind('0.0.0.0:50051');
|
||||
stockServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
|
||||
stockServer.listen();
|
||||
}
|
||||
|
||||
|
|
|
|||
18
ext/call.cc
18
ext/call.cc
|
|
@ -510,9 +510,21 @@ NAN_METHOD(Call::New) {
|
|||
NanUtf8String method(args[1]);
|
||||
double deadline = args[2]->NumberValue();
|
||||
grpc_channel *wrapped_channel = channel->GetWrappedChannel();
|
||||
grpc_call *wrapped_call = grpc_channel_create_call(
|
||||
wrapped_channel, CompletionQueueAsyncWorker::GetQueue(), *method,
|
||||
channel->GetHost(), MillisecondsToTimespec(deadline));
|
||||
grpc_call *wrapped_call;
|
||||
if (args[3]->IsString()) {
|
||||
NanUtf8String host_override(args[3]);
|
||||
wrapped_call = grpc_channel_create_call(
|
||||
wrapped_channel, NULL, GRPC_PROPAGATE_DEFAULTS,
|
||||
CompletionQueueAsyncWorker::GetQueue(), *method,
|
||||
*host_override, MillisecondsToTimespec(deadline));
|
||||
} else if (args[3]->IsUndefined() || args[3]->IsNull()) {
|
||||
wrapped_call = grpc_channel_create_call(
|
||||
wrapped_channel, NULL, GRPC_PROPAGATE_DEFAULTS,
|
||||
CompletionQueueAsyncWorker::GetQueue(), *method,
|
||||
NULL, MillisecondsToTimespec(deadline));
|
||||
} else {
|
||||
return NanThrowTypeError("Call's fourth argument must be a string");
|
||||
}
|
||||
call = new Call(wrapped_call);
|
||||
args.This()->SetHiddenValue(NanNew("channel_"), channel_object);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,14 +59,12 @@ using v8::Value;
|
|||
NanCallback *Channel::constructor;
|
||||
Persistent<FunctionTemplate> Channel::fun_tpl;
|
||||
|
||||
Channel::Channel(grpc_channel *channel, NanUtf8String *host)
|
||||
: wrapped_channel(channel), host(host) {}
|
||||
Channel::Channel(grpc_channel *channel) : wrapped_channel(channel) {}
|
||||
|
||||
Channel::~Channel() {
|
||||
if (wrapped_channel != NULL) {
|
||||
grpc_channel_destroy(wrapped_channel);
|
||||
}
|
||||
delete host;
|
||||
}
|
||||
|
||||
void Channel::Init(Handle<Object> exports) {
|
||||
|
|
@ -91,38 +89,31 @@ bool Channel::HasInstance(Handle<Value> val) {
|
|||
|
||||
grpc_channel *Channel::GetWrappedChannel() { return this->wrapped_channel; }
|
||||
|
||||
char *Channel::GetHost() { return **this->host; }
|
||||
|
||||
NAN_METHOD(Channel::New) {
|
||||
NanScope();
|
||||
|
||||
if (args.IsConstructCall()) {
|
||||
if (!args[0]->IsString()) {
|
||||
return NanThrowTypeError("Channel expects a string and an object");
|
||||
return NanThrowTypeError(
|
||||
"Channel expects a string, a credential and an object");
|
||||
}
|
||||
grpc_channel *wrapped_channel;
|
||||
// Owned by the Channel object
|
||||
NanUtf8String *host = new NanUtf8String(args[0]);
|
||||
NanUtf8String *host_override = NULL;
|
||||
if (args[1]->IsUndefined()) {
|
||||
wrapped_channel = grpc_insecure_channel_create(**host, NULL);
|
||||
} else if (args[1]->IsObject()) {
|
||||
grpc_credentials *creds = NULL;
|
||||
Handle<Object> args_hash(args[1]->ToObject()->Clone());
|
||||
if (args_hash->HasOwnProperty(NanNew(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG))) {
|
||||
host_override = new NanUtf8String(args_hash->Get(NanNew(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)));
|
||||
}
|
||||
if (args_hash->HasOwnProperty(NanNew("credentials"))) {
|
||||
Handle<Value> creds_value = args_hash->Get(NanNew("credentials"));
|
||||
if (!Credentials::HasInstance(creds_value)) {
|
||||
return NanThrowTypeError(
|
||||
"credentials arg must be a Credentials object");
|
||||
}
|
||||
Credentials *creds_object =
|
||||
ObjectWrap::Unwrap<Credentials>(creds_value->ToObject());
|
||||
creds = creds_object->GetWrappedCredentials();
|
||||
args_hash->Delete(NanNew("credentials"));
|
||||
}
|
||||
NanUtf8String host(args[0]);
|
||||
grpc_credentials *creds;
|
||||
if (!Credentials::HasInstance(args[1])) {
|
||||
return NanThrowTypeError(
|
||||
"Channel's second argument must be a credential");
|
||||
}
|
||||
Credentials *creds_object = ObjectWrap::Unwrap<Credentials>(
|
||||
args[1]->ToObject());
|
||||
creds = creds_object->GetWrappedCredentials();
|
||||
grpc_channel_args *channel_args_ptr;
|
||||
if (args[2]->IsUndefined()) {
|
||||
channel_args_ptr = NULL;
|
||||
wrapped_channel = grpc_insecure_channel_create(*host, NULL);
|
||||
} else if (args[2]->IsObject()) {
|
||||
Handle<Object> args_hash(args[2]->ToObject()->Clone());
|
||||
Handle<Array> keys(args_hash->GetOwnPropertyNames());
|
||||
grpc_channel_args channel_args;
|
||||
channel_args.num_args = keys->Length();
|
||||
|
|
@ -149,27 +140,25 @@ NAN_METHOD(Channel::New) {
|
|||
return NanThrowTypeError("Arg values must be strings");
|
||||
}
|
||||
}
|
||||
if (creds == NULL) {
|
||||
wrapped_channel = grpc_insecure_channel_create(**host, &channel_args);
|
||||
} else {
|
||||
wrapped_channel =
|
||||
grpc_secure_channel_create(creds, **host, &channel_args);
|
||||
}
|
||||
free(channel_args.args);
|
||||
channel_args_ptr = &channel_args;
|
||||
} else {
|
||||
return NanThrowTypeError("Channel expects a string and an object");
|
||||
}
|
||||
Channel *channel;
|
||||
if (host_override == NULL) {
|
||||
channel = new Channel(wrapped_channel, host);
|
||||
if (creds == NULL) {
|
||||
wrapped_channel = grpc_insecure_channel_create(*host, channel_args_ptr);
|
||||
} else {
|
||||
channel = new Channel(wrapped_channel, host_override);
|
||||
wrapped_channel =
|
||||
grpc_secure_channel_create(creds, *host, channel_args_ptr);
|
||||
}
|
||||
if (channel_args_ptr != NULL) {
|
||||
free(channel_args_ptr->args);
|
||||
}
|
||||
Channel *channel = new Channel(wrapped_channel);
|
||||
channel->Wrap(args.This());
|
||||
NanReturnValue(args.This());
|
||||
} else {
|
||||
const int argc = 2;
|
||||
Local<Value> argv[argc] = {args[0], args[1]};
|
||||
const int argc = 3;
|
||||
Local<Value> argv[argc] = {args[0], args[1], args[2]};
|
||||
NanReturnValue(constructor->GetFunction()->NewInstance(argc, argv));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,11 +53,8 @@ class Channel : public ::node::ObjectWrap {
|
|||
/* Returns the grpc_channel struct that this object wraps */
|
||||
grpc_channel *GetWrappedChannel();
|
||||
|
||||
/* Return the hostname that this channel connects to */
|
||||
char *GetHost();
|
||||
|
||||
private:
|
||||
explicit Channel(grpc_channel *channel, NanUtf8String *host);
|
||||
explicit Channel(grpc_channel *channel);
|
||||
~Channel();
|
||||
|
||||
// Prevent copying
|
||||
|
|
@ -71,7 +68,6 @@ class Channel : public ::node::ObjectWrap {
|
|||
static v8::Persistent<v8::FunctionTemplate> fun_tpl;
|
||||
|
||||
grpc_channel *wrapped_channel;
|
||||
NanUtf8String *host;
|
||||
};
|
||||
|
||||
} // namespace node
|
||||
|
|
|
|||
|
|
@ -81,6 +81,8 @@ void Credentials::Init(Handle<Object> exports) {
|
|||
NanNew<FunctionTemplate>(CreateGce)->GetFunction());
|
||||
ctr->Set(NanNew("createIam"),
|
||||
NanNew<FunctionTemplate>(CreateIam)->GetFunction());
|
||||
ctr->Set(NanNew("createInsecure"),
|
||||
NanNew<FunctionTemplate>(CreateInsecure)->GetFunction());
|
||||
constructor = new NanCallback(ctr);
|
||||
exports->Set(NanNew("Credentials"), ctr);
|
||||
}
|
||||
|
|
@ -92,9 +94,6 @@ bool Credentials::HasInstance(Handle<Value> val) {
|
|||
|
||||
Handle<Value> Credentials::WrapStruct(grpc_credentials *credentials) {
|
||||
NanEscapableScope();
|
||||
if (credentials == NULL) {
|
||||
return NanEscapeScope(NanNull());
|
||||
}
|
||||
const int argc = 1;
|
||||
Handle<Value> argv[argc] = {
|
||||
NanNew<External>(reinterpret_cast<void *>(credentials))};
|
||||
|
|
@ -128,7 +127,11 @@ NAN_METHOD(Credentials::New) {
|
|||
|
||||
NAN_METHOD(Credentials::CreateDefault) {
|
||||
NanScope();
|
||||
NanReturnValue(WrapStruct(grpc_google_default_credentials_create()));
|
||||
grpc_credentials *creds = grpc_google_default_credentials_create();
|
||||
if (creds == NULL) {
|
||||
NanReturnNull();
|
||||
}
|
||||
NanReturnValue(WrapStruct(creds));
|
||||
}
|
||||
|
||||
NAN_METHOD(Credentials::CreateSsl) {
|
||||
|
|
@ -152,9 +155,12 @@ NAN_METHOD(Credentials::CreateSsl) {
|
|||
return NanThrowTypeError(
|
||||
"createSSl's third argument must be a Buffer if provided");
|
||||
}
|
||||
|
||||
NanReturnValue(WrapStruct(grpc_ssl_credentials_create(
|
||||
root_certs, key_cert_pair.private_key == NULL ? NULL : &key_cert_pair)));
|
||||
grpc_credentials *creds = grpc_ssl_credentials_create(
|
||||
root_certs, key_cert_pair.private_key == NULL ? NULL : &key_cert_pair);
|
||||
if (creds == NULL) {
|
||||
NanReturnNull();
|
||||
}
|
||||
NanReturnValue(WrapStruct(creds));
|
||||
}
|
||||
|
||||
NAN_METHOD(Credentials::CreateComposite) {
|
||||
|
|
@ -169,13 +175,21 @@ NAN_METHOD(Credentials::CreateComposite) {
|
|||
}
|
||||
Credentials *creds1 = ObjectWrap::Unwrap<Credentials>(args[0]->ToObject());
|
||||
Credentials *creds2 = ObjectWrap::Unwrap<Credentials>(args[1]->ToObject());
|
||||
NanReturnValue(WrapStruct(grpc_composite_credentials_create(
|
||||
creds1->wrapped_credentials, creds2->wrapped_credentials)));
|
||||
grpc_credentials *creds = grpc_composite_credentials_create(
|
||||
creds1->wrapped_credentials, creds2->wrapped_credentials);
|
||||
if (creds == NULL) {
|
||||
NanReturnNull();
|
||||
}
|
||||
NanReturnValue(WrapStruct(creds));
|
||||
}
|
||||
|
||||
NAN_METHOD(Credentials::CreateGce) {
|
||||
NanScope();
|
||||
NanReturnValue(WrapStruct(grpc_compute_engine_credentials_create()));
|
||||
grpc_credentials *creds = grpc_compute_engine_credentials_create();
|
||||
if (creds == NULL) {
|
||||
NanReturnNull();
|
||||
}
|
||||
NanReturnValue(WrapStruct(creds));
|
||||
}
|
||||
|
||||
NAN_METHOD(Credentials::CreateIam) {
|
||||
|
|
@ -188,8 +202,17 @@ NAN_METHOD(Credentials::CreateIam) {
|
|||
}
|
||||
NanUtf8String auth_token(args[0]);
|
||||
NanUtf8String auth_selector(args[1]);
|
||||
NanReturnValue(
|
||||
WrapStruct(grpc_iam_credentials_create(*auth_token, *auth_selector)));
|
||||
grpc_credentials *creds = grpc_iam_credentials_create(*auth_token,
|
||||
*auth_selector);
|
||||
if (creds == NULL) {
|
||||
NanReturnNull();
|
||||
}
|
||||
NanReturnValue(WrapStruct(creds));
|
||||
}
|
||||
|
||||
NAN_METHOD(Credentials::CreateInsecure) {
|
||||
NanScope();
|
||||
NanReturnValue(WrapStruct(NULL));
|
||||
}
|
||||
|
||||
} // namespace node
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ class Credentials : public ::node::ObjectWrap {
|
|||
static NAN_METHOD(CreateGce);
|
||||
static NAN_METHOD(CreateFake);
|
||||
static NAN_METHOD(CreateIam);
|
||||
static NAN_METHOD(CreateInsecure);
|
||||
static NanCallback *constructor;
|
||||
// Used for typechecking instances of this javascript class
|
||||
static v8::Persistent<v8::FunctionTemplate> fun_tpl;
|
||||
|
|
|
|||
|
|
@ -136,10 +136,6 @@ void Server::Init(Handle<Object> exports) {
|
|||
tpl, "addHttp2Port",
|
||||
NanNew<FunctionTemplate>(AddHttp2Port)->GetFunction());
|
||||
|
||||
NanSetPrototypeTemplate(
|
||||
tpl, "addSecureHttp2Port",
|
||||
NanNew<FunctionTemplate>(AddSecureHttp2Port)->GetFunction());
|
||||
|
||||
NanSetPrototypeTemplate(tpl, "start",
|
||||
NanNew<FunctionTemplate>(Start)->GetFunction());
|
||||
|
||||
|
|
@ -246,45 +242,37 @@ NAN_METHOD(Server::RequestCall) {
|
|||
}
|
||||
|
||||
NAN_METHOD(Server::AddHttp2Port) {
|
||||
NanScope();
|
||||
if (!HasInstance(args.This())) {
|
||||
return NanThrowTypeError("addHttp2Port can only be called on a Server");
|
||||
}
|
||||
if (!args[0]->IsString()) {
|
||||
return NanThrowTypeError("addHttp2Port's argument must be a String");
|
||||
}
|
||||
Server *server = ObjectWrap::Unwrap<Server>(args.This());
|
||||
if (server->wrapped_server == NULL) {
|
||||
return NanThrowError("addHttp2Port cannot be called on a shut down Server");
|
||||
}
|
||||
NanReturnValue(NanNew<Number>(grpc_server_add_http2_port(
|
||||
server->wrapped_server, *NanUtf8String(args[0]))));
|
||||
}
|
||||
|
||||
NAN_METHOD(Server::AddSecureHttp2Port) {
|
||||
NanScope();
|
||||
if (!HasInstance(args.This())) {
|
||||
return NanThrowTypeError(
|
||||
"addSecureHttp2Port can only be called on a Server");
|
||||
"addHttp2Port can only be called on a Server");
|
||||
}
|
||||
if (!args[0]->IsString()) {
|
||||
return NanThrowTypeError(
|
||||
"addSecureHttp2Port's first argument must be a String");
|
||||
"addHttp2Port's first argument must be a String");
|
||||
}
|
||||
if (!ServerCredentials::HasInstance(args[1])) {
|
||||
return NanThrowTypeError(
|
||||
"addSecureHttp2Port's second argument must be ServerCredentials");
|
||||
"addHttp2Port's second argument must be ServerCredentials");
|
||||
}
|
||||
Server *server = ObjectWrap::Unwrap<Server>(args.This());
|
||||
if (server->wrapped_server == NULL) {
|
||||
return NanThrowError(
|
||||
"addSecureHttp2Port cannot be called on a shut down Server");
|
||||
"addHttp2Port cannot be called on a shut down Server");
|
||||
}
|
||||
ServerCredentials *creds = ObjectWrap::Unwrap<ServerCredentials>(
|
||||
ServerCredentials *creds_object = ObjectWrap::Unwrap<ServerCredentials>(
|
||||
args[1]->ToObject());
|
||||
NanReturnValue(NanNew<Number>(grpc_server_add_secure_http2_port(
|
||||
server->wrapped_server, *NanUtf8String(args[0]),
|
||||
creds->GetWrappedServerCredentials())));
|
||||
grpc_server_credentials *creds = creds_object->GetWrappedServerCredentials();
|
||||
int port;
|
||||
if (creds == NULL) {
|
||||
port = grpc_server_add_insecure_http2_port(server->wrapped_server,
|
||||
*NanUtf8String(args[0]));
|
||||
} else {
|
||||
port = grpc_server_add_secure_http2_port(server->wrapped_server,
|
||||
*NanUtf8String(args[0]),
|
||||
creds);
|
||||
}
|
||||
NanReturnValue(NanNew<Number>(port));
|
||||
}
|
||||
|
||||
NAN_METHOD(Server::Start) {
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ class Server : public ::node::ObjectWrap {
|
|||
static NAN_METHOD(New);
|
||||
static NAN_METHOD(RequestCall);
|
||||
static NAN_METHOD(AddHttp2Port);
|
||||
static NAN_METHOD(AddSecureHttp2Port);
|
||||
static NAN_METHOD(Start);
|
||||
static NAN_METHOD(Shutdown);
|
||||
static NanCallback *constructor;
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@ void ServerCredentials::Init(Handle<Object> exports) {
|
|||
Handle<Function> ctr = tpl->GetFunction();
|
||||
ctr->Set(NanNew("createSsl"),
|
||||
NanNew<FunctionTemplate>(CreateSsl)->GetFunction());
|
||||
ctr->Set(NanNew("createInsecure"),
|
||||
NanNew<FunctionTemplate>(CreateInsecure)->GetFunction());
|
||||
constructor = new NanCallback(ctr);
|
||||
exports->Set(NanNew("ServerCredentials"), ctr);
|
||||
}
|
||||
|
|
@ -85,9 +87,6 @@ bool ServerCredentials::HasInstance(Handle<Value> val) {
|
|||
Handle<Value> ServerCredentials::WrapStruct(
|
||||
grpc_server_credentials *credentials) {
|
||||
NanEscapableScope();
|
||||
if (credentials == NULL) {
|
||||
return NanEscapeScope(NanNull());
|
||||
}
|
||||
const int argc = 1;
|
||||
Handle<Value> argv[argc] = {
|
||||
NanNew<External>(reinterpret_cast<void *>(credentials))};
|
||||
|
|
@ -140,8 +139,17 @@ NAN_METHOD(ServerCredentials::CreateSsl) {
|
|||
key_cert_pair.cert_chain = ::node::Buffer::Data(args[2]);
|
||||
// TODO Add a force_client_auth parameter and pass it as the last parameter
|
||||
// here.
|
||||
NanReturnValue(WrapStruct(
|
||||
grpc_ssl_server_credentials_create(root_certs, &key_cert_pair, 1, 0)));
|
||||
grpc_server_credentials *creds =
|
||||
grpc_ssl_server_credentials_create(root_certs, &key_cert_pair, 1, 0);
|
||||
if (creds == NULL) {
|
||||
NanReturnNull();
|
||||
}
|
||||
NanReturnValue(WrapStruct(creds));
|
||||
}
|
||||
|
||||
NAN_METHOD(ServerCredentials::CreateInsecure) {
|
||||
NanScope();
|
||||
NanReturnValue(WrapStruct(NULL));
|
||||
}
|
||||
|
||||
} // namespace node
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ class ServerCredentials : public ::node::ObjectWrap {
|
|||
|
||||
static NAN_METHOD(New);
|
||||
static NAN_METHOD(CreateSsl);
|
||||
static NAN_METHOD(CreateInsecure);
|
||||
static NanCallback *constructor;
|
||||
// Used for typechecking instances of this javascript class
|
||||
static v8::Persistent<v8::FunctionTemplate> fun_tpl;
|
||||
|
|
|
|||
|
|
@ -67,11 +67,8 @@ function zeroBuffer(size) {
|
|||
* primarily for use with mocha
|
||||
*/
|
||||
function emptyUnary(client, done) {
|
||||
var call = client.emptyCall({}, function(err, resp) {
|
||||
client.emptyCall({}, function(err, resp) {
|
||||
assert.ifError(err);
|
||||
});
|
||||
call.on('status', function(status) {
|
||||
assert.strictEqual(status.code, grpc.status.OK);
|
||||
if (done) {
|
||||
done();
|
||||
}
|
||||
|
|
@ -92,13 +89,10 @@ function largeUnary(client, done) {
|
|||
body: zeroBuffer(271828)
|
||||
}
|
||||
};
|
||||
var call = client.unaryCall(arg, function(err, resp) {
|
||||
client.unaryCall(arg, function(err, resp) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(resp.payload.type, 'COMPRESSABLE');
|
||||
assert.strictEqual(resp.payload.body.length, 314159);
|
||||
});
|
||||
call.on('status', function(status) {
|
||||
assert.strictEqual(status.code, grpc.status.OK);
|
||||
if (done) {
|
||||
done();
|
||||
}
|
||||
|
|
@ -115,9 +109,6 @@ function clientStreaming(client, done) {
|
|||
var call = client.streamingInputCall(function(err, resp) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(resp.aggregated_payload_size, 74922);
|
||||
});
|
||||
call.on('status', function(status) {
|
||||
assert.strictEqual(status.code, grpc.status.OK);
|
||||
if (done) {
|
||||
done();
|
||||
}
|
||||
|
|
@ -268,7 +259,7 @@ function cancelAfterFirstResponse(client, done) {
|
|||
function timeoutOnSleepingServer(client, done) {
|
||||
var deadline = new Date();
|
||||
deadline.setMilliseconds(deadline.getMilliseconds() + 1);
|
||||
var call = client.fullDuplexCall(null, deadline);
|
||||
var call = client.fullDuplexCall(null, {deadline: deadline});
|
||||
call.write({
|
||||
payload: {body: zeroBuffer(27182)}
|
||||
});
|
||||
|
|
@ -302,15 +293,14 @@ function authTest(expected_user, scope, client, done) {
|
|||
fill_username: true,
|
||||
fill_oauth_scope: true
|
||||
};
|
||||
var call = client.unaryCall(arg, function(err, resp) {
|
||||
client.unaryCall(arg, function(err, resp) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(resp.payload.type, 'COMPRESSABLE');
|
||||
assert.strictEqual(resp.payload.body.length, 314159);
|
||||
assert.strictEqual(resp.username, expected_user);
|
||||
assert.strictEqual(resp.oauth_scope, AUTH_SCOPE_RESPONSE);
|
||||
});
|
||||
call.on('status', function(status) {
|
||||
assert.strictEqual(status.code, grpc.status.OK);
|
||||
if (scope) {
|
||||
assert.strictEqual(resp.oauth_scope, AUTH_SCOPE_RESPONSE);
|
||||
}
|
||||
if (done) {
|
||||
done();
|
||||
}
|
||||
|
|
@ -340,17 +330,14 @@ function oauth2Test(expected_user, scope, per_rpc, client, done) {
|
|||
};
|
||||
var makeTestCall = function(error, client_metadata) {
|
||||
assert.ifError(error);
|
||||
var call = client.unaryCall(arg, function(err, resp) {
|
||||
client.unaryCall(arg, function(err, resp) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(resp.username, expected_user);
|
||||
assert.strictEqual(resp.oauth_scope, AUTH_SCOPE_RESPONSE);
|
||||
});
|
||||
call.on('status', function(status) {
|
||||
assert.strictEqual(status.code, grpc.status.OK);
|
||||
if (done) {
|
||||
done();
|
||||
}
|
||||
});
|
||||
}, client_metadata);
|
||||
};
|
||||
if (per_rpc) {
|
||||
updateMetadata('', {}, makeTestCall);
|
||||
|
|
@ -358,7 +345,6 @@ function oauth2Test(expected_user, scope, per_rpc, client, done) {
|
|||
client.$updateMetadata = updateMetadata;
|
||||
makeTestCall(null, {});
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -397,6 +383,7 @@ var test_cases = {
|
|||
function runTest(address, host_override, test_case, tls, test_ca, done) {
|
||||
// TODO(mlumish): enable TLS functionality
|
||||
var options = {};
|
||||
var creds;
|
||||
if (tls) {
|
||||
var ca_path;
|
||||
if (test_ca) {
|
||||
|
|
@ -405,13 +392,15 @@ function runTest(address, host_override, test_case, tls, test_ca, done) {
|
|||
ca_path = process.env.SSL_CERT_FILE;
|
||||
}
|
||||
var ca_data = fs.readFileSync(ca_path);
|
||||
var creds = grpc.Credentials.createSsl(ca_data);
|
||||
options.credentials = creds;
|
||||
creds = grpc.Credentials.createSsl(ca_data);
|
||||
if (host_override) {
|
||||
options['grpc.ssl_target_name_override'] = host_override;
|
||||
options['grpc.default_authority'] = host_override;
|
||||
}
|
||||
} else {
|
||||
creds = grpc.Credentials.createInsecure();
|
||||
}
|
||||
var client = new testProto.TestService(address, options);
|
||||
var client = new testProto.TestService(address, creds, options);
|
||||
|
||||
test_cases[test_case](client, done);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ function handleHalfDuplex(call) {
|
|||
function getServer(port, tls) {
|
||||
// TODO(mlumish): enable TLS functionality
|
||||
var options = {};
|
||||
var server_creds = null;
|
||||
var server_creds;
|
||||
if (tls) {
|
||||
var key_path = path.join(__dirname, '../test/data/server1.key');
|
||||
var pem_path = path.join(__dirname, '../test/data/server1.pem');
|
||||
|
|
@ -171,6 +171,8 @@ function getServer(port, tls) {
|
|||
server_creds = grpc.ServerCredentials.createSsl(null,
|
||||
key_data,
|
||||
pem_data);
|
||||
} else {
|
||||
server_creds = grpc.ServerCredentials.createInsecure();
|
||||
}
|
||||
var server = new grpc.Server(options);
|
||||
server.addProtoService(testProto.TestService.service, {
|
||||
|
|
|
|||
|
|
@ -207,6 +207,25 @@ ClientReadableStream.prototype.getPeer = getPeer;
|
|||
ClientWritableStream.prototype.getPeer = getPeer;
|
||||
ClientDuplexStream.prototype.getPeer = getPeer;
|
||||
|
||||
/**
|
||||
* Get a call object built with the provided options. Keys for options are
|
||||
* 'deadline', which takes a date or number, and 'host', which takes a string
|
||||
* and overrides the hostname to connect to.
|
||||
* @param {Object} options Options map.
|
||||
*/
|
||||
function getCall(channel, method, options) {
|
||||
var deadline;
|
||||
var host;
|
||||
if (options) {
|
||||
deadline = options.deadline;
|
||||
host = options.host;
|
||||
}
|
||||
if (deadline === undefined) {
|
||||
deadline = Infinity;
|
||||
}
|
||||
return new grpc.Call(channel, method, deadline, host);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a function that can make unary requests to the specified method.
|
||||
* @param {string} method The name of the method to request
|
||||
|
|
@ -226,17 +245,13 @@ function makeUnaryRequestFunction(method, serialize, deserialize) {
|
|||
* response is received
|
||||
* @param {array=} metadata Array of metadata key/value pairs to add to the
|
||||
* call
|
||||
* @param {(number|Date)=} deadline The deadline for processing this request.
|
||||
* Defaults to infinite future
|
||||
* @param {Object=} options Options map
|
||||
* @return {EventEmitter} An event emitter for stream related events
|
||||
*/
|
||||
function makeUnaryRequest(argument, callback, metadata, deadline) {
|
||||
function makeUnaryRequest(argument, callback, metadata, options) {
|
||||
/* jshint validthis: true */
|
||||
if (deadline === undefined) {
|
||||
deadline = Infinity;
|
||||
}
|
||||
var emitter = new EventEmitter();
|
||||
var call = new grpc.Call(this.$channel, method, deadline);
|
||||
var call = getCall(this.$channel, method, options);
|
||||
if (metadata === null || metadata === undefined) {
|
||||
metadata = {};
|
||||
}
|
||||
|
|
@ -300,16 +315,12 @@ function makeClientStreamRequestFunction(method, serialize, deserialize) {
|
|||
* response is received
|
||||
* @param {array=} metadata Array of metadata key/value pairs to add to the
|
||||
* call
|
||||
* @param {(number|Date)=} deadline The deadline for processing this request.
|
||||
* Defaults to infinite future
|
||||
* @param {Object=} options Options map
|
||||
* @return {EventEmitter} An event emitter for stream related events
|
||||
*/
|
||||
function makeClientStreamRequest(callback, metadata, deadline) {
|
||||
function makeClientStreamRequest(callback, metadata, options) {
|
||||
/* jshint validthis: true */
|
||||
if (deadline === undefined) {
|
||||
deadline = Infinity;
|
||||
}
|
||||
var call = new grpc.Call(this.$channel, method, deadline);
|
||||
var call = getCall(this.$channel, method, options);
|
||||
if (metadata === null || metadata === undefined) {
|
||||
metadata = {};
|
||||
}
|
||||
|
|
@ -374,16 +385,12 @@ function makeServerStreamRequestFunction(method, serialize, deserialize) {
|
|||
* serialize
|
||||
* @param {array=} metadata Array of metadata key/value pairs to add to the
|
||||
* call
|
||||
* @param {(number|Date)=} deadline The deadline for processing this request.
|
||||
* Defaults to infinite future
|
||||
* @param {Object} options Options map
|
||||
* @return {EventEmitter} An event emitter for stream related events
|
||||
*/
|
||||
function makeServerStreamRequest(argument, metadata, deadline) {
|
||||
function makeServerStreamRequest(argument, metadata, options) {
|
||||
/* jshint validthis: true */
|
||||
if (deadline === undefined) {
|
||||
deadline = Infinity;
|
||||
}
|
||||
var call = new grpc.Call(this.$channel, method, deadline);
|
||||
var call = getCall(this.$channel, method, options);
|
||||
if (metadata === null || metadata === undefined) {
|
||||
metadata = {};
|
||||
}
|
||||
|
|
@ -446,16 +453,12 @@ function makeBidiStreamRequestFunction(method, serialize, deserialize) {
|
|||
* @this {SurfaceClient} Client object. Must have a channel member.
|
||||
* @param {array=} metadata Array of metadata key/value pairs to add to the
|
||||
* call
|
||||
* @param {(number|Date)=} deadline The deadline for processing this request.
|
||||
* Defaults to infinite future
|
||||
* @param {Options} options Options map
|
||||
* @return {EventEmitter} An event emitter for stream related events
|
||||
*/
|
||||
function makeBidiStreamRequest(metadata, deadline) {
|
||||
function makeBidiStreamRequest(metadata, options) {
|
||||
/* jshint validthis: true */
|
||||
if (deadline === undefined) {
|
||||
deadline = Infinity;
|
||||
}
|
||||
var call = new grpc.Call(this.$channel, method, deadline);
|
||||
var call = getCall(this.$channel, method, options);
|
||||
if (metadata === null || metadata === undefined) {
|
||||
metadata = {};
|
||||
}
|
||||
|
|
@ -523,7 +526,7 @@ var requester_makers = {
|
|||
* requestSerialize: function to serialize request objects
|
||||
* responseDeserialize: function to deserialize response objects
|
||||
* @param {Object} methods An object mapping method names to method attributes
|
||||
* @param {string} serviceName The name of the service
|
||||
* @param {string} serviceName The fully qualified name of the service
|
||||
* @return {function(string, Object)} New client constructor
|
||||
*/
|
||||
exports.makeClientConstructor = function(methods, serviceName) {
|
||||
|
|
@ -531,11 +534,13 @@ exports.makeClientConstructor = function(methods, serviceName) {
|
|||
* Create a client with the given methods
|
||||
* @constructor
|
||||
* @param {string} address The address of the server to connect to
|
||||
* @param {grpc.Credentials} credentials Credentials to use to connect
|
||||
* to the server
|
||||
* @param {Object} options Options to pass to the underlying channel
|
||||
* @param {function(string, Object, function)=} updateMetadata function to
|
||||
* update the metadata for each request
|
||||
*/
|
||||
function Client(address, options, updateMetadata) {
|
||||
function Client(address, credentials, options, updateMetadata) {
|
||||
if (!updateMetadata) {
|
||||
updateMetadata = function(uri, metadata, callback) {
|
||||
callback(null, metadata);
|
||||
|
|
@ -545,9 +550,11 @@ exports.makeClientConstructor = function(methods, serviceName) {
|
|||
options = {};
|
||||
}
|
||||
options['grpc.primary_user_agent'] = 'grpc-node/' + version;
|
||||
this.$channel = new grpc.Channel(address, options);
|
||||
this.$server_address = address.replace(/\/$/, '');
|
||||
this.$auth_uri = this.$server_address + '/' + serviceName;
|
||||
this.$channel = new grpc.Channel(address, credentials, options);
|
||||
// Remove the optional DNS scheme, trailing port, and trailing backslash
|
||||
address = address.replace(/^(dns:\/{3})?([^:\/]+)(:\d+)?\/?$/, '$2');
|
||||
this.$server_address = address;
|
||||
this.$auth_uri = 'https://' + this.server_address + '/' + serviceName;
|
||||
this.$updateMetadata = updateMetadata;
|
||||
}
|
||||
|
||||
|
|
@ -588,7 +595,8 @@ exports.makeClientConstructor = function(methods, serviceName) {
|
|||
*/
|
||||
exports.makeProtobufClientConstructor = function(service) {
|
||||
var method_attrs = common.getProtobufServiceAttrs(service, service.name);
|
||||
var Client = exports.makeClientConstructor(method_attrs);
|
||||
var Client = exports.makeClientConstructor(
|
||||
method_attrs, common.fullyQualifiedName(service));
|
||||
Client.service = service;
|
||||
return Client;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -714,11 +714,7 @@ Server.prototype.bind = function(port, creds) {
|
|||
if (this.started) {
|
||||
throw new Error('Can\'t bind an already running server to an address');
|
||||
}
|
||||
if (creds) {
|
||||
return this._server.addSecureHttp2Port(port, creds);
|
||||
} else {
|
||||
return this._server.addHttp2Port(port);
|
||||
}
|
||||
return this._server.addHttp2Port(port, creds);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -48,14 +48,17 @@ function getDeadline(timeout_secs) {
|
|||
return deadline;
|
||||
}
|
||||
|
||||
var insecureCreds = grpc.Credentials.createInsecure();
|
||||
|
||||
describe('call', function() {
|
||||
var channel;
|
||||
var server;
|
||||
before(function() {
|
||||
server = new grpc.Server();
|
||||
var port = server.addHttp2Port('localhost:0');
|
||||
var port = server.addHttp2Port('localhost:0',
|
||||
grpc.ServerCredentials.createInsecure());
|
||||
server.start();
|
||||
channel = new grpc.Channel('localhost:' + port);
|
||||
channel = new grpc.Channel('localhost:' + port, insecureCreds);
|
||||
});
|
||||
after(function() {
|
||||
server.shutdown();
|
||||
|
|
@ -81,8 +84,13 @@ describe('call', function() {
|
|||
new grpc.Call(channel, 'method', 0);
|
||||
});
|
||||
});
|
||||
it('should accept an optional fourth string parameter', function() {
|
||||
assert.doesNotThrow(function() {
|
||||
new grpc.Call(channel, 'method', new Date(), 'host_override');
|
||||
});
|
||||
});
|
||||
it('should fail with a closed channel', function() {
|
||||
var local_channel = new grpc.Channel('hostname');
|
||||
var local_channel = new grpc.Channel('hostname', insecureCreds);
|
||||
local_channel.close();
|
||||
assert.throws(function() {
|
||||
new grpc.Call(channel, 'method');
|
||||
|
|
|
|||
|
|
@ -36,11 +36,13 @@
|
|||
var assert = require('assert');
|
||||
var grpc = require('bindings')('grpc.node');
|
||||
|
||||
var insecureCreds = grpc.Credentials.createInsecure();
|
||||
|
||||
describe('channel', function() {
|
||||
describe('constructor', function() {
|
||||
it('should require a string for the first argument', function() {
|
||||
assert.doesNotThrow(function() {
|
||||
new grpc.Channel('hostname');
|
||||
new grpc.Channel('hostname', insecureCreds);
|
||||
});
|
||||
assert.throws(function() {
|
||||
new grpc.Channel();
|
||||
|
|
@ -49,38 +51,49 @@ describe('channel', function() {
|
|||
new grpc.Channel(5);
|
||||
});
|
||||
});
|
||||
it('should accept an object for the second parameter', function() {
|
||||
it('should require a credential for the second argument', function() {
|
||||
assert.doesNotThrow(function() {
|
||||
new grpc.Channel('hostname', {});
|
||||
new grpc.Channel('hostname', insecureCreds);
|
||||
});
|
||||
assert.throws(function() {
|
||||
new grpc.Channel('hostname', 5);
|
||||
});
|
||||
assert.throws(function() {
|
||||
new grpc.Channel('hostname');
|
||||
});
|
||||
});
|
||||
it('should accept an object for the third argument', function() {
|
||||
assert.doesNotThrow(function() {
|
||||
new grpc.Channel('hostname', insecureCreds, {});
|
||||
});
|
||||
assert.throws(function() {
|
||||
new grpc.Channel('hostname', insecureCreds, 'abc');
|
||||
});
|
||||
});
|
||||
it('should only accept objects with string or int values', function() {
|
||||
assert.doesNotThrow(function() {
|
||||
new grpc.Channel('hostname', {'key' : 'value'});
|
||||
new grpc.Channel('hostname', insecureCreds,{'key' : 'value'});
|
||||
});
|
||||
assert.doesNotThrow(function() {
|
||||
new grpc.Channel('hostname', {'key' : 5});
|
||||
new grpc.Channel('hostname', insecureCreds, {'key' : 5});
|
||||
});
|
||||
assert.throws(function() {
|
||||
new grpc.Channel('hostname', {'key' : null});
|
||||
new grpc.Channel('hostname', insecureCreds, {'key' : null});
|
||||
});
|
||||
assert.throws(function() {
|
||||
new grpc.Channel('hostname', {'key' : new Date()});
|
||||
new grpc.Channel('hostname', insecureCreds, {'key' : new Date()});
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('close', function() {
|
||||
it('should succeed silently', function() {
|
||||
var channel = new grpc.Channel('hostname', {});
|
||||
var channel = new grpc.Channel('hostname', insecureCreds, {});
|
||||
assert.doesNotThrow(function() {
|
||||
channel.close();
|
||||
});
|
||||
});
|
||||
it('should be idempotent', function() {
|
||||
var channel = new grpc.Channel('hostname', {});
|
||||
var channel = new grpc.Channel('hostname', insecureCreds, {});
|
||||
assert.doesNotThrow(function() {
|
||||
channel.close();
|
||||
channel.close();
|
||||
|
|
@ -89,7 +102,7 @@ describe('channel', function() {
|
|||
});
|
||||
describe('getTarget', function() {
|
||||
it('should return a string', function() {
|
||||
var channel = new grpc.Channel('localhost', {});
|
||||
var channel = new grpc.Channel('localhost', insecureCreds, {});
|
||||
assert.strictEqual(typeof channel.getTarget(), 'string');
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -57,22 +57,23 @@ function multiDone(done, count) {
|
|||
};
|
||||
}
|
||||
|
||||
var insecureCreds = grpc.Credentials.createInsecure();
|
||||
|
||||
describe('end-to-end', function() {
|
||||
var server;
|
||||
var channel;
|
||||
before(function() {
|
||||
server = new grpc.Server();
|
||||
var port_num = server.addHttp2Port('0.0.0.0:0');
|
||||
var port_num = server.addHttp2Port('0.0.0.0:0',
|
||||
grpc.ServerCredentials.createInsecure());
|
||||
server.start();
|
||||
channel = new grpc.Channel('localhost:' + port_num);
|
||||
channel = new grpc.Channel('localhost:' + port_num, insecureCreds);
|
||||
});
|
||||
after(function() {
|
||||
server.shutdown();
|
||||
});
|
||||
it('should start and end a request without error', function(complete) {
|
||||
var done = multiDone(complete, 2);
|
||||
var deadline = new Date();
|
||||
deadline.setSeconds(deadline.getSeconds() + 3);
|
||||
var status_text = 'xyz';
|
||||
var call = new grpc.Call(channel,
|
||||
'dummy_method',
|
||||
|
|
@ -123,8 +124,6 @@ describe('end-to-end', function() {
|
|||
});
|
||||
it('should successfully send and receive metadata', function(complete) {
|
||||
var done = multiDone(complete, 2);
|
||||
var deadline = new Date();
|
||||
deadline.setSeconds(deadline.getSeconds() + 3);
|
||||
var status_text = 'xyz';
|
||||
var call = new grpc.Call(channel,
|
||||
'dummy_method',
|
||||
|
|
@ -181,8 +180,6 @@ describe('end-to-end', function() {
|
|||
var req_text = 'client_request';
|
||||
var reply_text = 'server_response';
|
||||
var done = multiDone(complete, 2);
|
||||
var deadline = new Date();
|
||||
deadline.setSeconds(deadline.getSeconds() + 3);
|
||||
var status_text = 'success';
|
||||
var call = new grpc.Call(channel,
|
||||
'dummy_method',
|
||||
|
|
@ -238,8 +235,6 @@ describe('end-to-end', function() {
|
|||
it('should send multiple messages', function(complete) {
|
||||
var done = multiDone(complete, 2);
|
||||
var requests = ['req1', 'req2'];
|
||||
var deadline = new Date();
|
||||
deadline.setSeconds(deadline.getSeconds() + 3);
|
||||
var status_text = 'xyz';
|
||||
var call = new grpc.Call(channel,
|
||||
'dummy_method',
|
||||
|
|
|
|||
|
|
@ -54,9 +54,11 @@ describe('Health Checking', function() {
|
|||
new health.Implementation(statusMap));
|
||||
var healthClient;
|
||||
before(function() {
|
||||
var port_num = healthServer.bind('0.0.0.0:0');
|
||||
var port_num = healthServer.bind('0.0.0.0:0',
|
||||
grpc.ServerCredentials.createInsecure());
|
||||
healthServer.start();
|
||||
healthClient = new health.Client('localhost:' + port_num);
|
||||
healthClient = new health.Client('localhost:' + port_num,
|
||||
grpc.Credentials.createInsecure());
|
||||
});
|
||||
after(function() {
|
||||
healthServer.shutdown();
|
||||
|
|
|
|||
|
|
@ -51,9 +51,11 @@ var server = require('../examples/math_server.js');
|
|||
|
||||
describe('Math client', function() {
|
||||
before(function(done) {
|
||||
var port_num = server.bind('0.0.0.0:0');
|
||||
var port_num = server.bind('0.0.0.0:0',
|
||||
grpc.ServerCredentials.createInsecure());
|
||||
server.start();
|
||||
math_client = new math.Math('localhost:' + port_num);
|
||||
math_client = new math.Math('localhost:' + port_num,
|
||||
grpc.Credentials.createInsecure());
|
||||
done();
|
||||
});
|
||||
after(function() {
|
||||
|
|
|
|||
|
|
@ -59,16 +59,11 @@ describe('server', function() {
|
|||
it('should bind to an unused port', function() {
|
||||
var port;
|
||||
assert.doesNotThrow(function() {
|
||||
port = server.addHttp2Port('0.0.0.0:0');
|
||||
port = server.addHttp2Port('0.0.0.0:0',
|
||||
grpc.ServerCredentials.createInsecure());
|
||||
});
|
||||
assert(port > 0);
|
||||
});
|
||||
});
|
||||
describe('addSecureHttp2Port', function() {
|
||||
var server;
|
||||
before(function() {
|
||||
server = new grpc.Server();
|
||||
});
|
||||
it('should bind to an unused port with ssl credentials', function() {
|
||||
var port;
|
||||
var key_path = path.join(__dirname, '../test/data/server1.key');
|
||||
|
|
@ -77,16 +72,22 @@ describe('server', function() {
|
|||
var pem_data = fs.readFileSync(pem_path);
|
||||
var creds = grpc.ServerCredentials.createSsl(null, key_data, pem_data);
|
||||
assert.doesNotThrow(function() {
|
||||
port = server.addSecureHttp2Port('0.0.0.0:0', creds);
|
||||
port = server.addHttp2Port('0.0.0.0:0', creds);
|
||||
});
|
||||
assert(port > 0);
|
||||
});
|
||||
});
|
||||
describe('addSecureHttp2Port', function() {
|
||||
var server;
|
||||
before(function() {
|
||||
server = new grpc.Server();
|
||||
});
|
||||
});
|
||||
describe('listen', function() {
|
||||
var server;
|
||||
before(function() {
|
||||
server = new grpc.Server();
|
||||
server.addHttp2Port('0.0.0.0:0');
|
||||
server.addHttp2Port('0.0.0.0:0', grpc.ServerCredentials.createInsecure());
|
||||
});
|
||||
after(function() {
|
||||
server.shutdown();
|
||||
|
|
|
|||
|
|
@ -47,6 +47,8 @@ var mathService = math_proto.lookup('math.Math');
|
|||
|
||||
var _ = require('lodash');
|
||||
|
||||
var server_insecure_creds = grpc.ServerCredentials.createInsecure();
|
||||
|
||||
describe('File loader', function() {
|
||||
it('Should load a proto file by default', function() {
|
||||
assert.doesNotThrow(function() {
|
||||
|
|
@ -140,9 +142,9 @@ describe('Echo service', function() {
|
|||
callback(null, call.request);
|
||||
}
|
||||
});
|
||||
var port = server.bind('localhost:0');
|
||||
var port = server.bind('localhost:0', server_insecure_creds);
|
||||
var Client = surface_client.makeProtobufClientConstructor(echo_service);
|
||||
client = new Client('localhost:' + port);
|
||||
client = new Client('localhost:' + port, grpc.Credentials.createInsecure());
|
||||
server.start();
|
||||
});
|
||||
after(function() {
|
||||
|
|
@ -184,10 +186,11 @@ describe('Generic client and server', function() {
|
|||
callback(null, _.capitalize(call.request));
|
||||
}
|
||||
});
|
||||
var port = server.bind('localhost:0');
|
||||
var port = server.bind('localhost:0', server_insecure_creds);
|
||||
server.start();
|
||||
var Client = grpc.makeGenericClientConstructor(string_service_attrs);
|
||||
client = new Client('localhost:' + port);
|
||||
client = new Client('localhost:' + port,
|
||||
grpc.Credentials.createInsecure());
|
||||
});
|
||||
after(function() {
|
||||
server.shutdown();
|
||||
|
|
@ -232,9 +235,9 @@ describe('Echo metadata', function() {
|
|||
});
|
||||
}
|
||||
});
|
||||
var port = server.bind('localhost:0');
|
||||
var port = server.bind('localhost:0', server_insecure_creds);
|
||||
var Client = surface_client.makeProtobufClientConstructor(test_service);
|
||||
client = new Client('localhost:' + port);
|
||||
client = new Client('localhost:' + port, grpc.Credentials.createInsecure());
|
||||
server.start();
|
||||
});
|
||||
after(function() {
|
||||
|
|
@ -353,9 +356,9 @@ describe('Other conditions', function() {
|
|||
});
|
||||
}
|
||||
});
|
||||
port = server.bind('localhost:0');
|
||||
port = server.bind('localhost:0', server_insecure_creds);
|
||||
var Client = surface_client.makeProtobufClientConstructor(test_service);
|
||||
client = new Client('localhost:' + port);
|
||||
client = new Client('localhost:' + port, grpc.Credentials.createInsecure());
|
||||
server.start();
|
||||
});
|
||||
after(function() {
|
||||
|
|
@ -400,7 +403,8 @@ describe('Other conditions', function() {
|
|||
};
|
||||
var Client = surface_client.makeClientConstructor(test_service_attrs,
|
||||
'TestService');
|
||||
misbehavingClient = new Client('localhost:' + port);
|
||||
misbehavingClient = new Client('localhost:' + port,
|
||||
grpc.Credentials.createInsecure());
|
||||
});
|
||||
it('should respond correctly to a unary call', function(done) {
|
||||
misbehavingClient.unary(badArg, function(err, data) {
|
||||
|
|
@ -618,9 +622,9 @@ describe('Cancelling surface client', function() {
|
|||
'fib': function(stream) {},
|
||||
'sum': function(stream) {}
|
||||
});
|
||||
var port = server.bind('localhost:0');
|
||||
var port = server.bind('localhost:0', server_insecure_creds);
|
||||
var Client = surface_client.makeProtobufClientConstructor(mathService);
|
||||
client = new Client('localhost:' + port);
|
||||
client = new Client('localhost:' + port, grpc.Credentials.createInsecure());
|
||||
server.start();
|
||||
});
|
||||
after(function() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue