Performance gRPC - Mirror Strategy

Diseño de pruebas de performance en K6 para gRPC

Importaciones

  • group y check de k6 son funciones que permiten estructurar las pruebas y validar respuestas respectivamente.

  • grpc de k6/net/grpc: Proporciona funcionalidades para hacer llamadas gRPC.

  • Configuraciones específicas de ACCOUNT_AGGREGATION_REST son importadas desde un archivo de configuración config.js.

  • papaparse biblioteca importada para analizar archivos CSV.

  • SharedArray de k6/data permite compartir datos entre diferentes VUs (Unidades Virtuales) durante una prueba.

import { check } from 'k6'; import grpc from 'k6/net/grpc'; import { ACCOUNT_AGGREGATION_GRPC } from '../../../../config.js'; import papaparse from '../../../../../../../../../modules/papaparse.js'; import { SharedArray } from 'k6/data';

Configuración del cliente gRPC y Datos

 

Se crea una nueva instancia del cliente gRPC y se cargan las definiciones desde el archivo proto mediante la configuración importada.

const client = new grpc.Client(); client.load([ACCOUNT_AGGREGATION_GRPC.protoPath], ACCOUNT_AGGREGATION_GRPC.protoFile);

 

Se definen las opciones que k6 empleará al ejecutar la prueba, tales como número de usuarios virtuales, iteraciones, duración máxima, entre otros.

export const options = { rps: ACCOUNT_AGGREGATION_GRPC.testOptions.rps, //discardResponseBodies: TEST_OPTIONS_INTEGRATION.discardResponseBodies, scenarios: { Scenario_BalanceDetails: { exec: 'balanceDetailsSuccessGrpcTask', executor: ACCOUNT_AGGREGATION_GRPC.testOptions.executor, vus: ACCOUNT_AGGREGATION_GRPC.testOptions.vus, iterations: ACCOUNT_AGGREGATION_GRPC.testOptions.iterations, maxDuration: ACCOUNT_AGGREGATION_GRPC.testOptions.maxDuration, } } };

 

El archivo CSV es cargado en memoria a través de un SharedArray. Con el uso de papaparse, se analiza este archivo para luego acceder a la información que contiene.

Función de Prueba

  • La función balanceDetailsSuccessGrpcTask() define un escenario de prueba:

    • Selecciona aleatoriamente una cuenta del archivo CSV para posteriormente setearla como número de cuenta.

    • Una vez seleccionado el número de cuenta, se establece una conexión gRPC usando las configuraciones definidas. Posteriormente, se invoca un servicio gRPC usando este número de cuenta.

    • Después de obtener la respuesta de la llamada gRPC, utiliza la función check para verificar que el estado de la respuesta sea "OK" para gRPC, lo que sería equivalente a un estado HTTP de 200.

    • Una vez finalizada la verificación, se cierra la conexión gRPC.