[ SugarTrail::Repo ]
| 1 init(type,args) # init repo:
| # * type can be Filesystem or other,
| # * args can be root, connection string...
| load(master) # obtain Master from repo
v n
[ SugarTrail::Template::Master ]
| 1 parse_head() # parse text and fill out metadata properties
| gen_slave(args) # generate a number of Slaves from a Master
| # * args - args specify ranges from where
| # Slavess are generated; typically
| # based on a Cartesian product
| # (think OS x ARCHS x PROTOCOLS)
v n
[ SugarTrail::Template::Slave ] = ::Master + args
| 1 gen_task(slave) # a task (or a number of) can be created
| # from Slave. In less managed scenarios
| # (e.g. Beta testing) Slave can be served
| # right away, and task ID will be generated
| # off-site, e.g. using embedded JS, at
| # time of report
v n
[ SugarTrail::Task ] = ::Slave + (taskid)
the main source file is stored in repository, under revision say, 123
/release/rc.stm
+------------------[ vcs rev: 123 ]-----+
| ::Master # Source file |
+---------------------------------------+
| Name: Release Client |
| Component: ~ |
| Description: Basic release criterion |
| Owner: some.guy@example.com |
| Various ISTQB BS: this; that... |
| |
| Here the body sterts... |
| |
| # Main # |
| 1. Check A |
| > result is a |
| 2. Check IMAPIsm {proto==imap} |
| 2. Check POP3ism {proto==pop3} |
| > result is OK |
+---------------------------------------+
QA operator requests for Slave (i.e. a variation for his specific needs); text/plain version. Notice how revision number is passed down to the Slave
GET /release/rc.stm?os=7&proto=imap
Accept: text/plain
+---------------------------------------+
| ::Slave # Slave template |
+---------------------------------------+
| Stm: /release/rc.stm |
| Stm Revision: 123 |
| Params: os=7; proto=imap |
| |
| Here the body starts... |
| |
| # Main # |
| 1. Check A |
| > result is a |
| 2. Check IMAPIsm |
| > result is OK |
+---------------------------------------+
or they may like HTML better (and POP3 rather than IMAP)...
GET /release/rc.stm?os=7&proto=pop3
Accept: text/html
+---------------------------------------+
| HTML # Generated from Slave |
+---------------------------------------+
| # HTML version of above... |
| # With POP3 step instead of IMAP step |
| |
: :
' '
Even more graphical from time POV.
User : App : Repo : Master : Slave
=======================================
| | | | |
| o ----> | | |
| | init | | |
o ----> | | | |
| GET | | | |
| /rc?a o ----> | | |
| =b | load | | |
| | <---- o | |
| | mst | | |
| | | | |
| o ------------> | |
| | | gen(a | |
| | | =b) | |
| | <------------ o |
| | | slv | |
| | | | |
| o --------------------> |
| | | | rndr |
| | <-------------------- o
| | | | html |
| | | | |
| <---- o | | |
| html | | | |
| | | | |
=======================================
DAL | BLL | PL
========================================
Repo : Master :
: :
: Slave :
: :
: Condition :
: :
: :