Testflinger¶
Testflinger is a system for orchestrating time-shared access to a pool of target machines.
Each Testflinger system consists of:
a web service (called just Testflinger) that provides an API to request jobs by placing them on a queue
per-machine agents that wait for jobs to be placed on queues they can service and then process them
Jobs can be either fully automated scripts that can attempt to complete within the allocated time or interactive shell sessions.
The Testflinger system is particularly useful for sharing finite machine resources between different consumers in a predictable fashion.
Typically this has been used for managing a test lab where CI/CD test runs and also exploratory testing by human operators is desired.
In this documentation¶
First steps¶
Install the client, run your first job, and learn the core workflow.
Get started: Tutorial • Install the CLI • CLI configuration • Change server
Jobs¶
The core unit of work: how a job is described, run, and used to reserve a machine.
Understand: Job schema • Test phases
Run and manage: Submit a job • Retrieve results • Cancel • Search
Reserve a machine: Reserve a machine • Extended reservation
Queues, agents, and agent hosts¶
Queues route jobs to compatible agents to provision and operate the devices under test, and report the results. Agents run on agent hosts, which are VMs deployed with Juju.
Queues: Understand queues
Extended capabilities: Restricted queues • Set job priority • How priority works
Agents: List agents • Understand agents and agent hosts • Agent configuration • Manage agents
Device connectors¶
Agents invoke device connectors to provision and operate devices under test (DUT). Each connector supports a particular provisioning type.
Device connectors: Connector types • Connector configuration • MAAS storage
Server¶
A Kubernetes application that stores data, serves the API, and coordinates the system.
Understand: Architecture
Reference: Server configuration • REST API reference (OpenAPI)
Access and permissions¶
Prove client identity and control what each client is allowed to do.
Authentication: Authenticate with the CLI • How authentication works
Single sign-on (OIDC): OIDC authentication • Enable OIDC • OIDC configuration
Authorisation: API roles • Manage client permissions • Create admin credentials
Security¶
How Testflinger protects credentials and data, and how to handle secrets safely.
Trust model: Security overview
Secrets: Use secrets • Secrets concepts • Secrets reference
How this documentation is organised¶
This documentation uses the Diátaxis documentation structure.
Tutorial takes you step-by-step through submitting your first job with Testflinger.
How-to guides provide instructions for specific tasks like submitting jobs, reserving machines, and administering a deployment.
Reference provides technical specifications: job schemas, configuration files, and the REST API.
Explanation provides conceptual context about architecture, queues, security, and reservation.
Project and community¶
Testflinger is a member of the Ubuntu family. It is an open source project that warmly welcomes community contributions, suggestions, fixes and constructive feedback.
This project follows the Ubuntu Code of Conduct
This project is hosted on GitHub - contributions are welcome
This project is governed by the Ubuntu Security reporting and disclosure policy
Interested in using Testflinger for your project? Get in touch!