| 100 | |
| 101 | ==== Experiments ==== |
| 102 | |
| 103 | All of the testbed API is ultimately geared toward the creation of experiments. An experiment is: |
| 104 | |
| 105 | A description of the experimental environment:: |
| 106 | topology of computers and other resources in which the experiment will take place, including infrastructure necessary to carryout and gather data from the experiment |
| 107 | A set of constraints on the resources needed for experiment validity:: |
| 108 | failures of nodes or software can render an experiment invalid |
| 109 | A procedure to carry out |
| 110 | the repeatable sequence of events and reaction to those events that tests a hypothesis |
| 111 | A data to be collected and methods for doing so |
| 112 | mechanisms to understand the experiment without influencing it |
| 113 | |
| 114 | Not all experiments in the sense of the API data structure will have all these elements. Testbeds are often used to create an environment in which to try ideas out and explore ideas without intending to reproduce the experience. The other end of the spectrum is rigorous, repeatable hypothesis testing. The API supports both by allowing some of these aspects to be omitted for some experiments (in the API sense). |
| 115 | |
| 116 | This API is primarily concerned with: |
| 117 | |
| 118 | * Storing the experiment specification for repeated use |
| 119 | * Sharing the experiment specification between users subject to [wiki:NewPolicy policy] |
| 120 | * Assigning resources to carry out the experiment |
| 121 | * Configuring resources using containers so that the experiment can be carried out successfully on limited resources |
| 122 | * Initializing and supporting an experiment control system like MAGI to carry out the experiment's procedure, police invariants, and gather data. |
| 123 | |
| 124 | In order to support experiments that are making minimal use of experiment control systems, the API allows a user to manipulate a realized experiment, including |
| 125 | |
| 126 | * viewing topology and state of containers |
| 127 | * low-level operations on containers (start, shutdown, reconfigure) |
| 128 | |
| 129 | These interfaces use filtering and graph analysis to present useful views of large experiments. |
| 130 | |