Warning
This documentation is actively being updated as the project evolves and may not be complete in all areas.
Examples¶
This guide provides practical examples for using Jumpstarter in both local and distributed modes. Each example demonstrates how to accomplish common tasks.
Starting and Exiting a Session¶
Start a local exporter session:
$ jmp shell --exporter example-local
Start a distributed exporter session:
$ jmp shell --client hello --selector example.com/board=foo
When finished, simply exit the shell:
$ exit
Interact with the Exporter Shell¶
The exporter shell provides access to driver CLI interfaces through the magic
j command:
$ jmp shell # Use appropriate --exporter or --client parameters
$ j
Usage: j [OPTIONS] COMMAND [ARGS]...
Generic composite device
Options:
--help Show this message and exit.
Commands:
power Generic power
storage Generic storage mux
$ j power on
ok
$ j power off
ok
$ exit
When you run the j command in the exporter shell, you’re accessing the CLI
interfaces exposed by the drivers configured in your exporter. In this example:
j power- Would access the power interface from the MockPower driverj storage- Would access the storage interface from the MockStorageMux driver
Each driver can expose different commands through this interface, making it easy
to interact with the mock hardware. The command structure follows j <driver_type> <action>, where available actions depend on the specific driver.
Use the Python API in a Shell¶
The exporter shell exposes the local exporter via environment variables, enabling you to run any Python code that interacts with the client/exporter. This approach works especially well for complex operations or when a driver doesn’t provide a CLI.
Using Python with Jumpstarter¶
Create a Python file for interacting with your exporter. This example
(example.py) demonstrates a complete power cycle workflow:
import time
from jumpstarter.common.utils import env
with env() as client:
client.power.on()
client.power.off()
$ jmp shell # Use appropriate --exporter or --client parameters
$ python ./example.py
$ exit
This example demonstrates how Python interacts with the exporter:
The
env()function fromjumpstarter.common.utilsautomatically connects to the exporter configured in your shell environment.The
with env() as client:statement creates a client connected to your local exporter and handles connection setup and cleanup.client.power.on()directly calls the power driver’s “on” method—the same action thatj power onperforms in the CLI.client.power.off()directly calls the power driver’s “off” method—the same action thatj power offperforms in the CLI.
Using a Python with Jumpstarter allows you to:
Create sequences of operations (power on → wait → power off)
Save and reuse complex workflows
Add logic, error handling, and conditional operations
Import other Python libraries (like
timein this example)Build sophisticated automation scripts
Running pytest in the Shell¶
For structured test suites, Jumpstarter provides a JumpstarterTest base class
that handles connection management automatically. See the
Testing with pytest guide for full details on writing tests,
custom fixtures, markers, and CI integration.