|
| 1 | +# Test plan schema |
| 2 | + |
| 3 | +A valid test plan .yaml consists of the following compulsory sections at the top level (the level is |
| 4 | +indicated by the indentation in .yaml: the top level has 0 indentation): |
| 5 | + |
| 6 | +* `cluster` |
| 7 | +* `benchmarks`. |
| 8 | + |
| 9 | +It may also have the following optional sections at the same level: |
| 10 | + |
| 11 | +* `monitoring_profile` |
| 12 | +* `client_endpoints`. |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | +## `cluster` |
| 17 | + |
| 18 | +The cluster section enumerates the components of the Ceph cluster relevant to CBT. There are two |
| 19 | +general classes of components: |
| 20 | + |
| 21 | +* scalars: for example names whose value is a string, a numeric or a boolean; |
| 22 | +* collections: components that in turn contain further information, for example profile of pool |
| 23 | +replication. |
| 24 | + |
| 25 | +The following are scalar compulsory entities: |
| 26 | +* a head node: this is a string indicating the node that starts the cluster. |
| 27 | +* a list of clients, each a string, representing a ssh-reachable host that has a benchmark |
| 28 | +executable installed, |
| 29 | +* a list of osds nodes, each of which has at least a running OSD process. |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | + |
| 34 | +## `benchmarks` |
| 35 | + |
| 36 | +The benchmarks section consists of a non-empty list of collections, each describing a benchmark |
| 37 | +entity. |
| 38 | + |
| 39 | +* A benchmark entity starts with its *name* (second level indentation), valid names are for example: |
| 40 | +`radosbench`, `hsbench`, `kvmrbdfio`, `librbdfio`, etc. |
| 41 | + |
| 42 | +* The contents of the benchmark entity (third level indentation) consist of a collection of items |
| 43 | +(either scalars or collections themselves). Most of these entities represent options for the |
| 44 | +command line invocation of the benchmark when executed by the clients. |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | +## `monitoring_profiles` |
| 50 | + |
| 51 | + |
| 52 | +The monitoring_profiles section consists of a non-empty list of of collections, each describing a |
| 53 | +monitoring tool. |
| 54 | + |
| 55 | +A monitoring entity starts with its name (at second level indentation). Currently supported are `perf` |
| 56 | +, `collectl`, `top`. |
| 57 | + |
| 58 | +The contents of the monitoring entity consists of : |
| 59 | +* a `nodes` (third level indentation) list of processes to monitor (by default the osd nodes), and |
| 60 | +* an optional string `args` (third level indentation) to indicate the arguments to the monitoring tool. |
| 61 | + |
| 62 | + |
| 63 | +## `client_endpoints` |
| 64 | + |
| 65 | +The client_endpoints section consists of a non-empty list of collections, each associated to a |
| 66 | +benchmark entity, and typically indicating the driver for the benchmark. The client_endpoints, if |
| 67 | +specified on a test plan, must be cross referenced by the benchmark section, and as such normally the |
| 68 | +client_endpoints section precedes the benchmarks section in the test plan. |
| 69 | + |
| 70 | +See the dir `example/` for a number of test plan examples. |
0 commit comments