[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

New XML output format

From: Jacob Bachmeyer
Subject: New XML output format
Date: Wed, 03 Jun 2020 18:16:24 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20090807 MultiZilla/ SeaMonkey/1.1.17 Mnenhy/

There is currently an experimental (and broken as of this writing; the DB schema has been changed but work on the new import tool is stalled) branch "psql" in the repository, where an improved database storage model is being developed. In the course of that development, the inadequacies of the current XML output format have become apparent and I would like to solicit feedback on plans for a new XML format.

The new format is radically different, in part to allow processing tools to easily distinguish it from the old format and in part to take better advantage of XML features and move towards extensible markup. In the new format, tests are collected into a hierarchy of groups, following the filesystem structure of the testsuite and any logical groupings declared by the test scripts (groups declared by test scripts not yet implemented, but I hope to slip the API calls into 1.6.3 as stubs to allow early adoption). Test group names are /-delimited strings and internally may cover any (positive) number of levels, but are expected to be handled in post-processing such that {foo "bar/baz"} and {"foo/bar" baz} are both equivalent to "foo/bar/baz".

The new structure is still in development and no code for it has been written yet, but I would like to post a tentative outline representing part of a DOM tree for part of DejaGnu's own testsuite to solicit feedback:

- dg:run start="<timestamp>" user="<login name>"
 - dg:platform
   - dg:board role=build name="unix"
     - "x86_64-unknown-linux-gnu"
   - dg:board role=host name="unix"
     - "x86_64-unknown-linux-gnu"
   - dg:board role=target name="unix"
     - "x86_64-unknown-linux-gnu"
   - dg:version element="dejagnu"
     - "1.6.3-git-psql"
   - dg:version element="Expect"
     - "5.45"
   - dg:version element="Tcl"
     - "8.5"
 - dg:group name="runtest"
   - dg:group name="libs"
     - dg:group name="libs"
       - dg:group name="clone_output"
         - dg:test result=PASS
           - dg:name
             - "clone_output(pass) without all_flag set"
         ... other tests omitted ...
   ... other groups omitted ....
 - dg:summary finish="<timestamp>"
   - dg:total result=PASS count="234"

The above example describes a test in the "runtest/libs/libs/clone_output" group. A post-processing tool could collapse that group name to "runtest/libs/clone_output" by deleting the repeated "libs", but each element in that group name was produced as so: "runtest" was the tool name, the test script was found in "runtest.libs" (the first "libs"), the test script was named "libs.exp" (the second "libs") and the test script reported a group "clone_output" because it ran "clone_output.test" (not yet implemented).

Attributes listed with quotes around the values are CDATA; others are enumerated types. Assume a proper "xmlns:dg" namespace declaration.


-- Jacob

reply via email to

[Prev in Thread] Current Thread [Next in Thread]