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.tclClient/Update.tcl Update.xmlClient/Configure.tcl Configure.xmlClient/Build.tcl Build.xmlClient/ftp.tclClient/Utility.conf.inClient/Submit.tclClient/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