mirror of
https://github.com/grpc/grpc-node.git
synced 2025-12-08 18:23:54 +00:00
Merge pull request #7203 from murgatroid99/node_separate_health_check
Split Node health check code into a separate package and make it use static codegen
This commit is contained in:
commit
25ddf0425e
28
health_check/LICENSE
Normal file
28
health_check/LICENSE
Normal file
@ -0,0 +1,28 @@
|
||||
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.
|
||||
@ -33,14 +33,12 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var grpc = require('../');
|
||||
var grpc = require('grpc');
|
||||
|
||||
var _ = require('lodash');
|
||||
|
||||
var health_proto = grpc.load(__dirname +
|
||||
'/../../proto/grpc/health/v1/health.proto');
|
||||
|
||||
var HealthClient = health_proto.grpc.health.v1.Health;
|
||||
var health_messages = require('./v1/health_pb');
|
||||
var health_service = require('./v1/health_grpc_pb');
|
||||
|
||||
function HealthImplementation(statusMap) {
|
||||
this.statusMap = _.clone(statusMap);
|
||||
@ -51,17 +49,19 @@ HealthImplementation.prototype.setStatus = function(service, status) {
|
||||
};
|
||||
|
||||
HealthImplementation.prototype.check = function(call, callback){
|
||||
var service = call.request.service;
|
||||
var service = call.request.getService();
|
||||
var status = _.get(this.statusMap, service, null);
|
||||
if (status === null) {
|
||||
callback({code:grpc.status.NOT_FOUND});
|
||||
} else {
|
||||
callback(null, {status: status});
|
||||
var response = new health_messages.HealthCheckResponse();
|
||||
response.setStatus(status);
|
||||
callback(null, response);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
Client: HealthClient,
|
||||
service: HealthClient.service,
|
||||
Client: health_service.HealthClient,
|
||||
service: health_service.HealthService,
|
||||
Implementation: HealthImplementation
|
||||
};
|
||||
|
||||
37
health_check/node_modules/grpc.js
generated
vendored
Normal file
37
health_check/node_modules/grpc.js
generated
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2016, 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.
|
||||
*
|
||||
*/
|
||||
|
||||
/* This exists solely to allow the generated code to import the grpc module
|
||||
* without using a relative path */
|
||||
|
||||
module.exports = require('../..');
|
||||
29
health_check/package.json
Normal file
29
health_check/package.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "grpc-health-check",
|
||||
"version": "0.16.0-dev",
|
||||
"author": "Google Inc.",
|
||||
"description": "Health check service for use with gRPC",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/grpc/grpc.git"
|
||||
},
|
||||
"bugs": "https://github.com/grpc/grpc/issues",
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Michael Lumish",
|
||||
"email": "mlumish@google.com"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"grpc": "^0.15.0",
|
||||
"lodash": "^3.9.3",
|
||||
"google-protobuf": "^3.0.0-alpha.5"
|
||||
},
|
||||
"files": {
|
||||
"LICENSE",
|
||||
"health.js",
|
||||
"v1"
|
||||
},
|
||||
"main": "src/node/index.js",
|
||||
"license": "BSD-3-Clause"
|
||||
}
|
||||
74
health_check/v1/health_grpc_pb.js
Normal file
74
health_check/v1/health_grpc_pb.js
Normal file
@ -0,0 +1,74 @@
|
||||
// GENERATED CODE -- DO NOT EDIT!
|
||||
|
||||
// Original file comments:
|
||||
// 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.
|
||||
//
|
||||
'use strict';
|
||||
var grpc = require('grpc');
|
||||
var v1_health_pb = require('../v1/health_pb.js');
|
||||
|
||||
function serialize_HealthCheckRequest(arg) {
|
||||
if (!(arg instanceof v1_health_pb.HealthCheckRequest)) {
|
||||
throw new Error('Expected argument of type HealthCheckRequest');
|
||||
}
|
||||
return new Buffer(arg.serializeBinary());
|
||||
}
|
||||
|
||||
function deserialize_HealthCheckRequest(buffer_arg) {
|
||||
return v1_health_pb.HealthCheckRequest.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
function serialize_HealthCheckResponse(arg) {
|
||||
if (!(arg instanceof v1_health_pb.HealthCheckResponse)) {
|
||||
throw new Error('Expected argument of type HealthCheckResponse');
|
||||
}
|
||||
return new Buffer(arg.serializeBinary());
|
||||
}
|
||||
|
||||
function deserialize_HealthCheckResponse(buffer_arg) {
|
||||
return v1_health_pb.HealthCheckResponse.deserializeBinary(new Uint8Array(buffer_arg));
|
||||
}
|
||||
|
||||
|
||||
var HealthService = exports.HealthService = {
|
||||
check: {
|
||||
path: '/grpc.health.v1.Health/Check',
|
||||
requestStream: false,
|
||||
responseStream: false,
|
||||
requestType: v1_health_pb.HealthCheckRequest,
|
||||
responseType: v1_health_pb.HealthCheckResponse,
|
||||
requestSerialize: serialize_HealthCheckRequest,
|
||||
requestDeserialize: deserialize_HealthCheckRequest,
|
||||
responseSerialize: serialize_HealthCheckResponse,
|
||||
responseDeserialize: deserialize_HealthCheckResponse,
|
||||
},
|
||||
};
|
||||
|
||||
exports.HealthClient = grpc.makeGenericClientConstructor(HealthService);
|
||||
342
health_check/v1/health_pb.js
Normal file
342
health_check/v1/health_pb.js
Normal file
@ -0,0 +1,342 @@
|
||||
/**
|
||||
* @fileoverview
|
||||
* @enhanceable
|
||||
* @public
|
||||
*/
|
||||
// GENERATED CODE -- DO NOT EDIT!
|
||||
|
||||
var jspb = require('google-protobuf');
|
||||
var goog = jspb;
|
||||
var global = Function('return this')();
|
||||
|
||||
goog.exportSymbol('proto.grpc.health.v1.HealthCheckRequest', null, global);
|
||||
goog.exportSymbol('proto.grpc.health.v1.HealthCheckResponse', null, global);
|
||||
goog.exportSymbol('proto.grpc.health.v1.HealthCheckResponse.ServingStatus', null, global);
|
||||
|
||||
/**
|
||||
* Generated by JsPbCodeGenerator.
|
||||
* @param {Array=} opt_data Optional initial data array, typically from a
|
||||
* server response, or constructed directly in Javascript. The array is used
|
||||
* in place and becomes part of the constructed object. It is not cloned.
|
||||
* If no data is provided, the constructed object will be empty, but still
|
||||
* valid.
|
||||
* @extends {jspb.Message}
|
||||
* @constructor
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest = function(opt_data) {
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
||||
};
|
||||
goog.inherits(proto.grpc.health.v1.HealthCheckRequest, jspb.Message);
|
||||
if (goog.DEBUG && !COMPILED) {
|
||||
proto.grpc.health.v1.HealthCheckRequest.displayName = 'proto.grpc.health.v1.HealthCheckRequest';
|
||||
}
|
||||
|
||||
|
||||
if (jspb.Message.GENERATE_TO_OBJECT) {
|
||||
/**
|
||||
* Creates an object representation of this proto suitable for use in Soy templates.
|
||||
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
||||
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
||||
* For the list of reserved names please see:
|
||||
* com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
|
||||
* @param {boolean=} opt_includeInstance Whether to include the JSPB instance
|
||||
* for transitional soy proto support: http://goto/soy-param-migration
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.prototype.toObject = function(opt_includeInstance) {
|
||||
return proto.grpc.health.v1.HealthCheckRequest.toObject(opt_includeInstance, this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Static version of the {@see toObject} method.
|
||||
* @param {boolean|undefined} includeInstance Whether to include the JSPB
|
||||
* instance for transitional soy proto support:
|
||||
* http://goto/soy-param-migration
|
||||
* @param {!proto.grpc.health.v1.HealthCheckRequest} msg The msg instance to transform.
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.toObject = function(includeInstance, msg) {
|
||||
var f, obj = {
|
||||
service: msg.getService()
|
||||
};
|
||||
|
||||
if (includeInstance) {
|
||||
obj.$jspbMessageInstance = msg;
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format).
|
||||
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
||||
* @return {!proto.grpc.health.v1.HealthCheckRequest}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.deserializeBinary = function(bytes) {
|
||||
var reader = new jspb.BinaryReader(bytes);
|
||||
var msg = new proto.grpc.health.v1.HealthCheckRequest;
|
||||
return proto.grpc.health.v1.HealthCheckRequest.deserializeBinaryFromReader(msg, reader);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format) from the
|
||||
* given reader into the given message object.
|
||||
* @param {!proto.grpc.health.v1.HealthCheckRequest} msg The message object to deserialize into.
|
||||
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
||||
* @return {!proto.grpc.health.v1.HealthCheckRequest}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.deserializeBinaryFromReader = function(msg, reader) {
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup()) {
|
||||
break;
|
||||
}
|
||||
var field = reader.getFieldNumber();
|
||||
switch (field) {
|
||||
case 1:
|
||||
var value = /** @type {string} */ (reader.readString());
|
||||
msg.setService(value);
|
||||
break;
|
||||
default:
|
||||
reader.skipField();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class method variant: serializes the given message to binary data
|
||||
* (in protobuf wire format), writing to the given BinaryWriter.
|
||||
* @param {!proto.grpc.health.v1.HealthCheckRequest} message
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.serializeBinaryToWriter = function(message, writer) {
|
||||
message.serializeBinaryToWriter(writer);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format).
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.prototype.serializeBinary = function() {
|
||||
var writer = new jspb.BinaryWriter();
|
||||
this.serializeBinaryToWriter(writer);
|
||||
return writer.getResultBuffer();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format),
|
||||
* writing to the given BinaryWriter.
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.prototype.serializeBinaryToWriter = function (writer) {
|
||||
var f = undefined;
|
||||
f = this.getService();
|
||||
if (f.length > 0) {
|
||||
writer.writeString(
|
||||
1,
|
||||
f
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates a deep clone of this proto. No data is shared with the original.
|
||||
* @return {!proto.grpc.health.v1.HealthCheckRequest} The clone.
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.prototype.cloneMessage = function() {
|
||||
return /** @type {!proto.grpc.health.v1.HealthCheckRequest} */ (jspb.Message.cloneMessage(this));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional string service = 1;
|
||||
* @return {string}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckRequest.prototype.getService = function() {
|
||||
return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, ""));
|
||||
};
|
||||
|
||||
|
||||
/** @param {string} value */
|
||||
proto.grpc.health.v1.HealthCheckRequest.prototype.setService = function(value) {
|
||||
jspb.Message.setField(this, 1, value);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Generated by JsPbCodeGenerator.
|
||||
* @param {Array=} opt_data Optional initial data array, typically from a
|
||||
* server response, or constructed directly in Javascript. The array is used
|
||||
* in place and becomes part of the constructed object. It is not cloned.
|
||||
* If no data is provided, the constructed object will be empty, but still
|
||||
* valid.
|
||||
* @extends {jspb.Message}
|
||||
* @constructor
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse = function(opt_data) {
|
||||
jspb.Message.initialize(this, opt_data, 0, -1, null, null);
|
||||
};
|
||||
goog.inherits(proto.grpc.health.v1.HealthCheckResponse, jspb.Message);
|
||||
if (goog.DEBUG && !COMPILED) {
|
||||
proto.grpc.health.v1.HealthCheckResponse.displayName = 'proto.grpc.health.v1.HealthCheckResponse';
|
||||
}
|
||||
|
||||
|
||||
if (jspb.Message.GENERATE_TO_OBJECT) {
|
||||
/**
|
||||
* Creates an object representation of this proto suitable for use in Soy templates.
|
||||
* Field names that are reserved in JavaScript and will be renamed to pb_name.
|
||||
* To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
|
||||
* For the list of reserved names please see:
|
||||
* com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
|
||||
* @param {boolean=} opt_includeInstance Whether to include the JSPB instance
|
||||
* for transitional soy proto support: http://goto/soy-param-migration
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.prototype.toObject = function(opt_includeInstance) {
|
||||
return proto.grpc.health.v1.HealthCheckResponse.toObject(opt_includeInstance, this);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Static version of the {@see toObject} method.
|
||||
* @param {boolean|undefined} includeInstance Whether to include the JSPB
|
||||
* instance for transitional soy proto support:
|
||||
* http://goto/soy-param-migration
|
||||
* @param {!proto.grpc.health.v1.HealthCheckResponse} msg The msg instance to transform.
|
||||
* @return {!Object}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.toObject = function(includeInstance, msg) {
|
||||
var f, obj = {
|
||||
status: msg.getStatus()
|
||||
};
|
||||
|
||||
if (includeInstance) {
|
||||
obj.$jspbMessageInstance = msg;
|
||||
}
|
||||
return obj;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format).
|
||||
* @param {jspb.ByteSource} bytes The bytes to deserialize.
|
||||
* @return {!proto.grpc.health.v1.HealthCheckResponse}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.deserializeBinary = function(bytes) {
|
||||
var reader = new jspb.BinaryReader(bytes);
|
||||
var msg = new proto.grpc.health.v1.HealthCheckResponse;
|
||||
return proto.grpc.health.v1.HealthCheckResponse.deserializeBinaryFromReader(msg, reader);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Deserializes binary data (in protobuf wire format) from the
|
||||
* given reader into the given message object.
|
||||
* @param {!proto.grpc.health.v1.HealthCheckResponse} msg The message object to deserialize into.
|
||||
* @param {!jspb.BinaryReader} reader The BinaryReader to use.
|
||||
* @return {!proto.grpc.health.v1.HealthCheckResponse}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.deserializeBinaryFromReader = function(msg, reader) {
|
||||
while (reader.nextField()) {
|
||||
if (reader.isEndGroup()) {
|
||||
break;
|
||||
}
|
||||
var field = reader.getFieldNumber();
|
||||
switch (field) {
|
||||
case 1:
|
||||
var value = /** @type {!proto.grpc.health.v1.HealthCheckResponse.ServingStatus} */ (reader.readEnum());
|
||||
msg.setStatus(value);
|
||||
break;
|
||||
default:
|
||||
reader.skipField();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class method variant: serializes the given message to binary data
|
||||
* (in protobuf wire format), writing to the given BinaryWriter.
|
||||
* @param {!proto.grpc.health.v1.HealthCheckResponse} message
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.serializeBinaryToWriter = function(message, writer) {
|
||||
message.serializeBinaryToWriter(writer);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format).
|
||||
* @return {!Uint8Array}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.prototype.serializeBinary = function() {
|
||||
var writer = new jspb.BinaryWriter();
|
||||
this.serializeBinaryToWriter(writer);
|
||||
return writer.getResultBuffer();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Serializes the message to binary data (in protobuf wire format),
|
||||
* writing to the given BinaryWriter.
|
||||
* @param {!jspb.BinaryWriter} writer
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.prototype.serializeBinaryToWriter = function (writer) {
|
||||
var f = undefined;
|
||||
f = this.getStatus();
|
||||
if (f !== 0.0) {
|
||||
writer.writeEnum(
|
||||
1,
|
||||
f
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates a deep clone of this proto. No data is shared with the original.
|
||||
* @return {!proto.grpc.health.v1.HealthCheckResponse} The clone.
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.prototype.cloneMessage = function() {
|
||||
return /** @type {!proto.grpc.health.v1.HealthCheckResponse} */ (jspb.Message.cloneMessage(this));
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* optional ServingStatus status = 1;
|
||||
* @return {!proto.grpc.health.v1.HealthCheckResponse.ServingStatus}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.prototype.getStatus = function() {
|
||||
return /** @type {!proto.grpc.health.v1.HealthCheckResponse.ServingStatus} */ (jspb.Message.getFieldProto3(this, 1, 0));
|
||||
};
|
||||
|
||||
|
||||
/** @param {!proto.grpc.health.v1.HealthCheckResponse.ServingStatus} value */
|
||||
proto.grpc.health.v1.HealthCheckResponse.prototype.setStatus = function(value) {
|
||||
jspb.Message.setField(this, 1, value);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @enum {number}
|
||||
*/
|
||||
proto.grpc.health.v1.HealthCheckResponse.ServingStatus = {
|
||||
UNKNOWN: 0,
|
||||
SERVING: 1,
|
||||
NOT_SERVING: 2
|
||||
};
|
||||
|
||||
goog.object.extend(exports, proto.grpc.health.v1);
|
||||
@ -35,15 +35,19 @@
|
||||
|
||||
var assert = require('assert');
|
||||
|
||||
var health = require('../health_check/health.js');
|
||||
var health = require('../health_check/health');
|
||||
|
||||
var health_messages = require('../health_check/v1/health_pb');
|
||||
|
||||
var ServingStatus = health_messages.HealthCheckResponse.ServingStatus;
|
||||
|
||||
var grpc = require('../');
|
||||
|
||||
describe('Health Checking', function() {
|
||||
var statusMap = {
|
||||
'': 'SERVING',
|
||||
'grpc.test.TestServiceNotServing': 'NOT_SERVING',
|
||||
'grpc.test.TestServiceServing': 'SERVING'
|
||||
'': ServingStatus.SERVING,
|
||||
'grpc.test.TestServiceNotServing': ServingStatus.NOT_SERVING,
|
||||
'grpc.test.TestServiceServing': ServingStatus.SERVING
|
||||
};
|
||||
var healthServer;
|
||||
var healthImpl;
|
||||
@ -51,7 +55,7 @@ describe('Health Checking', function() {
|
||||
before(function() {
|
||||
healthServer = new grpc.Server();
|
||||
healthImpl = new health.Implementation(statusMap);
|
||||
healthServer.addProtoService(health.service, healthImpl);
|
||||
healthServer.addService(health.service, healthImpl);
|
||||
var port_num = healthServer.bind('0.0.0.0:0',
|
||||
grpc.ServerCredentials.createInsecure());
|
||||
healthServer.start();
|
||||
@ -62,43 +66,51 @@ describe('Health Checking', function() {
|
||||
healthServer.forceShutdown();
|
||||
});
|
||||
it('should say an enabled service is SERVING', function(done) {
|
||||
healthClient.check({service: ''}, function(err, response) {
|
||||
var request = new health_messages.HealthCheckRequest();
|
||||
request.setService('');
|
||||
healthClient.check(request, function(err, response) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(response.status, 'SERVING');
|
||||
assert.strictEqual(response.getStatus(), ServingStatus.SERVING);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('should say that a disabled service is NOT_SERVING', function(done) {
|
||||
healthClient.check({service: 'grpc.test.TestServiceNotServing'},
|
||||
function(err, response) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(response.status, 'NOT_SERVING');
|
||||
done();
|
||||
});
|
||||
var request = new health_messages.HealthCheckRequest();
|
||||
request.setService('grpc.test.TestServiceNotServing');
|
||||
healthClient.check(request, function(err, response) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(response.getStatus(), ServingStatus.NOT_SERVING);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('should say that an enabled service is SERVING', function(done) {
|
||||
healthClient.check({service: 'grpc.test.TestServiceServing'},
|
||||
function(err, response) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(response.status, 'SERVING');
|
||||
done();
|
||||
});
|
||||
var request = new health_messages.HealthCheckRequest();
|
||||
request.setService('grpc.test.TestServiceServing');
|
||||
healthClient.check(request, function(err, response) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(response.getStatus(), ServingStatus.SERVING);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('should get NOT_FOUND if the service is not registered', function(done) {
|
||||
healthClient.check({service: 'not_registered'}, function(err, response) {
|
||||
var request = new health_messages.HealthCheckRequest();
|
||||
request.setService('not_registered');
|
||||
healthClient.check(request, function(err, response) {
|
||||
assert(err);
|
||||
assert.strictEqual(err.code, grpc.status.NOT_FOUND);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('should get a different response if the status changes', function(done) {
|
||||
healthClient.check({service: 'transient'}, function(err, response) {
|
||||
var request = new health_messages.HealthCheckRequest();
|
||||
request.setService('transient');
|
||||
healthClient.check(request, function(err, response) {
|
||||
assert(err);
|
||||
assert.strictEqual(err.code, grpc.status.NOT_FOUND);
|
||||
healthImpl.setStatus('transient', 'SERVING');
|
||||
healthClient.check({service: 'transient'}, function(err, response) {
|
||||
healthImpl.setStatus('transient', ServingStatus.SERVING);
|
||||
healthClient.check(request, function(err, response) {
|
||||
assert.ifError(err);
|
||||
assert.strictEqual(response.status, 'SERVING');
|
||||
assert.strictEqual(response.getStatus(), ServingStatus.SERVING);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user