<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>xk6-disruptor API on Grafana Labs</title><link>https://grafana.com/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/</link><description>Recent content in xk6-disruptor API on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/index.xml" rel="self" type="application/rss+xml"/><item><title>Faults</title><link>https://grafana.com/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/</guid><content><![CDATA[&lt;h1 id=&#34;faults&#34;&gt;Faults&lt;/h1&gt;
&lt;p&gt;A fault is as an abnormal condition that affects a system component and which may lead to a failure.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Fault type&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/grpc/&#34;&gt;gRPC Fault&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fault affecting gRPC requests from a target&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/http/&#34;&gt;HTTP Fault&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fault affecting HTTP requests from a target&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/pod-termination/&#34;&gt;Pod Termination Fault&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Fault terminating a number of target Pods&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="faults">Faults&lt;/h1>
&lt;p>A fault is as an abnormal condition that affects a system component and which may lead to a failure.&lt;/p>
&lt;section class="expand-table-wrapper">&lt;div class="button-div">
&lt;button class="expand-table-btn">Expand table&lt;/button>
&lt;/div>&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Fault type&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/grpc/">gRPC Fault&lt;/a>&lt;/td>
&lt;td>Fault affecting gRPC requests from a target&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/http/">HTTP Fault&lt;/a>&lt;/td>
&lt;td>Fault affecting HTTP requests from a target&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>
&lt;a href="/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/pod-termination/">Pod Termination Fault&lt;/a>&lt;/td>
&lt;td>Fault terminating a number of target Pods&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>PodDisruptor</title><link>https://grafana.com/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/poddisruptor/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/poddisruptor/</guid><content><![CDATA[&lt;h1 id=&#34;poddisruptor&#34;&gt;PodDisruptor&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;PodDisruptor&lt;/code&gt; class can inject different types of faults into the pods that match a selection criteria.&lt;/p&gt;
&lt;p&gt;To construct a &lt;code&gt;PodDisruptor&lt;/code&gt;, use the 
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/poddisruptor/constructor/&#34;&gt;PodDisruptor() constructor&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;methods&#34;&gt;Methods&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/poddisruptor/injectgrpcfaults/&#34;&gt;PodDisruptor.injectGrpcFaults()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Inject 
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/grpc/&#34;&gt;gRPC faults&lt;/a&gt; in the target Pods&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/poddisruptor/injecthttpfaults/&#34;&gt;PodDisruptor.injectHTTPFaults()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Inject 
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/http/&#34;&gt;HTTP faults&lt;/a&gt; in the target Pods&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;PodDisruptor.targets()&lt;/td&gt;
              &lt;td&gt;Returns the list of target Pods of the PodDisruptor&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/poddisruptor/terminate-pods/&#34;&gt;PodDisruptor.terminatePods()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;executes a 
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/pod-termination/&#34;&gt;Pod Termination fault&lt;/a&gt; in the target Pods&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;p&gt;This example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creates a selector that matches all pods in the &lt;code&gt;default&lt;/code&gt; namespace with the &lt;code&gt;run=nginx&lt;/code&gt; label&lt;/li&gt;
&lt;li&gt;Injects a delay of 100ms and makes 10 percent of requests return an http response code &lt;code&gt;500&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- md-k6:skip --&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { PodDisruptor } from &amp;#39;k6/x/disruptor&amp;#39;;

const selector = {
  namespace: &amp;#39;default&amp;#39;,
  select: {
    labels: {
      run: &amp;#39;nginx&amp;#39;,
    },
  },
};

const fault = {
  averageDelay: &amp;#39;100ms&amp;#39;,
  errorRate: 0.1,
  errorCode: 500,
};

