proto-coverage-reporter
Version:
Jest custome reporter for gRPC server E2E testing
32 lines (31 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.protoCoverageInterceptor = void 0;
const grpc_js_1 = require("@grpc/grpc-js");
const logs_1 = require("../logs");
const protoCoverageInterceptor = (options, nextCall) => new grpc_js_1.InterceptingCall(nextCall(options), {
start: (metadata, listener, next) => {
// Metadataを再設定
const metadataMap = options.internalRepr;
if (typeof metadataMap === 'object') {
for (const [key, value] of metadataMap.entries()) {
metadata.set(key, value);
}
}
const methodPath = options.method_definition.path;
const [package_name, method_name] = methodPath.split('/').filter(Boolean);
const _listener = new grpc_js_1.ListenerBuilder();
_listener.withOnReceiveStatus((status, next) => {
const log = {
package_name,
method_name,
status_code: status.code,
timestamp: Date.now(),
};
(0, logs_1.writeLog)(log);
next(status);
});
next(metadata, _listener.build());
},
});
exports.protoCoverageInterceptor = protoCoverageInterceptor;