Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the readme #420

Merged
merged 1 commit into from
Jul 17, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 34 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,24 +35,24 @@

## What is Frisbee ?

**Frisbee** is the first Kubernetes framework designed to support **declarative end-to-end testing** of containerized applications.
**Frisbee** is the first Kubernetes framework designed to support **declarative end-to-end system testing** of containerized applications.

:heavy_check_mark: Setup application and dependency stack – easily!
:heavy_check_mark: Design end-to-end testing scenarios in an intuitive language!

:heavy_check_mark: Test against actual, close to production software - no mocks!
:heavy_check_mark: Run the actual production software - no mocks!

:heavy_check_mark: Replay complex workloads written in an intuitive language!
:heavy_check_mark: Replay complex workloads through automated workflows!

:heavy_check_mark: Combine Chaos Engineering with large-scale performance testing!

:heavy_check_mark: Assert actual program behavior and side effects.
:heavy_check_mark: Verify program behavior through programmable assertions!


To learn more about Frisbee, check the **[QuickStart](https://frisbee.dev/docs/quick-start/)** tutorial or visit
our **[Website](https://frisbee.dev)**.
To learn more about Frisbee, check the **[Walkthrough](https://frisbee.dev/docs/walkthrough)** tutorial or visit our **[Website](https://frisbee.dev)**.


## Use-Cases and Testing Patterns

## Testing Patterns

In declarative testing, a test scenario focuses on what to accomplish rather than on the imperative details of how to manipulate the state of an application under test and verify the final application state against an expected state.

Expand All @@ -69,6 +69,8 @@ Here, you can see some testing patterns we have identified across different appl
👉 [CI](./examples/patterns/ci)




## Getting Started


Expand All @@ -90,65 +92,49 @@ sudo snap alias microk8s.kubectl kubectl
sudo snap alias microk8s.helm3 helm
```

### Step 2 – Install Frisbee on K8s cluster

Now it's time to get Frisbee from GitHub.

```shell
git clone git@github.com:CARV-ICS-FORTH/frisbee.git
cd frisbee
```

### Step 2 – Install Frisbee on K8s cluster:

The above will download the project, but not the executables.
For that, you have two options: download the precompile binaries and or compile the binaries on your machine.
Firstly, we need to download the Frisbee CLI:

* **From binary:**
```shell
./install.sh
curl -sSLf https://frisbee.dev/install.sh | sudo bash
export PATH=$PATH:/usr/local/bin
```

* **From source:**
```shell
make run
export PATH=$PATH:$(pwd)/bin
```



The next step is to install Frisbee in your Kubernetes cluster. You can two options:
Since the majority of Frisbee operations happens through this CLI, it is suggested to enable the autocompletion.

* **Development mode:** In this configuration, the Frisbee controller must run manually on the local node.
The development mode is convenient for developing new functionality on the controller.

```shell
kubectl-frisbee install development ./ <public address>
make run
source <(kubectl-frisbee completion bash)
```

* **Production mode:** The production mode will install the Frisbee controller at yet another container within the cluster.
> As usual, use `tab twice` to get the CLI fields auto-completed.



The next step is to install Frisbee in your Kubernetes cluster.

```shell
kubectl-frisbee install production
kubectl logs -l control-plane=frisbee-operator -n frisbee --follow
```


### Step 3 – Submit a testing job.

Since the majority of Frisbee operations happens through the native CLI,
it is suggested to enable the autocompletion.

Finally, you can download the Frisbee project to get access to the ready-to-use examples.

```shell
source <(kubectl-frisbee completion bash)
git clone git@github.com:CARV-ICS-FORTH/frisbee.git
cd frisbee
```

As usual, use `tab twice` to get the CLI fields auto-completed.


#### Submit a job
### Step 3 – Submit a testing job:

To submit a testing job, the general syntax is:

Expand All @@ -163,7 +149,7 @@ Conventionally, we separate the test-cases from the templates of the system unde


Let's try to run a scenario from the tutorial.

```shell
kubectl-frisbee submit test demo- ./examples/tutorial/15.performance-monitoring.yml ./charts/networking/iperf2/ ./charts/system/
```
Expand All @@ -179,7 +165,7 @@ kubectl-frisbee submit test demo- ./examples/tutorial/15.performance-monitoring.



#### Inspect Submitted Jobs.
#### Inspect Submitted Jobs:

To get a list of submitted tests, use:

Expand All @@ -203,7 +189,7 @@ kubectl frisbee inspect tests demo-326
<img src="docs/readme.assets/cli-inspect.png" width="900">
</p>

### Step 4 – Live Progress Monitoring
### Step 4 – Live Progress Monitoring:

The last section of `inspect` provides the URLs for accessing Prometheus/Grafana.

Expand Down Expand Up @@ -236,7 +222,7 @@ by a `fault-injection event`.
<img src="docs/readme.assets/contextualized-visualization.png" width="900">
</p>

### Step 5 – Auto-generate test reports.
### Step 5 – Auto-generate test reports:

Finally, Frisbee provides an advanced functionality for auto-generating reports for the tests.

Expand All @@ -248,7 +234,6 @@ This will create report on `~/frisbee-reports` directory including the pdf from




## Features

👉 Workflow templating to store commonly used workflows in the cluster.
Expand All @@ -267,8 +252,6 @@ This will create report on `~/frisbee-reports` directory including the pdf from

👉 Archiving Test results after executing for later access.

👉 On-Demand reliable container attached storage.

👉 Garbage collection of completed resources.

👉 Chaos-Engineering and Fault-Injection via Chaos-Mesh.
Expand All @@ -277,7 +260,7 @@ This will create report on `~/frisbee-reports` directory including the pdf from

👉 CLI applications to test management and test inspection.

To learn how to use these features, check the **[Walkthrough](https://frisbee.dev/docs/walkthrough)**.


## Citation

Expand All @@ -292,10 +275,13 @@ year={2021}
}
```



## Contributing to Frisbee

We welcome contributions. Please see [CONTRIBUTING.md](CONTRIBUTING.md) to get
started!
We welcome contributions. Please see [CONTRIBUTING.md](CONTRIBUTING.md) to get started!



## Acknowledgements

Expand Down