Skip to content

Instantly share code, notes, and snippets.

@jarl-dk
Created March 20, 2016 15:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jarl-dk/47b3349699819584a75d to your computer and use it in GitHub Desktop.
Save jarl-dk/47b3349699819584a75d to your computer and use it in GitHub Desktop.
Design proposal for distributed execution

Design proposal for distributed execution


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

To be done

  • Specify the information structure for work item.
  • Specify API between executor frontend and executor backend.
  • Specify protocol between execututor backend and worker.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment