summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorjasplin <qt-info@nokia.com>2009-08-17 13:16:57 +0200
committerjasplin <qt-info@nokia.com>2009-08-17 13:16:57 +0200
commit58f9e03688fafb806f6a1a68a449332e39af235d (patch)
treeaea848a6eaa61aac99cc8717ce2072f14ed73f1f /doc
parenta05fca9c9e09ff3713ac5c67f9da48c1499a75c0 (diff)
Converted protocol to simpler XML structure.
Diffstat (limited to 'doc')
-rw-r--r--doc/bmcp.html785
1 files changed, 264 insertions, 521 deletions
diff --git a/doc/bmcp.html b/doc/bmcp.html
index 893e85a..6368c1f 100644
--- a/doc/bmcp.html
+++ b/doc/bmcp.html
@@ -3,11 +3,9 @@
<head>
<style type="text/css">
-thead {background-color:#e5e5e5; text-align:left}
-.msgName {color:#a0291b; font-size:18}
-.msgDescr {color:#228822}
-.alias {color:#3333bb; font-weight:bold}
-td {padding-right:20px}
+//thead {background-color:#e5e5e5; text-align:left}
+.requestName {color:#a0291b; font-size:18}
+.requestDescr {color:#228822}
</style>
</head>
@@ -21,641 +19,386 @@ td {padding-right:20px}
BMCP is a simple protocol that assumes a reliable byte channel (like TCP)
between a client and a server. Requests are sent from the client to the
server. Each request is followed by a reply sent from the server to the
-client. After connecting, a successful handshake must precede further message
-exchange.
+client.
-<h3>Message Fields</h3>
+<h3>General Message Structure</h3>
-<h4>Basic types</h4>
+Each request or reply message consists of a header followed by a data
+part. The header consists of a single four-byte quint32 value (in big endian,
+i.e. most significant byte first) that holds the number of bytes of the data
+part. The data part is encoded as an XML structure that depends on the request
+type. The XML structures for the individual request types are specified below.
-At the lowest level, message fields are represented by the basic types U8,
-U16, U32, S8, S16, S32, and S64. These represent respectively 8, 16, and
-32-bit unsigned integers and 8, 16, 32, and 64-bit signed integers. All
-multiple byte integers are in big endian order (most significant byte first).
-<h4>Common structured types</h4>
+<h3>Requests</h3>
-The following structured types typically occur in several places and will be
-referred to only by their names for brevity:
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">BENCHMARK</p>
-
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-
-<tr><td>4</td><td>U32</td><td>test case size</td></tr>
-<tr><td>test case size</td><td>U8 array</td><td>test case</td></tr>
-
-<tr><td>4</td><td>U32</td><td>test function size</td></tr>
-<tr><td>test function size</td><td>U8 array</td><td>test function</td></tr>
-
-<tr><td>4</td><td>U32</td><td>data tag size</td></tr>
-<tr><td>data tag size</td><td>U8 array</td><td>data tag</td></tr>
-
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">METRIC</p>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-<tr><td>4</td><td>U32</td><td>metric size</td></tr>
-<tr><td>metric size</td><td>U8 array</td><td>metric</td></tr>
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">PLATFORM</p>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-<tr><td>4</td><td>U32</td><td>platform size</td></tr>
-<tr><td>platform size</td><td>U8 array</td><td>platform</td></tr>
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">HOST</p>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-<tr><td>4</td><td>U32</td><td>host size</td></tr>
-<tr><td>host size</td><td>U8 array</td><td>host</td></tr>
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">BMCONTEXT</p>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td></tr>
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">BRANCH</p>
-
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-
-<tr><td>4</td><td>U32</td><td>git repo size</td></tr>
-<tr><td>git repo size</td><td>U8 array</td><td>git repo</td></tr>
-
-<tr><td>4</td><td>U32</td><td>git branch size</td></tr>
-<tr><td>git branch size</td><td>U8 array</td><td>git branch</td></tr>
-
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">SNAPSHOT</p>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-<tr><td>4</td><td>U32</td><td>timestamp</td></tr>
-<tr><td>4</td><td>U32</td><td>sha1 size</td></tr>
-<tr><td>sha1 size</td><td>U8 array</td><td>sha1</td></tr>
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">RESULT</p>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-<tr><td>4</td><td>U32</td><td>value</td></tr>
-<tr><td>4</td><td>U32</td><td>iterations</td></tr>
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">SNAPSHOTRESULT</p>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-<tr><td>SNAPSHOT size</td><td class="alias">SNAPSHOT</td><td></td></tr>
-<tr><td>RESULT size</td><td class="alias">RESULT</td><td></td></tr>
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">DATATAGRESULT</p>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-<tr><td>4</td><td>U32</td><td>data tag size</td></tr>
-<tr><td>data tag size</td><td>U8 array</td><td>data tag</td></tr>
-<tr><td>RESULT size</td><td class="alias">RESULT</td><td></td></tr>
-</table>
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">TESTFUNCTIONRESULTS</p>
-
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-
-<tr><td>4</td><td>U32</td><td>test function size</td></tr>
-<tr><td>test function size</td><td>U8 array</td><td></td></tr>
-<tr><td>4</td><td>U32</td><td>nT</td></tr>
-
-<tr><td>DATATAGRESULT size</td><td class="alias">DATATAGRESULT</td><td>item 1</td></tr>
-<tr><td>DATATAGRESULT size</td><td class="alias">DATATAGRESULT</td><td>item 2</td></tr>
-<tr><td>...</td></tr>
-<tr><td>DATATAGRESULT size</td><td class="alias">DATATAGRESULT</td><td>item nT</td></tr>
-
-</table>
-
-
-<!-- --------------------------------- -->
-<hr />
-<p class="alias">TESTCASERESULTS</p>
-
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Description</th></tr></thead>
-
-<tr><td>4</td><td>U32</td><td>test case size</td></tr>
-<tr><td>test case size</td><td>U8 array</td><td>test case</td></tr>
-
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td>item 1</td></tr>
-
-<tr><td>4</td><td>U32</td><td>nF</td></tr>
-
-<tr><td>TESTFUNCTIONRESULTS size</td><td
-class="alias">TESTFUNCTIONRESULTS</td><td>item 1</td></tr>
-<tr><td>TESTFUNCTIONRESULTS size</td><td
-class="alias">TESTFUNCTIONRESULTS</td><td>item 2</td></tr>
-<tr><td>...</td></tr>
-<tr><td>TESTFUNCTIONRESULTS size</td><td
-class="alias">TESTFUNCTIONRESULTS</td><td>item nF</td></tr>
-
-</table>
-
-
-<h3>Messages</h3>
-
-<!-- ---------------------------------------------------------------------------------- -->
-<hr />
-
-<p class="msgDescr">
-A new session begins with a handshake. If a successful handshake cannot be
-established (i.e. recognized by either peer), the session is silently
-disconnected (i.e. no explicit error message is sent).
-</p>
-
-<h4 class="msgName">HandshakeRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th></tr></thead>
-<tr><td>6</td><td>7-bit ASCII</td><td>"magic\n" (hex: 6d 61 67 69 63 0a)</td></tr>
-</table>
-
-<h4 class="msgName">HandshakeReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th></tr></thead>
-<tr><td>6</td><td>7-bit ASCII</td><td>"magic\n" (hex: 6d 61 67 69 63 0a)</td></tr>
-</table>
+<!-- Describe how any reply message may have an optional error attribute -->
+<!-- indicating an error ... 2 B DONE! -->
+<b>Note:</b> Any reply message may optionally contain an <i>error</i>
+attribute in its &lt;reply&gt; tag. If non-empty, the value of this attribute
+is an error message that describes the reason why the request could not be
+successfully processed.
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
-The <b>ErrorReply</b> message may replace any regular reply message to
-indicate bad syntax or something else that prevents the normal reply from
-being generated.
-</p>
-
-<h4 class="msgName">ErrorReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>1</td><td>message type</td></tr>
-<tr><td>4</td><td>U32</td><td></td><td>description size</td></tr>
-<tr><td>description size</td><td>U8 array</td><td></td><td>description</td></tr>
-</table>
-
-
-<!-- ---------------------------------------------------------------------------------- -->
-<hr />
+<h4 class="requestName">AddBenchmark</h4>
-<p class="msgDescr">
+<p class="requestDescr">
This request adds a new benchmark to the database.
</p>
-<h4 class="msgName">AddBenchmarkRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>2</td><td>message type</td></tr>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">AddBenchmarkReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>3</td><td>message type</td></tr>
-</table>
-
-<p class="msgDescr">
-<b>Note</b>: In this case the reply message serves as a silent acknowledgement only.
-</p>
+<pre>
+ &lt;request type="AddBenchmark"&gt;
+ &lt;benchmark testCase="..." testFunction="..." dataTag="..." /&gt;
+ &lt;/request&gt;
+</pre>
+<pre>
+ &lt;reply type="AddBenchmark" /&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
+<h4 class="requestName">AddMetric</h4>
+
+<p class="requestDescr">
This request adds a new metric to the database.
</p>
-<h4 class="msgName">AddMetricRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>4</td><td>message type</td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">AddMetricReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>5</td><td>message type</td></tr>
-</table>
-
-<p class="msgDescr">
-<b>Note</b>: In this case the reply message serves as a silent acknowledgement only.
-</p>
+<pre>
+ &lt;request type="AddMetric"&gt;
+ &lt;metric name="..." /&gt;
+ &lt;/request&gt;
+</pre>
+<pre>
+ &lt;reply type="AddMetric" /&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
+<h4 class="requestName">AddPlatform</h4>
+
+<p class="requestDescr">
This request adds a new platform to the database.
</p>
-<h4 class="msgName">AddPlatformRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>6</td><td>message type</td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">AddPlatformReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>7</td><td>message type</td></tr>
-</table>
-
-<p class="msgDescr">
-<b>Note</b>: In this case the reply message serves as a silent acknowledgement only.
-</p>
+<pre>
+ &lt;request type="AddPlatform"&gt;
+ &lt;platform name="..." /&gt;
+ &lt;/request&gt;
+</pre>
+<pre>
+ &lt;reply type="AddPlatform" /&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
+<h4 class="requestName">AddHost</h4>
+
+<p class="requestDescr">
This request adds a new host to the database.
</p>
-<h4 class="msgName">AddHostRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>8</td><td>message type</td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">AddHostReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>9</td><td>message type</td></tr>
-</table>
-
-<p class="msgDescr">
-<b>Note</b>: In this case the reply message serves as a silent acknowledgement only.
-</p>
+<pre>
+ &lt;request type="AddHost"&gt;
+ &lt;host name="..." /&gt;
+ &lt;/request&gt;
+</pre>
+<pre>
+ &lt;reply type="AddHost" /&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
+<h4 class="requestName">AddBranch</h4>
+
+<p class="requestDescr">
This request adds a new branch to the database.
</p>
-<h4 class="msgName">AddBranchRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>10</td><td>message type</td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">AddBranchReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>11</td><td>message type</td></tr>
-</table>
-
-<p class="msgDescr">
-<b>Note</b>: In this case the reply message serves as a silent acknowledgement only.
-</p>
+<pre>
+ &lt;request type="AddBranch"&gt;
+ &lt;branch gitRepo="..." gitBranch="..." /&gt;
+ &lt;/request&gt;
+</pre>
+<pre>
+ &lt;reply type="AddBranch" /&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
-This request adds new results to the database.
-</p>
+<h4 class="requestName">AddResults</h4>
-<h4 class="msgName">AddResultsRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>12</td><td>message type</td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td></td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-<tr><td>SNAPSHOT size</td><td class="alias">SNAPSHOT</td><td></td><td></td></tr>
-<tr><td>TESTCASERESULTS size</td><td
-class="alias">TESTCASERESULTS</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">AddResultsReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>13</td><td>message type</td></tr>
-</table>
-
-<p class="msgDescr">
-<b>Note</b>: In this case the reply message serves as a silent acknowledgement only.
+<p class="requestDescr">
+This request adds new results to the database.
</p>
+<pre>
+ &lt;request type="AddResults"&gt;
+ &lt;context platform="..." host="..." gitRepo="..." gitBranch="..."
+ timestamp="..." sha1="..." testCase="..." /&gt;
+ &lt;testFunction name="..."&gt;
+ &lt;dataTag name="" value"..." iterations="..." /&gt;
+ ...
+ &lt;/testFunction&gt;
+ ...
+ ...
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="AddResults" /&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
-This request lists all snapshots available for a particular BMCONTEXT/BRANCH combination.
-</p>
+<h4 class="requestName">ListSnapshots</h4>
-<h4 class="msgName">ListSnapshotsRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>14</td><td>message type</td></tr>
-<tr><td>BMCONTEXT size</td><td class="alias">BMCONTEXT</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">ListSnapshotsReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>15</td><td>message type</td></tr>
-<tr><td>1</td><td>U32</td><td></td><td>n</td></tr>
-<tr><td>SNAPSHOT size</td><td class="alias">SNAPSHOT</td><td></td><td>item 1</td></tr>
-<tr><td>SNAPSHOT size</td><td class="alias">SNAPSHOT</td><td></td><td>item 2</td></tr>
-<tr><td>...</td></tr>
-<tr><td>SNAPSHOT size</td><td class="alias">SNAPSHOT</td><td></td><td>item n</td></tr>
-</table>
+<p class="requestDescr">
+This request lists snapshots available for a particular context.
+</p>
+<pre>
+ &lt;request type="ListSnapshots"&gt;
+ &lt;context testCase="..." testFunction="..." dataTag="..." metric="..." platform="..."
+ host="..." gitRepo="..." gitBranch="..." /&gt;
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="ListSnapshots"&gt;
+ &lt;snapshot timestamp="..." sha1="..." /&gt;
+ &lt;snapshot timestamp="..." sha1="..." /&gt;
+ ...
+ &lt;/reply&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
+<h4 class="requestName">ListBenchmarks</h4>
+
+<p class="requestDescr">
This request lists available benchmarks. One or more additional entity values
-(metric, platform, host, or branch) may be specified as non-empty values to
+(metric, platform, host, or git repo/branch) may be specified as non-empty values to
restrict the output to only those benchmarks for which at least one result
exists in combination with that combination of values. If all additional
entity values are empty, the output will include all available benchmarks,
even those that haven't been associated with any result yet.
</p>
-<h4 class="msgName">ListBenchmarksRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>16</td><td>message type</td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td><td></td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td></td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">ListBenchmarksReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>17</td><td>message type</td></tr>
-<tr><td>1</td><td>U32</td><td></td><td>n</td></tr>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td><td>item 1</td></tr>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td><td>item 2</td></tr>
-<tr><td>...</td></tr>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td><td>item n</td></tr>
-</table>
+<pre>
+ &lt;request type="ListBenchmarks"&gt;
+ &lt;context metric="..." platform="..." host="..." gitRepo="..." gitBranch="..." /&gt;
+ &lt;/request&gt;
+</pre>
+<pre>
+ &lt;reply type="ListBenchmarks"&gt;
+ &lt;benchmark testCase="..." testFunction="..." dataTag="..." /&gt;
+ &lt;benchmark testCase="..." testFunction="..." dataTag="..." /&gt;
+ ...
+ &lt;/reply&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
-This request behaves similarly to ListBenchmarks* (see this).
-</p>
+<h4 class="requestName">ListMetrics</h4>
-<h4 class="msgName">ListMetricsRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>18</td><td>message type</td></tr>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td><td></td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td></td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">ListMetricsReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>19</td><td>message type</td></tr>
-<tr><td>1</td><td>U32</td><td></td><td>n</td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td><td>item 1</td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td><td>item 2</td></tr>
-<tr><td>...</td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td><td>item n</td></tr>
-</table>
+<p class="requestDescr">
+This request behaves similarly to ListBenchmarks (see this).
+</p>
+<pre>
+ &lt;request type="ListMetrics"&gt;
+ &lt;context testCase="..." testFunction="..." dataTag="..." platform="..." host="..."
+ gitRepo="..." gitBranch="..." /&gt;
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="ListMetrics"&gt;
+ &lt;metric name="..." /&gt;
+ &lt;metric name="..." /&gt;
+ ...
+ &lt;/reply&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
-This request behaves similarly to ListBenchmarks* (see this).
-</p>
+<h4 class="requestName">ListPlatforms</h4>
-<h4 class="msgName">ListPlatformsRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>20</td><td>message type</td></tr>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td><td></td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td><td></td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">ListPlatformsReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>21</td><td>message type</td></tr>
-<tr><td>1</td><td>U32</td><td></td><td>n</td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td>item 1</td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td>item 2</td></tr>
-<tr><td>...</td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td>item n</td></tr>
-</table>
+<p class="requestDescr">
+This request behaves similarly to ListBenchmarks (see this).
+</p>
+<pre>
+ &lt;request type="ListPlatforms"&gt;
+ &lt;context testCase="..." testFunction="..." dataTag="..." metric="..." host="..."
+ gitRepo="..." gitBranch="..." /&gt;
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="ListPlatforms"&gt;
+ &lt;platform name="..." /&gt;
+ &lt;platform name="..." /&gt;
+ ...
+ &lt;/reply&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
-This request behaves similarly to ListBenchmarks* (see this).
-</p>
+<h4 class="requestName">ListHosts</h4>
-<h4 class="msgName">ListHostsRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>22</td><td>message type</td></tr>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td><td></td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td><td></td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">ListHostsReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>23</td><td>message type</td></tr>
-<tr><td>1</td><td>U32</td><td></td><td>n</td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td>item 1</td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td>item 2</td></tr>
-<tr><td>...</td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td>item n</td></tr>
-</table>
+<p class="requestDescr">
+This request behaves similarly to ListBenchmarks (see this).
+</p>
+<pre>
+ &lt;request type="ListHosts"&gt;
+ &lt;context testCase="..." testFunction="..." dataTag="..." metric="..." platform="..."
+ gitRepo="..." gitBranch="..." /&gt;
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="ListHosts"&gt;
+ &lt;host name="..." /&gt;
+ &lt;host name="..." /&gt;
+ ...
+ &lt;/reply&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
-This request behaves similarly to ListBenchmarks* (see this).
-</p>
+<h4 class="requestName">ListBranches</h4>
-<h4 class="msgName">ListBranchesRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>24</td><td>message type</td></tr>
-<tr><td>BENCHMARK size</td><td class="alias">BENCHMARK</td><td></td><td></td></tr>
-<tr><td>METRIC size</td><td class="alias">METRIC</td><td></td><td></td></tr>
-<tr><td>PLATFORM size</td><td class="alias">PLATFORM</td><td></td><td></td></tr>
-<tr><td>HOST size</td><td class="alias">HOST</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">ListBranchesReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>25</td><td>message type</td></tr>
-<tr><td>1</td><td>U32</td><td></td><td>n</td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td>item 1</td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td>item 2</td></tr>
-<tr><td>...</td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td>item n</td></tr>
-</table>
+<p class="requestDescr">
+This request behaves similarly to ListBenchmarks (see this).
+</p>
+<pre>
+ &lt;request type="ListBranches"&gt;
+ &lt;context testCase="..." testFunction="..." dataTag="..." metric="..." platform="..."
+ host="..." /&gt;
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="ListBranches"&gt;
+ &lt;branch gitRepo="..." gitBranch="..." /&gt;
+ &lt;branch gitRepo="..." gitBranch="..." /&gt;
+ ...
+ &lt;/reply&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
-This request compares results as a history of a particular BMCONTEXT/BRANCH
-combination since a particular SNAPSHOT.
+<h4 class="requestName">CompareHistory</h4>
+
+<p class="requestDescr">
+This request compares results as a history for a particular context since a
+particular snapshot.
</p>
-<h4 class="msgName">CompareHistoryRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>26</td><td>message type</td></tr>
-<tr><td>BMCONTEXT size</td><td class="alias">BMCONTEXT</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-<tr><td>SNAPSHOT size</td><td class="alias">SNAPSHOT</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">CompareHistoryReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>27</td><td>message type</td></tr>
-<tr><td>4</td><td>U32</td><td></td><td>history size</td></tr>
-<tr><td>SNAPSHOTRESULT size</td><td
-class="alias">SNAPSHOTRESULT</td><td></td><td>result 1</td></tr>
-<tr><td>SNAPSHOTRESULT size</td><td
-class="alias">SNAPSHOTRESULT</td><td></td><td>result 2</td></tr>
-<tr><td>...</td></tr>
-</table>
+<p class="requestDescr">
+<b>Note:</b> Only one of <i>timestamp</i> or <i>sha1</i> is required. If
+<i>timestamp</i> is used, the values <i>first</i> and <i>last</i> may be used
+to refer to the first and last available result respectively. Otherwise,
+<i>timestamp</i> refers to the earliest result that is not earlier than the
+specified value.
+</p>
+<pre>
+ &lt;request type="CompareHistory"&gt;
+ &lt;context testCase="..." testFunction="..." dataTag="..." metric="..." platform="..."
+ host="..." gitRepo="..." gitBranch="..." timestamp="..." sha1="..." /&gt;
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="CompareHistory"&gt;
+ &lt;result timestamp="..." sha1="..." value="..." iterations="..." /&gt;
+ &lt;result timestamp="..." sha1="..." value="..." iterations="..." /&gt;
+ ...
+ &lt;/reply&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
+<h4 class="requestName">CompareBranches</h4>
+
+<p class="requestDescr">
This request compares the results of two branches.
</p>
-<h4 class="msgName">CompareBranchesRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>28</td><td>message type</td></tr>
-<tr><td>BMCONTEXT size</td><td class="alias">BMCONTEXT</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td
-class="alias">BRANCH</td><td></td><td>branch 1</td></tr>
-<tr><td>SNAPSHOT size</td><td
-class="alias">SNAPSHOT</td><td></td><td>snapshot 1</td></tr>
-<tr><td>BRANCH size</td><td
-class="alias">BRANCH</td><td></td><td>branch 2</td></tr>
-<tr><td>SNAPSHOT size</td><td
-class="alias">SNAPSHOT</td><td></td><td>snapshot 2</td></tr>
-</table>
-
-<h4 class="msgName">CompareBranchesReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>29</td><td>message type</td></tr>
-<tr><td>SNAPSHOTRESULT size</td><td
-class="alias">SNAPSHOTRESULT</td><td></td><td>result 1</td></tr>
-<tr><td>SNAPSHOTRESULT size</td><td
-class="alias">SNAPSHOTRESULT</td><td></td><td>result 2</td></tr>
-</table>
+<p class="requestDescr">
+See note above regarding semantics of the timestamp and sha1 attributes.
+</p>
+<pre>
+ &lt;request type="CompareBranches"&gt;
+ &lt;context testCase="..." testFunction="..." dataTag="..." metric="..." platform="..."
+ host="..."
+ gitRepo1="..." gitBranch1="..." timestamp1="..." sha11="..."
+ gitRepo2="..." gitBranch2="..." timestamp2="..." sha12="..." /&gt;
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="CompareBranches"&gt;
+ &lt;result timestamp="..." sha1="..." value="..." iterations="..." /&gt;
+ &lt;result timestamp="..." sha1="..." value="..." iterations="..." /&gt;
+ &lt;/reply&gt;
+</pre>
<!-- ---------------------------------------------------------------------------------- -->
<hr />
-<p class="msgDescr">
+<h4 class="requestName">CompareDirect</h4>
+
+<p class="requestDescr">
This request compares a result in the database to an explicitly given result.
</p>
-<h4 class="msgName">CompareDirectRequest</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>30</td><td>message type</td></tr>
-<tr><td>BMCONTEXT size</td><td class="alias">BMCONTEXT</td><td></td><td></td></tr>
-<tr><td>BRANCH size</td><td class="alias">BRANCH</td><td></td><td></td></tr>
-<tr><td>SNAPSHOT size</td><td class="alias">SNAPSHOT</td><td></td><td></td></tr>
-<tr><td>RESULT size</td><td class="alias">RESULT</td><td></td><td></td></tr>
-</table>
-
-<h4 class="msgName">CompareDirectReply</h4>
-<table border=0>
-<thead><tr><th>No. of bytes</th><th>Type</th><th>Value</th><th>Description</th></tr></thead>
-<tr><td>1</td><td>U8</td><td>31</td><td>message type</td></tr>
-<tr><td>SNAPSHOTRESULT size</td><td
-class="alias">SNAPSHOTRESULT</td><td></td><td></td></tr>
-<tr><td>RESULT size</td><td
-class="alias">RESULT</td><td></td><td>(identical to the one in the
-request)</td></tr>
-</table>
+<p class="requestDescr">
+See note above regarding semantics of the timestamp and sha1 attributes.
+</p>
+<pre>
+ &lt;request type="CompareDirect"&gt;
+ &lt;context testCase="..." testFunction="..." dataTag="..." metric="..." platform="..."
+ host="..."
+ gitRepo="..." gitBranch="..." timestamp="..." sha1="..."
+ value="..." iterations="..." /&gt;
+ &lt;/request&gt;
+</pre>
+
+<pre>
+ &lt;reply type="CompareDirect"&gt;
+ &lt;result timestamp="..." sha1="..." value="..." iterations="..." /&gt;
+ &lt;result value="..." iterations="..." /&gt;
+ &lt;/reply&gt;
+</pre>
</body>
</html>