No results for

Powered byAlgolia
⚠️ This is the archived documentation for k6 v0.47. Go to the latest version.

Experimental module

While we intend to keep experimental modules as stable as possible, we may need to introduce breaking changes. This could happen at future k6 releases until the module becomes fully stable and graduates as a k6 core module. For more information, refer to the extension graduation process.

Experimental modules maintain a high level of stability and follow regular maintenance and security measures. Feel free to open an issue if you have any feedback or suggestions.

The k6/experimental/grpc module is an extension of the k6/net/grpc. It provides a gRPC client for Remote Procedure Calls (RPC) over HTTP/2.

The key-difference between the two modules is new Stream class, which provides client and server streaming support. Our long-term goal is to make this module part of k6 core, and long-term to replace the k6/net/grpc module.

Class/MethodDescription
ClientgRPC client used for making RPC calls to a gRPC Server.
Client.load(importPaths, ...protoFiles)Loads and parses the given protocol buffer definitions to be made available for RPC requests.
Client.connect(address [,params])Connects to a given gRPC service.
Client.invoke(url, request [,params])Makes a unary RPC for the given service/method and returns a Response.
Client.close()Close the connection to the gRPC service.
ParamsRPC Request specific options.
ResponseReturned by RPC requests.
ConstantsDefine constants to distinguish between gRPC Response statuses.
StreamCreates a new GRPC stream.
Stream.on(event, handler)Adds a new listener to one of the possible stream event's.
Stream.write(message)Writes a message to the stream.
Stream.end()Signals to server that client finished sending.

Metrics

k6 takes specific measurements for gRPC requests. For the complete list, refer to the Metrics reference.

Example

grpc-test.js
import grpc from 'k6/experimental/grpc';
import { check, sleep } from 'k6';
const client = new grpc.Client();
client.load(['definitions'], 'hello.proto');
export default () => {
client.connect('grpcbin.test.k6.io:9001', {
// plaintext: false
});
const data = { greeting: 'Bert' };
const response = client.invoke('hello.HelloService/SayHello', data);
check(response, {
'status is OK': (r) => r && r.status === grpc.StatusOK,
});
console.log(JSON.stringify(response.message));
client.close();
sleep(1);
};