Skip to content

Commit

Permalink
Add badges for Github CIs
Browse files Browse the repository at this point in the history
Signed-off-by: Tyler Gu <jiaweig3@illinois.edu>
  • Loading branch information
tylergu committed Dec 19, 2023
1 parent 5ac9ca7 commit f46e84f
Showing 1 changed file with 15 additions and 14 deletions.
29 changes: 15 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,31 @@
# Acto: Push-Button End-to-End Testing of Kubernetes Operators/Controllers
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Regression Test](https://github.com/xlab-uiuc/acto/actions/workflows/unittest.yaml/badge.svg)](https://github.com/xlab-uiuc/acto/actions/workflows/unittest.yaml)

[![End-to-End Test](https://github.com/xlab-uiuc/acto/actions/workflows/e2e-test.yml/badge.svg)](https://github.com/xlab-uiuc/acto/actions/workflows/e2e-test.yml)
[![Bug Reproduction](https://github.com/xlab-uiuc/acto/actions/workflows/all_bug_reproduction.yaml/badge.svg)](https://github.com/xlab-uiuc/acto/actions/workflows/all_bug_reproduction.yaml)

## Overview

Acto is a fully automatic end-to-end testing tool for Kubernetes operators/controllers.
Acto is a fully automatic end-to-end testing tool for Kubernetes operators/controllers.

Acto implements a state-centric approach to test the target operator together with the managed system.
It continuously instructs the operator to reconcile the system to different states and checks if the system reaches those desired states.
Acto models operations as state transitions and systematically realizes state-transition sequences to exercise supported operations in different scenarios.
Acto's automated oracles check if a system’s state is as desired.
Acto implements a state-centric approach to test the target operator together with the managed system.
It continuously instructs the operator to reconcile the system to different states and checks if the system reaches those desired states.
Acto models operations as state transitions and systematically realizes state-transition sequences to exercise supported operations in different scenarios.
Acto's automated oracles check if a system’s state is as desired.

Acto is fully automatic.
It only needs the operator’s deployment script as the input.
Testing is done in a local Kubernetes environment supported by different backends: Kind, Minikube, and K3d.
Acto is fully automatic.
It only needs the operator’s deployment script as the input.
Testing is done in a local Kubernetes environment supported by different backends: Kind, Minikube, and K3d.
Details on Acto usage are [here](docs/port.md).

Acto has been applied to 11 popular Kuberentes, where it found 50+ new bugs
Acto has been applied to 11 popular Kuberentes, where it found 50+ new bugs
(many are confirmed and 28 are fixed).
See [the lists of bugs](bugs.md) found by Acto.

## Prerequisites
- [Docker](https://docs.docker.com/engine/install/)
- [Golang](https://go.dev/doc/install)
- [k8s Kind cluster](https://kind.sigs.k8s.io/)
- [k8s Kind cluster](https://kind.sigs.k8s.io/)
- `go install sigs.k8s.io/kind@v0.20.0`
- Python dependencies
- `pip3 install -r requirements.txt`
Expand Down Expand Up @@ -57,12 +58,12 @@ The files in the `test/cassop-330/trial-demo` directory are the sequence of CRs
They are just a small subset of CRs generated by Acto automatically.

Acto first spins up a local Kubernetes cluster using Kind and deploys the cass-operator.
It then deploys CassandraDatacenter using the initial CR and
It then deploys CassandraDatacenter using the initial CR and
generates a transition to insert a key-value pair to CassandraDatacenter's property
`spec.additionalServiceConfig.seedService.additionalLabels`.
This transition triggerred the cass-operator to add the key-value pair to `metadata.labels` of
This transition triggerred the cass-operator to add the key-value pair to `metadata.labels` of
the corresponding SeedService resource.
For the next step, Acto deletes the key-value pair.
For the next step, Acto deletes the key-value pair.
Due to a bug in cass-operator, the deleted key-value pair
is not removed from the SeedService resource in Kubernetes.
Acto automatically detects this bug based on the inconsistency between the CR and the system resources.
Expand Down

0 comments on commit f46e84f

Please sign in to comment.