| -- 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'); |