File: dev_readme.html

package info (click to toggle)
dart 0.20061109-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 5,668 kB
  • ctags: 247
  • sloc: tcl: 5,652; perl: 256; python: 141; cpp: 79; makefile: 68; sh: 36
file content (145 lines) | stat: -rw-r--r-- 7,463 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Notes for dart developers</title>
<style TYPE="text/css">
code {color: #FF0000;}
</style>
</head>

<body>
<h1>The Dart Source</h1>
<p>This document is aimed at Dart developers, or anyone who runs a Dart server
and wants to change something.</p>
<h2>How the Client works</h2>
<p>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.</p>

<ul>
  <li><code>Client/DashboardManager.tcl</code><br>
  Manages the client process.</li>
  <li><code>Client/Update.tcl</code><br>
  Runs a cvs update command and produces <code> Update.xml</code></li>
  <li><code>Client/Configure.tcl</code><br>
  Runs a Configure command and produces <code> Configure.xml</code></li>
  <li><code>Client/Build.tcl</code><br>
  Runs a build command and produces <code> Build.xml</code></li>
  <li><code>Client/ftp.tcl</code><br>
  Actually performs ftp protocol when using ftp submission</li>
  <li><code>Client/Utility.conf.in</code><br>
  Configuration Source for CMake to control Dart parameters.</li>
  <li><code>Client/Submit.tcl</code><br>
  Manages submission process</li>
  <li><code>Client/Test.tcl</code><br>
  Runs all the Tests and produces <code> Test.xml.</code><br>
  Test.tcl parses the output of a test looking for DartMeasurement and
DartMeasurementFile tags.&nbsp; When
it finds a tagset, it converts the tag into a NamedMeasurement tag in the
Test.xml file.&nbsp; If the tag
was a DartMeasurementFile tag, the data from the file is read and converted to
base64 and placed
within the NamedMeasurement tag in the Test.xml file.&nbsp; Any part of the
test's stdout that is not
within DartMeasurements tags is passed as the measurement for a test (just like
before).</li>
</ul>
<p>
&nbsp;&nbsp;
</p>    
<h2>How the Server works</h2>

<p>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 <code>DashboardManager.tcl ...
DashboardEnd</code> </p>

<p>The roll-up process goes roughly as follows</p>

<ul>
  <li>Dashboard manager looks for new dashboard submission directories ($d) with
    dates that fit into the current dashboard's timeframe. In each directory $d:
    <ul>
      <li>The manager goes through all the <code> $d/XML/$s.xml</code> files that could have
        been submitted, and if the equivalent <code> $d/$s.html</code> does not exist it
        passes the <code> $d/XML/$s.xml</code> file to the XSLT processor running
        <code> Server/XSL/$s.xsl</code>
        <ul>
          <li><code>Server/XSL/Update.xsl</code><br>
          produces <code>$d/Update.html</code> which displays the update details for
            that build and <code>$d/UpdateSummary.xml</code> which will be used to build the
            dashboard.</li>
          <li><code>Server/XSL/Configure.xsl</code><br>
          produces <code>$d/Configure.html</code> which displays the configure details for
            that build and <code>$d/ConfigureSummary.xml</code> which will be used to build the
            dashboard.</li>
          <li><code>Server/XSL/Build.xsl</code><br>
          produces <code>$d/Build.html</code>, an empty file which indicates
            that this step has been run, <code>$d/BuildError.html </code>which displays
            that build's error details, <code>$d/BuildError.html </code> which displays
            that build's warning details, and <code>$d/BuildSummary.xml</code> which will be used to build the
            dashboard, and the dashboard's build summary.</li>
          <li><code>Server/XSL/Test.xsl</code><br>
          produces <code>$d/Test.html</code> which displays that build's
            list of tests along with summary details, (probably a <code>$d/Results/__$t.html</code>
            for each test $t with the test output,) and <code>$d/TestSummary.xml</code> 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, <code>Test.xsl</code> creates a
table labelling the rows with the &quot;name&quot;'s of the measurements and
filling in the entries with the
specific measurement.&nbsp; If the measurement was an image, <code> Test.xsl</code> extracts
the base64 data for that
image from <code> Test.xml</code> into a separate file. An <code> img</code> tagset is placed in the
measurement table,
referencing an image whose name is constructed from the &quot;measurement
name&quot; (i.e. the value of the
&quot;name&quot; attribute in the tag).&nbsp; (<code>DashboardManager.tcl</code> then converts
all base64 files into the unencoded
files.)</li>
        </ul>
      <li>The manager examines the summary files using functions like <code>GetErrorsWarningsFromBuildSummary()</code>
        in <code>Client/Utility.tcl</code> 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 <code> mailsent.txt</code> file in the submission directory.</li>
    </ul>
  </li>
  <li>The Manager then starts (over)-writing <code> Dashboard.xml</code> in the Dashboard directory with
        the information about date, etc. It then concatenates the <code>UpdateSummary.xml</code>,
    <code>ConfigureSummary.xml</code>, etc. from each of the day's
        submission directories to form a finished <code>Dashboard.xml</code>.</li>
  <li>If needed, <code>Server/XSL/Dashboard.xsl<br>
        </code>takes <code> Dashboard.xml</code> and produces <code>Dashboard.html</code>,
    <code> TestOverview.xml</code>
        and <code>BuildOverview.xml</code>. Needed means if <code>Dashboard.xml</code>
    is newer that <code>Dashboard.html</code>. <code>TestOverview.xml</code> is
    only produced if a newly submitted test file was processed above.</li>
  <li>If needed, <code>Server/XSL/</code><code>BuildOverview.xsl<br>
        </code>takes <code>BuildOverview.xml</code> and produces <code>BuildOverview.html</code>.
    Needed means if <code>BuildOverview.xml</code> is newer that <code>BuildOverview.html</code>.</li>
  <li>If needed, <code>Server/XSL/TestOverview.xsl<br>
        </code>takes <code>TestOverview.xml</code> and produces <code>TestOverview.html</code>,
    and others.</li>
</ul>

<p>Things I haven't explained:</p>
<ul>
  <li>How the specialist builds work.</li>
  <li>How the notes system works</li>
  <li>How the detailed test information and summaries are created.</li>
  <li>How the nightly server update information is built.</li>
</ul>
<hr>
<p>Feel free to fix any errors.</p>
<p>Ian Scott<br>
24 Feb 2003</p>

</body>
</html>