So I’ve just arrived back from a packed two weeks in Brno, and I’ll probably have some more stuff to post soon. But let’s lead with some big news!
One of the big topics at Devconf and around the RH offices was the ongoing effort to modernize both Fedora and RHEL’s overall build processes to be more flexible and involve a lot more testing (or, as some people may have put it, “CI CI CI”). A lot of folks wearing a lot of hats are involved in different bits of this effort, but one thing that seems to stay constant is that ResultsDB will play a significant role.
ResultsDB started life as the result storage engine for AutoQA, and the concept and name was preserved as AutoQA was replaced by Taskotron. Its current version, however, is designed to be a scalable, capable and generic store for test results from any test system, not just Taskotron. Up until last week, though, we’d never quite got around to hooking up any other systems to it to demonstrate this.
Well, that’s all changed now! In the course of three days, Jan Sedlak and I got both Fedora’s openQA instance and Autocloud reporting to ResultsDB. As results come out of both those systems, fedmsg consumers take the results, process them into a common format, and forward them to ResultsDB. This means there are groups with results from both systems for the same compose together, and you’ll find metadata in very similar format attached to the results from both systems. This is all deployed in production right now – the results from every daily compose from both openQA and Autocloud are being forwarded smoothly to ResultsDB.
To aid in this effort I wrote a thing we’re calling resultsdb_conventions for now. I think of it as being a code representation of some ‘conventions’ for formatting and organizing results in ResultsDB, as well as a tool for conveniently reporting results in line with those conventions. The attraction of ResultsDB is that it’s very little more than a RESTful API for a database; it enforces a pretty bare minimum in terms of required data for each result. A result must provide only a test name, an ‘item’ that was tested, and a status (‘outcome’) from a choice of four. ResultsDB allows a result to include as much more data as it likes, in the form of a freeform key:value data store, but it does not require any extra data to be provided, or impose any policy on its form.
This makes ResultsDB flexible, but also means we will need to establish conventions where appropriate to ensure related results can be conveniently located and reasoned about.
resultsdb_conventions is my initial contribution to this effort, originally written just to reduce duplication between the openQA and Autocloud result submitters and ensure they used a common layout, but intended to perhaps cover far more use cases in the future.
Having this data in ResultsDB is likely to be practically useful either immediately or in the very near future, but we’re also hoping it acts as a demonstration that using ResultsDB to consolidate results from multiple test sources is not only possible but quite easy. And I’m hoping
resultsdb_conventions can be a starting point for a discussion and some consensus around what metadata we provide, and in what format, for various types of result. If all goes well, we’re hoping to hook up manual test result submission to ResultsDB next, via the
relval-ng project that’s had some discussion on the QA mailing lists. Stay tuned for more on that!