blob: 0a34a1e69c5657d45a6a19d7372025aa4c551f2d [file] [log] [blame]
-- drop all views (since they depend on some or all of the following tables)
DROP VIEW IF EXISTS test_view;
-- kernel versions
DROP SEQUENCE IF EXISTS kernel_idx_seq;
CREATE SEQUENCE kernel_idx_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
DROP TABLE IF EXISTS kernels;
CREATE TABLE kernels (
kernel_idx int NOT NULL DEFAULT nextval('kernel_idx_seq'::TEXT) PRIMARY KEY,
kernel_hash TEXT, -- Hash of base + all patches
base TEXT, -- Base version without patches
printable TEXT -- Full version with patches
);
-- main jobs table
DROP SEQUENCE IF EXISTS machine_idx_seq;
CREATE SEQUENCE machine_idx_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
DROP TABLE IF EXISTS machines;
CREATE TABLE machines (
machine_idx int NOT NULL DEFAULT nextval('machine_idx_seq'::TEXT) PRIMARY KEY,
hostname TEXT, -- hostname
machine_group TEXT, -- group name
owner TEXT -- owner name
);
-- main jobs table
DROP SEQUENCE IF EXISTS job_idx_seq;
CREATE SEQUENCE job_idx_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
DROP TABLE IF EXISTS jobs;
CREATE TABLE jobs (
job_idx int NOT NULL DEFAULT nextval('job_idx_seq'::TEXT) PRIMARY KEY,
tag TEXT, -- job key
label TEXT, -- job label assigned by user
username TEXT, -- user name
machine_idx int -- reference to machine table
);
-- One entry per patch used, anywhere
DROP TABLE IF EXISTS patches;
CREATE TABLE patches (
kernel_idx INTEGER, -- index number
name TEXT, -- short name
url TEXT, -- full URL
hash TEXT
);
-- test functional results
DROP SEQUENCE IF EXISTS test_idx_seq;
CREATE SEQUENCE test_idx_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
DROP TABLE IF EXISTS tests;
CREATE TABLE tests (
test_idx int NOT NULL DEFAULT nextval('test_idx_seq'::TEXT) PRIMARY KEY,
job_idx INTEGER, -- ref to job table
test TEXT, -- name of test
subdir TEXT, -- subdirectory name
kernel_idx INTEGER, -- kernel test was AGAINST
status INTEGER, -- test status
reason TEXT, -- reason for test status
machine_idx int -- reference to machine table
);
-- test functional results
DROP TABLE IF EXISTS test_attributes;
CREATE TABLE test_attributes (
test_idx INTEGER, -- ref to test table
attribute TEXT, -- attribute name (e.g. 'throughput')
value TEXT -- attribute value
);
-- test functional results
DROP TABLE IF EXISTS iteration_result;
CREATE TABLE iteration_result(
test_idx INTEGER, -- ref to test table
iteration INTEGER, -- integer
attribute TEXT, -- attribute name (e.g. 'throughput')
value FLOAT -- attribute value (eg 700.1)
);
-- status key
DROP SEQUENCE IF EXISTS status_idx_seq;
CREATE SEQUENCE status_idx_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
DROP TABLE IF EXISTS status;
CREATE TABLE status (
status_idx int NOT NULL DEFAULT nextval('status_idx_seq'::TEXT) PRIMARY KEY,
word TEXT -- status word
);
-- BRRD syncronization
DROP TABLE IF EXISTS brrd_sync;
CREATE TABLE brrd_sync (
test_idx INTEGER -- ref to test table
);
-- test_view (to make life easier for people trying to mine data)
CREATE VIEW test_view AS
SELECT tests.test_idx, tests.job_idx, tests.test, tests.subdir,
tests.kernel_idx, tests.status, tests.reason, jobs.machine_idx,
jobs.tag, jobs.label, jobs.username, machines.hostname,
machines.machine_group, machines.owner, kernels.kernel_hash,
kernels.base, kernels.printable
FROM tests
INNER JOIN jobs ON jobs.job_idx = tests.job_idx
INNER JOIN machines ON machines.machine_idx = jobs.machine_idx
INNER JOIN kernels ON kernels.kernel_idx = tests.kernel_idx;
INSERT INTO status (word) VALUES ('NOSTATUS');
INSERT INTO status (word) VALUES ('ERROR');
INSERT INTO status (word) VALUES ('ABORT');
INSERT INTO status (word) VALUES ('FAIL');
INSERT INTO status (word) VALUES ('WARN');
INSERT INTO status (word) VALUES ('GOOD');
INSERT INTO status (word) VALUES ('ALERT');