+----------------------------------+
| |
| +--------------+ |
| | | |
| | Executor | |
| | Frontend | |
| | | |
| +--------------+ |
| | |
| | |
| V |
| +---------------------+ |
| | | |
| | Executor | |
| | Backend (Master) | |
| | | |
| +---------------------+ |
| |boot | |
+---------|-----------|------------+
| |test work item
V V
+----------------------+
+----------------------+|
+----------------------+||
| |||
| Backend (Workers) ||
| |
+----------------------+
The responsibility of the frontend is
- Read and parse feature files
- Produce work items
- Consolidate results (Map/reduce) and deliver it to the user.
The responsibility of the backend is
- Consume work items from the front end.
- Distribute work items to workers according to capabilities
- Collect results and deliver it to the front end.
Each worker has a capabilities structure defining what this worker is capable of.
Each test case can have capability requirements. This can initially
be implemented by using tags, having naming convention like
@require_capability=arduino
- Specify the information structure for work item.
- Specify API between executor frontend and executor backend.
- Specify protocol between execututor backend and worker.