菜单
开源 RSS

k6/net/grpc

k6/net/grpc 模块提供了一个 gRPC 客户端,用于通过 HTTP/2 进行远程过程调用 (RPC)。

类/方法描述
Client用于向 gRPC 服务器发起 RPC 调用的 gRPC 客户端。
Client.load(importPaths, ...protoFiles)加载并解析给定的协议缓冲区定义,使其可用于 RPC 请求。
Client.connect(address [,params])连接到给定的 gRPC 服务。
Client.invoke(url, request [,params])对给定的服务/方法执行一元 RPC 并返回一个 Response
Client.asyncInvoke(url, request [,params])异步地对给定的服务/方法执行一元 RPC 并返回一个包含 Response 的 Promise。
Client.close()关闭与 gRPC 服务的连接。
参数RPC 请求特定选项。
Response由 RPC 请求返回。
常量定义常量以区分 gRPC Response 状态。
Stream(client, url, [,params])创建一个新的 gRPC 流。
Stream.on(event, handler)为可能的流事件之一添加新的监听器。
Stream.write(message)向流写入消息。
Stream.end()向服务器发送信号,表示客户端已完成发送。
EventHandlergRPC 流上各种事件调用的函数。
元数据gRPC 流消息的元数据。

gRPC 指标

k6 对 gRPC 请求进行特定测量。有关完整列表,请参阅指标参考

示例

JavaScript
import grpc from 'k6/net/grpc';
import { check, sleep } from 'k6';

const client = new grpc.Client();
client.load(null, 'quickpizza.proto');

export default () => {
  client.connect('grpc-quickpizza.grafana.com:443', {
    // plaintext: false
  });

  const data = { ingredients: ['Cheese'], dough: 'Thick' };
  const response = client.invoke('quickpizza.GRPC/RatePizza', data);

  check(response, {
    'status is OK': (r) => r && r.status === grpc.StatusOK,
  });

  console.log(JSON.stringify(response.message));

  client.close();
  sleep(1);
};