mrblackjack 0.1.23

Simple framework for testing Kubernetes operators
Documentation
# Mr. Blackjack
Simple framework for testing Kubernetes operators

## Basic Usage

### Test Specs

A `test` consists of a number of `steps`.

Each `step` can have a `watch` list, specifying resources to watch for
by group, version and kind as well as label and field selectors.
All resources matching the specifications are stored in a bucket under the `name` of this `watch` entry.
The later tests will consist of conditions that have to hold true for the contents of a bucket.

Each `step` can have a `bucket` list, allowing to set the operations on a bucket.
Operations are `Create`, `Patch`, `Delete`.
If a `watch` sees a new resource and its bucket allows `Create`,
the resource is stored in the bucket.
If a `watch` sees a changed resource and its bucket allows `Patch`,
the resource stored is updated.
If a `watch` sees a resource deletion and its bucket allows `Delete`,
the resource stored is removed from the bucket.

You can, for example, collect all Pods matching some label in one step,
then set the bucket to `Delete` only in the next step.
If the Pods are restarted now, they disappear from the bucket,
but the newly started ones do not appear.

Each `step` can have an `apply` list specifying files containing manifests to apply to the cluster.

Each `step` can have a `delete` list specifying files containing manifests to delete from the cluster.

Each `step` can have a `sleep` value specifying a number of seconds to wait unconditionally after all `apply`s and `delete`s.

Each `step` can have a `wait` list specifying `condition`s to await in a `target`ed bucket of watched resources.

For examples, please see the tests in `test/`.

### Running blackjack

```shell
cargo run --bin blackjack TEST-DIR
```
All tests have to be named `test.yaml`.
Blackjack will discover all `test.yaml` in the directory tree starting at `TEST-DIR`.
All files specified in the `apply` sections have to be relative to the directory where the corresponding `test.yaml` resides.

All test found will be run in parallel.

For each test, blackjack will override all namespaces of the resources it applies with a randomly generated namespace.

For each test, blackjack will clean up all resources it has applied after the tests are finished.


### Condition Expression

An expression can be `not` specifying an expression negated by logical NOT.

An expression can be `and` specifying an array of expressions connected by logical AND.

An expression can be `or` specifying an array of expressions connected by logical OR.

An expression can be `size` specifying the expected number of resources recorded in the `target` bucket.

An expression can be `all` specifying a partial object that needs to match against all resources recorded in the `target` bucket.

An expression can be `one` specifying a partial object that needs to match against at least one resources recorded in the `target` bucket.

### Full Schema for Test Spec

The schema can be found in `schema/test_spec.yaml`.

## Known Issues