Menu
Open source RSS

ServiceDisruptor

The ServiceDisruptor class can inject different types of faults into the pods that back a Kubernetes service.

To construct a ServiceDisruptor, use the ServiceDisruptor() constructor.

Methods

MethodDescription
ServiceDisruptor.injectGrpcFaults()Inject gRPC faults in the target Pods
ServiceDisruptor.injectHTTPFaults()Inject HTTTP faults in the target Pods
ServiceDisruptor.targets()Returns the list of target Pods of the ServiceDisruptor
ServiceDisruptor.terminatePods()executes a Pod Termination fault in the target Pods

Example

The following example:

  • Creates a disruptor for the nginx service
  • Injects a delay of 100ms and a 10 percent of requests that return an http response code 500.
JavaScript
import { ServiceDisruptor } from 'k6/x/disruptor';

const fault = {
  averageDelay: '100ms',
  errorRate: 0.1,
  errorCode: 500,
};

export default function () {
  const disruptor = new ServiceDisruptor('nginx', 'default');
  disruptor.injectHTTPFaults(fault, '30s');
}

Note

You can test this script by creating first a pod running nginx and exposing it as a service with the commands below, assuming you have kubectl installed in your environment:

bash
> kubectl run nginx --image=nginx
> kubectl expose pod nginx --port 80

You can also use the xk6-kubernetes extension for creating these resources from your test script.