export default function () {
  const disruptor = new PodDisruptor(selector);
  disruptor.injectHTTPFaults(fault, &amp;#39;30s&amp;#39;);
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;You can test this script by first creating a pod running nginx with the command below, assuming you have &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/#kubectl&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;kubectl&lt;/a&gt; installed in your environment:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;kubectl run nginx --image=nginx&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can also use the &lt;a href=&#34;https://github.com/grafana/xk6-kubernetes&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;xk6-kubernetes&lt;/a&gt; extension for creating these resources from your test script.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

]]></content><description>&lt;h1 id="poddisruptor">PodDisruptor&lt;/h1>
&lt;p>The &lt;code>PodDisruptor&lt;/code> class can inject different types of faults into the pods that match a selection criteria.&lt;/p>
&lt;p>To construct a &lt;code>PodDisruptor&lt;/code>, use the
&lt;a href="/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/poddisruptor/constructor/">PodDisruptor() constructor&lt;/a>.&lt;/p></description></item><item><title>ServiceDisruptor</title><link>https://grafana.com/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/servicedisruptor/</link><pubDate>Mon, 21 Sep 2026 15:16:28 +0000</pubDate><guid>https://grafana.com/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/servicedisruptor/</guid><content><![CDATA[&lt;h1 id=&#34;servicedisruptor&#34;&gt;ServiceDisruptor&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;ServiceDisruptor&lt;/code&gt; class can inject different types of faults into the pods that back a Kubernetes service.&lt;/p&gt;
&lt;p&gt;To construct a &lt;code&gt;ServiceDisruptor&lt;/code&gt;, use the 
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/servicedisruptor/constructor/&#34;&gt;ServiceDisruptor() constructor&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;methods&#34;&gt;Methods&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Method&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/servicedisruptor/injectgrpcfaults/&#34;&gt;ServiceDisruptor.injectGrpcFaults()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Inject 
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/grpc/&#34;&gt;gRPC faults&lt;/a&gt; in the target Pods&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/servicedisruptor/injecthttpfaults/&#34;&gt;ServiceDisruptor.injectHTTPFaults()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;Inject 
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/http/&#34;&gt;HTTP faults&lt;/a&gt; in the target Pods&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;ServiceDisruptor.targets()&lt;/td&gt;
              &lt;td&gt;Returns the list of target Pods of the ServiceDisruptor&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/servicedisruptor/terminate-pods/&#34;&gt;ServiceDisruptor.terminatePods()&lt;/a&gt;&lt;/td&gt;
              &lt;td&gt;executes a 
    &lt;a href=&#34;/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/faults/pod-termination/&#34;&gt;Pod Termination fault&lt;/a&gt; in the target Pods&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;p&gt;The following example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creates a disruptor for the &lt;code&gt;nginx&lt;/code&gt; service&lt;/li&gt;
&lt;li&gt;Injects a delay of 100ms and a 10 percent of requests that return an http response code &lt;code&gt;500&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JavaScript&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-javascript&#34;&gt;import { ServiceDisruptor } from &amp;#39;k6/x/disruptor&amp;#39;;

const fault = {
  averageDelay: &amp;#39;100ms&amp;#39;,
  errorRate: 0.1,
  errorCode: 500,
};

export default function () {
  const disruptor = new ServiceDisruptor(&amp;#39;nginx&amp;#39;, &amp;#39;default&amp;#39;);
  disruptor.injectHTTPFaults(fault, &amp;#39;30s&amp;#39;);
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;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 &lt;a href=&#34;https://kubernetes.io/docs/tasks/tools/#kubectl&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;kubectl&lt;/a&gt; installed in your environment:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;&amp;gt; kubectl run nginx --image=nginx
&amp;gt; kubectl expose pod nginx --port 80&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can also use the &lt;a href=&#34;https://github.com/grafana/xk6-kubernetes&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;xk6-kubernetes&lt;/a&gt; extension for creating these resources from your test script.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

]]></content><description>&lt;h1 id="servicedisruptor">ServiceDisruptor&lt;/h1>
&lt;p>The &lt;code>ServiceDisruptor&lt;/code> class can inject different types of faults into the pods that back a Kubernetes service.&lt;/p>
&lt;p>To construct a &lt;code>ServiceDisruptor&lt;/code>, use the
&lt;a href="/docs/k6/v2.3.x/testing-guides/injecting-faults-with-xk6-disruptor/xk6-disruptor/servicedisruptor/constructor/">ServiceDisruptor() constructor&lt;/a>.&lt;/p></description></item></channel></rss>