exec

package module
v0.0.0-...-6b50f4f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2023 License: AGPL-3.0 Imports: 2 Imported by: 0

README

k6 Extension - Exec

This extension for k6 allows you to execute shell commands from your k6 scripts. It exposes a new global object Cmd in the k6 JavaScript context, which can be used to construct commands.

Installation

First, you need to install xk6 and then build the k6 binary with the exec extension.

To install xk6, run:

go install github.com/grafana/xk6/cmd/xk6@latest

Then build the k6 binary:

xk6 build --with github.com/oleiade/xk6-exec@latest

This will result in a k6 binary in the current directory.

Usage

After you've built the k6 binary, you can use it to run your scripts that use the exec extension. Here's a simple example:

import { check } from "k6";
import { Cmd } from "k6/x/cmd";

export default async function () {
  // Produce the command you wish to run
  // using the composable API.
  const cmd = new Cmd("motus")
    .arg("memorable")
    .arg("--words")
    .arg("12")
    .env("NO_COLOR", "true");

  // Execute the command and wait for it to finish.
  const result = await cmd.exec();

  // Check the result of the command.
  check(result, {
    "exit code is 0": (r) => r.exitCode === 0,
    "stdout contains 12 words": (r) => r.stdout.split(" ").length === 12,
  });
}

In the above script, we're creating a new Cmd object with the command motus. We add arguments to the command using the Arg method. We add environment variables using the Env method. Then we execute the command with the Exec method, which returns a promise that resolves with the command's result.

Metrics

The exec extension also provides custom k6 metrics:

  • exec_command_duration: The duration of the command execution.
  • exec_commands_total: The total number of executed commands.
  • exec_command_stdout_bytes: The total number of bytes written to stdout by the command.
  • exec_command_stderr_bytes: The total number of bytes written to stderr by the command.
  • exec_command_failed_rate: The rate of command executions that failed.

These metrics are exposed to k6 and will appear in the summary at the end of a k6 test execution.

Caution

This extension is potentially unsafe as it allows scripts to execute arbitrary commands on the system running k6. Use it responsibly and avoid running untrusted scripts.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package exec provides a k6 extension allowing users to execute shell commands from k6 scripts.
Package exec provides a k6 extension allowing users to execute shell commands from k6 scripts.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL