This document is aimed at Dart developers, or anyone who runs a Dart server and wants to change something.
The Client is relatively straight forward. Depending on the Options passed to DashboardManager.tcl, the client will run several programs, and store each programs standard output log, and return status. It will then attempt to parse the logs, and produce an XML file for each stage in the build process. The client then uses one of various means to transfer the XML files to the server. The submission process finally triggers the server to copy the XML files to the appropriate place in the build tree. Note that if the server runs a dashboard client in the same directory tree, you will not need an explicit submit - the files will already be in the correct place.
Client/DashboardManager.tcl
Client/Update.tcl
Update.xml
Client/Configure.tcl
Configure.xml
Client/Build.tcl
Build.xml
Client/ftp.tcl
Client/Utility.conf.in
Client/Submit.tcl
Client/Test.tcl
Test.xml.
The Server is fairly complicated beast. The first point is that in some
senses it is just another client. The server does not actively manage the
receiving of client submission. Some intermediate scripts place that data into
the server's directory tree. The server roll-up process is started when
something (Cron or a roll-up web button) calls DashboardManager.tcl ...
DashboardEnd
The roll-up process goes roughly as follows
$d/XML/$s.xml
files that could have
been submitted, and if the equivalent $d/$s.html
does not exist it
passes the $d/XML/$s.xml
file to the XSLT processor running
Server/XSL/$s.xsl
Server/XSL/Update.xsl
$d/Update.html
which displays the update details for
that build and $d/UpdateSummary.xml
which will be used to build the
dashboard.Server/XSL/Configure.xsl
$d/Configure.html
which displays the configure details for
that build and $d/ConfigureSummary.xml
which will be used to build the
dashboard.Server/XSL/Build.xsl
$d/Build.html
, an empty file which indicates
that this step has been run, $d/BuildError.html
which displays
that build's error details, $d/BuildError.html
which displays
that build's warning details, and $d/BuildSummary.xml
which will be used to build the
dashboard, and the dashboard's build summary.Server/XSL/Test.xsl
$d/Test.html
which displays that build's
list of tests along with summary details, (probably a $d/Results/__$t.html
for each test $t with the test output,) and $d/TestSummary.xml
which will be used to build the
dashboard, and the dashboard's all builds test summary. If there are
any identified measurements in a test output, Test.xsl
creates a
table labelling the rows with the "name"'s of the measurements and
filling in the entries with the
specific measurement. If the measurement was an image, Test.xsl
extracts
the base64 data for that
image from Test.xml
into a separate file. An img
tagset is placed in the
measurement table,
referencing an image whose name is constructed from the "measurement
name" (i.e. the value of the
"name" attribute in the tag). (DashboardManager.tcl
then converts
all base64 files into the unencoded
files.)GetErrorsWarningsFromBuildSummary()
in Client/Utility.tcl
to decide if and what to send in an
email. It records if it has already sent an email in this module by
leaving an empty mailsent.txt
file in the submission directory. Dashboard.xml
in the Dashboard directory with
the information about date, etc. It then concatenates the UpdateSummary.xml
,
ConfigureSummary.xml
, etc. from each of the day's
submission directories to form a finished Dashboard.xml
.Server/XSL/Dashboard.xsl
takes Dashboard.xml
and produces Dashboard.html
,
TestOverview.xml
and BuildOverview.xml
. Needed means if Dashboard.xml
is newer that Dashboard.html
. TestOverview.xml
is
only produced if a newly submitted test file was processed above.Server/XSL/
BuildOverview.xsl
takes BuildOverview.xml
and produces BuildOverview.html
.
Needed means if BuildOverview.xml
is newer that BuildOverview.html
.Server/XSL/TestOverview.xsl
takes TestOverview.xml
and produces TestOverview.html
,
and others.Things I haven't explained:
Feel free to fix any errors.
Ian Scott
24 Feb 2003