Workload types¶
The Workload Service Framework (WSF) supports the following types of workloads:
- Native workloads: The workload runs directly on the SUT (System Under Test) hosts. The workload logic is implemented by Ansible scripts.
- Containerized workloads: The workload runs under either docker or Kubernetes. The workload logic is implemented by a set of Dockerfiles and docker/Kubernetes configuration files.
Native Workloads¶
A native workload consists of the following elements:
- CMakeLists.txt: A manifest to configure how to build and test the workload.
- build.sh: A script for building the workload. Strictly speaking, native workloads do not need a separate build process. They build on the SUTs if required. This is just a place holder script for scanning and listing workload ingredients.
- validate.sh: A script to define how to execute the workload.
- kpi.sh: A script for extracting KPI data out of the workload execution logs.
- cluster-config.yaml.m4: A manifest to describe how to provision the SUTs.
- Native Scripts: The native scripts that implement the workload logic, including Ansible scripts (workload execution logic) and optional Terraform scripts (SUT provisioning logic).
- README: A README to introduce the workload, configure parameters, and provide other related information.
Containerized Workloads¶
A containerized workload can run under docker (single-container) or Kubernetes (single- or multiple-containers). The workload consists of the following elements:
- CMakeLists.txt: A manifest to configure how to build and test the workload.
- build.sh: A script for building the workload docker image(s).
- validate.sh: A script for executing the workload.
- kpi.sh: A script for extracting KPI data out of the workload execution logs.
- compose-config.yaml.m4/j2: An optional manifest to describe how to schedule the containers with docker-compose.
- cluster-config.yaml.m4/j2: A manifest to describe how to provision a machine or a set of machines for running the workload.
- Dockerfiles: A workload may contain one or multiple Dockerfiles.
- kubernetes-config.yaml.m4/j2 or helm charts: An optional manifest to describe how to schedule the containers to a Kubernetes cluster.
- Native Scripts: Optionally, the workload may provide native scripts for customizing the workload execution logic (Ansible scripts) or the SUT provisioning logic (Terraform scripts).
- README: A README to introduce the workload, configure parameters, and provide other related information.