GSoC 2017 -- initial proof
Chris Johns
chrisj at rtems.org
Mon Apr 3 00:26:34 UTC 2017
On 03/04/2017 03:53, Joel Sherrill wrote:
> On Sun, Apr 2, 2017 at 12:33 PM, Tanu Hari Dixit <tokencolour at gmail.com
> <mailto:tokencolour at gmail.com>> wrote:
>
> Hi Andy,
>
> Joel and Gedare pointed me to the following:
>
> https://devel.rtems.org/wiki/Developer/Projects/Open/PythonCoverageReporting
> <https://devel.rtems.org/wiki/Developer/Projects/Open/PythonCoverageReporting>
> https://devel.rtems.org/ticket/2261
> <https://devel.rtems.org/ticket/2261>
> http://kmiesowicz.blogspot.in/p/esa-socis-2014.html
> <http://kmiesowicz.blogspot.in/p/esa-socis-2014.html>
>
> Last link is to the work done by a previous student.
> Hope this helps.
> My proposal does not take covoar into consideration. Though, I have
> planned to produce xml reports from rtems-tester that can be
> integrated into coverage testing. Also, I have planned to use this xml
> data to get plots (for visualizing results) as a stretch goal (you can
> look in the "Future Improvements" Section in my proposal).
>
>
> covoar directly produces the html and text reports we have now. My
> recollection is that it doesn't have to be touched and that the trick
> is invoking it on a more focused basis than Core vs Developmental.
I think covoar does need some refactoring. There are things we can do
now the tool resides in the rtems-tools repo that makes the tool
portable, more stable, faster and better.
First is the use of external tools being invoked via the `system` libc
call to collect information that can be done directly via the
rtemstoolkit. The makes the tool portable because the toolkit runs on
the Windows and Unix and it is based on standards based file formats, ie
ELF. As an example to highlight changes that need to happen take this
function:
https://git.rtems.org/rtems-tools/tree/tester/covoar/ObjdumpProcessor.cc#n233
a) The symbols data can be loaded directly from the ELF file and it is
quick and fully portable. See
https://git.rtems.org/rtems-tools/tree/linkers/rtems-syms.cpp#n463 as an
example.
b) The `system` call is not portable, eg Windows, because the command
expects a Unix shell, pipes and `sed`. We have a requirement to support
Windows. See
https://git.rtems.org/rtems-tools/tree/rtemstoolkit/rld-process.h#n235
for executing on all hosts.
c) Are the generated files cleaned up on exceptions, crashes etc. See
https://git.rtems.org/rtems-tools/tree/rtemstoolkit/rld-process.h#n54
and the process based support to handle temporary files and output.
I also see the running of the simulator as the function of `rtems-test`
as it handles the jobs and manage the state of the simulator and any
files created. It would hand the trace data to be processed to covoar
and get back the report, ie XML data, then clean up.
> So invoke covoar from rtems-tester mulitple times on a single run
> of the tests rather than twice at most.
Sorry, I do not understand this. Is rtems-tester the repo or is this
rtems-test the command?
> Personally, I think Core is still a good description for the core of
> the tasking (e.g. score, rtems, sapi, and posix) and that each
> directory other than that should be individual. But that's my marketing
> view. I could easily be argued that for consistency, it should all
> be on a per directory basis.
I wonder if ELF notes would help by letting us set an attribute or a few
attributes for each function and this guides how we handle them. It
would be nice if these are implemented close to the actual function's
source. As we have direct access to the ELF file we can extract these
notes and so the attributes and we can then directly map what is
happening. For example we can have attributes (ie EFL notes) such as
`rtems/score/cpu`, `rtems/score/threads`, and `rtems/score/mutex` etc
and you could say cover `rtems` or `rtems/score` etc. And if we also set
the standard the code conforms to such as `pthread_create` with the
standard could we end up with a coverage map based on the standard?
Using ELF notes means we do not have to manage the process by the
position of the source in the source tree.
> At some point, we might discuss covoar writing a neutral format
> and using Python to do more but that is pure conjecture.
I think this is real and important and not conjecture. The tool
generating HTML directly conflicts with the proposed parent wrapper,
`rtems-test`. The `rtems-test` tool's requirement is to export data in a
standard format like XML that can be imported in to a reporting tool to
generate HTML etc. A user can then decide if the HTML, ReST, SQL or
whatever meets their needs or they can take the XML and incorporate it
into their own workflow that meets their requirements. I would like to
see covar reports be XML and writing XML does not need a special
library, it is just print statements. Have a look at the RSB's XML
writer Sebastian added,
https://git.rtems.org/rtems-source-builder/tree/source-builder/sb/reports.py#n417.
We can use python to import the XML and generate the reports as it comes
with suitable XML support.
> I have
> no idea what the intermediate format would be. Writing Sphinx
> output for reports would be desirable from covoar. :)
XML.
Chris
More information about the devel
mailing list