Architecture Design Doc
We should imagine Kinti as process which passes messages from left to right. On the left we have Service tests which produce results and on the right we have buckets which receive them.
Service tests will automatically loaded from the 'plugins'-folder. A plugin has to be a subclass of the 'kinti.runner.plugins.Plugin'-class and implement the run method.
Buckets are separate processes which should communicate with the runner process through XMPP and can be written in any language as long as they conform to the XMPP protocol. We have written our plugins in Python and we've used the Twisted framework for XMPP communication.
Between the plugins and the buckets is the Runner process. This module will load plugins, gather the results and pass them on to the buckets. You don't have to edit this module if you add or remove plugins and/or buckets.
Configuration files are stored in the /config folder. Buckets should store their .ini files in this folder. Service tests should add their settings to the config.xml file. The configuration-server will read the config file, check for updates, and pass the settings to the plugins as an argument in their run-method.