New FATE Database Format

First, I should announce that I finally fixed the the problem I introduced during last month’s big FATE rework in which the stdout/stderr blobs were not making it all the way into the MySQL database. I don’t know how that escaped notice during my initial testing. It works again, and after only 3 evenings of analysis and debugging.

Moving right along, I have also made good on my intention to move FATE’s test database format from a pickled Python blob to an SQLite database. You can download the current database of test specs at:

http://fate.multimedia.cx/fate-tests.sqlite.bz2

Run the file through bunzip2, install SQLite, either through your system’s package manager or from sqlite.org, and run:

  $ sqlite3 fate-tests.sqlite

Be sure to use ‘sqlite3’ vs. ‘sqlite’; the latter invokes v2 of the program.

First things first, study the schema:

sqlite> .schema
CREATE TABLE test_spec
        (
          id INTEGER,
          short_name TEXT,
          command TEXT,
          description TEXT,
          expected_status INTEGER,
          expected_stdout TEXT,
          timeout_seconds INTEGER,
          active INTEGER
        );

And then formulate queries. As an example, get a list of all the tests (short name and command) that are presently disabled:

sqlite>
  SELECT short_name, command 
  FROM test_spec 
  WHERE active=0;

You should find that the list matches up with the red boxes in the master FATE test list.

I hope some people find this useful.