/bottlerocket-test-system

A system for testing Bottlerocket

Primary LanguageRustOtherNOASSERTION

Bottlerocket Test System

A system for testing Bottlerocket. To learn more about how it works, see the design document.

Overview

The system consists of a command line interface, Kubernetes controller, custom resource definition (CRD) objects and containers that allow you to create resources and run tests. You install TestSys into a cluster of your choice, we call this the TestSys cluster. When running a test, resource agents create an external cluster where we run Bottlerocket instances and run tests. This is called an external cluster.

Project Status

🚧 👷

The project is in active pre-release development. Eventually we plan to publish container images and other aspects of the system, but we aren't quite there yet. We also are not quite ready for external contributions, but we are happy to respond to issues and discussions.

Quickstart

See our QUICKSTART for a walk through of compiling, deploying, and running a quick test.

More detailed quickstart guides can be found in the main Bottlerocket repo. See the QUICKSTART-*.md files for information on the various deployment targets.

Development

See the Developer Guide for TestSys for an introduction to the framework and start up guide.

Project Structure

  • testsys-model is the root dependency. It includes the CRDs and clients for interacting with them.
  • controller contains the Kubernetes controller responsible for running resource and test pods.
  • agent contains libraries with the traits and harnesses for creating test and resource agents.
  • bottlerocket/agents contains the implementations of the test and resource traits that we use for Bottlerocket testing.

The testsys-model, agents and controller crates are general-purpose, and define the TestSys system. It is possible to use these libraries and controller for testing purposes other than Bottlerocket.

The bottlerocket/agents crates are more specialized to Bottlerocket's testing use cases.

Security

See CONTRIBUTING for more information.

License

This project is dual licensed under either the Apache-2.0 License or the MIT license, your choice.