|  | 
|  | 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