Skip to content
This repository was archived by the owner on Sep 10, 2021. It is now read-only.

Commit 3bd3f65

Browse files
committed
Responding to review and fixing failing tests.
This includes a couple of pgsql workarounds and sql scripts.
1 parent 2e6c85e commit 3bd3f65

File tree

7 files changed

+246
-4
lines changed

7 files changed

+246
-4
lines changed

core/controllers/components/UtilityComponent.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ public function installModule($moduleName)
646646
try {
647647
$moduleModel->save($moduleDao);
648648
} catch (Zend_Db_Statement_Exception $e) {
649-
if ($e->getCode() === 23000) {
649+
if ($e->getCode() === 23000 || $e->getCode() === 23505) {
650650
$this->getLogger()->debug('Failed to install '.$moduleName.' due to integrity constraint violation.');
651651
} else {
652652
throw $e;

modules/tracker/configs/module.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ description = "Track scalar results over time"
66
category = "Visualization"
77
dependencies = api,scheduler
88
uuid = "3048a9fa-89ab-4e61-a55e-a49379fa6dc"
9-
version = "1.2.0"
9+
version = "1.2.1"
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
-- Midas Server. Copyright Kitware SAS. Licensed under the Apache License 2.0.
2+
3+
-- MySQL database for the tracker module, version 1.2.0
4+
5+
CREATE TABLE IF NOT EXISTS `tracker_producer` (
6+
`producer_id` bigint(20) NOT NULL AUTO_INCREMENT,
7+
`community_id` bigint(20) NOT NULL,
8+
`repository` varchar(255) NOT NULL,
9+
`executable_name` varchar(255) NOT NULL,
10+
`display_name` varchar(255) NOT NULL,
11+
`description` text NOT NULL,
12+
`revision_url` text NOT NULL,
13+
PRIMARY KEY (`producer_id`),
14+
KEY (`community_id`)
15+
) DEFAULT CHARSET=utf8;
16+
17+
CREATE TABLE IF NOT EXISTS `tracker_scalar` (
18+
`scalar_id` bigint(20) NOT NULL AUTO_INCREMENT,
19+
`trend_id` bigint(20) NOT NULL,
20+
`value` double,
21+
`producer_revision` varchar(255),
22+
`submit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
23+
`user_id` bigint(20) NOT NULL DEFAULT '-1',
24+
`submission_id` bigint(20) NOT NULL DEFAULT '-1',
25+
`official` tinyint(4) NOT NULL DEFAULT '1',
26+
`build_results_url` text NOT NULL,
27+
`branch` varchar(255) NOT NULL DEFAULT '',
28+
`params` text,
29+
`extra_urls` text,
30+
PRIMARY KEY (`scalar_id`),
31+
KEY (`trend_id`),
32+
KEY (`submit_time`),
33+
KEY (`user_id`),
34+
KEY (`submission_id`),
35+
KEY (`branch`)
36+
) DEFAULT CHARSET=utf8;
37+
38+
CREATE TABLE IF NOT EXISTS `tracker_submission` (
39+
`submission_id` bigint(20) NOT NULL AUTO_INCREMENT,
40+
`producer_id` bigint(20) NOT NULL,
41+
`name` varchar(255) NOT NULL DEFAULT '',
42+
`uuid` varchar(255) NOT NULL DEFAULT '',
43+
`submit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
44+
PRIMARY KEY (`submission_id`),
45+
UNIQUE KEY (`uuid`)
46+
) DEFAULT CHARSET=utf8;
47+
48+
CREATE TABLE IF NOT EXISTS `tracker_scalar2item` (
49+
`scalar_id` bigint(20) NOT NULL,
50+
`item_id` bigint(20) NOT NULL,
51+
`label` varchar(255) NOT NULL,
52+
KEY (`scalar_id`)
53+
) DEFAULT CHARSET=utf8;
54+
55+
CREATE TABLE IF NOT EXISTS `tracker_threshold_notification` (
56+
`threshold_id` bigint(20) NOT NULL AUTO_INCREMENT,
57+
`trend_id` bigint(20) NOT NULL,
58+
`value` double,
59+
`comparison` varchar(2),
60+
`action` varchar(80) NOT NULL,
61+
`recipient_id` bigint(20) NOT NULL,
62+
PRIMARY KEY (`threshold_id`),
63+
KEY (`trend_id`)
64+
) DEFAULT CHARSET=utf8;
65+
66+
CREATE TABLE IF NOT EXISTS `tracker_trend` (
67+
`trend_id` bigint(20) NOT NULL AUTO_INCREMENT,
68+
`producer_id` bigint(20) NOT NULL,
69+
`metric_name` varchar(255) NOT NULL,
70+
`display_name` varchar(255) NOT NULL,
71+
`unit` varchar(255) NOT NULL,
72+
`config_item_id` bigint(20),
73+
`test_dataset_id` bigint(20),
74+
`truth_dataset_id` bigint(20),
75+
`is_key_metric` boolean NOT NULL DEFAULT FALSE,
76+
PRIMARY KEY (`trend_id`),
77+
KEY (`producer_id`)
78+
) DEFAULT CHARSET=utf8;
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
-- Midas Server. Copyright Kitware SAS. Licensed under the Apache License 2.0.
2+
3+
-- PostgreSQL database for the tracker module, version 1.2.0
4+
5+
SET client_encoding = 'UTF8';
6+
SET default_with_oids = FALSE;
7+
8+
CREATE TABLE IF NOT EXISTS "tracker_producer" (
9+
"producer_id" serial PRIMARY KEY,
10+
"community_id" bigint NOT NULL,
11+
"repository" character varying(255) NOT NULL,
12+
"executable_name" character varying(255) NOT NULL,
13+
"display_name" character varying(255) NOT NULL,
14+
"description" text NOT NULL,
15+
"revision_url" text NOT NULL
16+
);
17+
18+
CREATE INDEX "tracker_producer_community_id" ON "tracker_producer" ("community_id");
19+
20+
CREATE TABLE IF NOT EXISTS "tracker_scalar" (
21+
"scalar_id" serial PRIMARY KEY,
22+
"trend_id" bigint NOT NULL,
23+
"value" double precision,
24+
"producer_revision" character varying(255),
25+
"submit_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
26+
"user_id" bigint NOT NULL DEFAULT -1::bigint,
27+
"submission_id" bigint NOT NULL DEFAULT -1::bigint,
28+
"official" smallint NOT NULL DEFAULT 1::smallint,
29+
"build_results_url" text NOT NULL,
30+
"branch" character varying(255) NOT NULL DEFAULT ''::character varying,
31+
"params" text,
32+
"extra_urls" text
33+
);
34+
35+
CREATE INDEX "tracker_scalar_trend_id" ON "tracker_scalar" ("trend_id");
36+
CREATE INDEX "tracker_scalar_submit_time" ON "tracker_scalar" ("submit_time");
37+
CREATE INDEX "tracker_scalar_idx_branch" ON "tracker_scalar" ("branch");
38+
CREATE INDEX "tracker_scalar_idx_user_id" ON "tracker_scalar" ("user_id");
39+
40+
CREATE TABLE IF NOT EXISTS "tracker_submission" (
41+
"submission_id" serial PRIMARY KEY,
42+
"producer_id" bigint,
43+
"name" character varying(255) NOT NULL DEFAULT ''::character varying,
44+
"uuid" character varying(255) NOT NULL DEFAULT ''::character varying,
45+
"submit_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
46+
);
47+
CREATE UNIQUE INDEX "tracker_submission_uuid" ON "tracker_submission" ("uuid");
48+
CREATE INDEX "tracker_submission_submit_time" ON "tracker_submission" ("submit_time");
49+
50+
CREATE TABLE IF NOT EXISTS "tracker_scalar2item" (
51+
"id" serial PRIMARY KEY,
52+
"scalar_id" bigint NOT NULL,
53+
"item_id" bigint NOT NULL,
54+
"label" character varying(255) NOT NULL
55+
);
56+
57+
CREATE INDEX "tracker_scalar2item_scalar_id" ON "tracker_scalar2item" ("scalar_id");
58+
59+
CREATE TABLE IF NOT EXISTS "tracker_threshold_notification" (
60+
"threshold_id" serial PRIMARY KEY,
61+
"trend_id" bigint NOT NULL,
62+
"value" double precision,
63+
"comparison" character varying(2),
64+
"action" character varying(80) NOT NULL,
65+
"recipient_id" bigint NOT NULL
66+
);
67+
68+
CREATE INDEX "tracker_threshold_notification_trend_id" ON "tracker_threshold_notification" ("trend_id");
69+
70+
CREATE TABLE IF NOT EXISTS "tracker_trend" (
71+
"trend_id" serial PRIMARY KEY,
72+
"producer_id" bigint NOT NULL,
73+
"metric_name" character varying(255) NOT NULL,
74+
"display_name" character varying(255) NOT NULL,
75+
"unit" character varying(255) NOT NULL,
76+
"config_item_id" bigint,
77+
"test_dataset_id" bigint,
78+
"truth_dataset_id" bigint,
79+
is_key_metric boolean NOT NULL DEFAULT FALSE
80+
);
81+
82+
CREATE INDEX "tracker_trend_producer_id" ON "tracker_trend" ("producer_id");
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
-- Midas Server. Copyright Kitware SAS. Licensed under the Apache License 2.0.
2+
3+
-- SQLite database for the tracker module, version 1.2.0
4+
5+
CREATE TABLE IF NOT EXISTS "tracker_producer" (
6+
"producer_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
7+
"community_id" INTEGER NOT NULL,
8+
"repository" TEXT NOT NULL,
9+
"executable_name" TEXT NOT NULL,
10+
"display_name" TEXT NOT NULL,
11+
"description" TEXT NOT NULL,
12+
"revision_url" TEXT NOT NULL
13+
);
14+
15+
CREATE INDEX IF NOT EXISTS "tracker_producer_community_id_idx" ON "tracker_producer" ("community_id");
16+
17+
CREATE TABLE IF NOT EXISTS "tracker_scalar" (
18+
"scalar_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
19+
"trend_id" INTEGER NOT NULL,
20+
"value" REAL,
21+
"producer_revision" TEXT,
22+
"submit_time" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
23+
"user_id" INTEGER NOT NULL DEFAULT -1,
24+
"submission_id" INTEGER NOT NULL DEFAULT -1,
25+
"official" INTEGER NOT NULL DEFAULT 1,
26+
"build_results_url" TEXT NOT NULL,
27+
"branch" TEXT NOT NULL DEFAULT '',
28+
"params" TEXT,
29+
"extra_urls" TEXT
30+
);
31+
32+
CREATE INDEX IF NOT EXISTS "tracker_scalar_trend_id_idx" ON "tracker_scalar" ("trend_id");
33+
CREATE INDEX IF NOT EXISTS "tracker_scalar_submit_time_idx" ON "tracker_scalar" ("submit_time");
34+
CREATE INDEX IF NOT EXISTS "tracker_scalar_branch_idx" ON "tracker_scalar" ("branch");
35+
CREATE INDEX IF NOT EXISTS "tracker_scalar_user_id_idx" ON "tracker_scalar" ("user_id");
36+
37+
38+
CREATE TABLE IF NOT EXISTS "tracker_submission" (
39+
"submission_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
40+
"producer_id" INTEGER NOT NULL,
41+
"name" TEXT NOT NULL DEFAULT '',
42+
"uuid" TEXT NOT NULL DEFAULT '',
43+
"submit_time" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
44+
);
45+
CREATE UNIQUE INDEX IF NOT EXISTS "tracker_submission_uuid_idx" ON "tracker_submission" ("uuid");
46+
CREATE INDEX IF NOT EXISTS "tracker_submission_submit_time_idx" ON "tracker_submission" ("submit_time");
47+
48+
49+
CREATE TABLE IF NOT EXISTS "tracker_scalar2item" (
50+
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
51+
"scalar_id" INTEGER NOT NULL,
52+
"item_id" INTEGER NOT NULL,
53+
"label" TEXT NOT NULL
54+
);
55+
56+
CREATE INDEX IF NOT EXISTS "tracker_scalar2item_scalar_id_idx" ON "tracker_scalar2item" ("scalar_id");
57+
58+
CREATE TABLE IF NOT EXISTS "tracker_threshold_notification" (
59+
"threshold_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
60+
"trend_id" INTEGER NOT NULL,
61+
"value" REAL,
62+
"comparison" TEXT,
63+
"action" TEXT NOT NULL,
64+
"recipient_id" INTEGER NOT NULL
65+
);
66+
67+
CREATE INDEX IF NOT EXISTS "tracker_threshold_notification_trend_id_idx" ON "tracker_threshold_notification" ("trend_id");
68+
69+
CREATE TABLE IF NOT EXISTS "tracker_trend" (
70+
"trend_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
71+
"producer_id" INTEGER NOT NULL,
72+
"metric_name" TEXT NOT NULL,
73+
"display_name" TEXT NOT NULL,
74+
"unit" TEXT NOT NULL,
75+
"config_item_id" INTEGER,
76+
"test_dataset_id" INTEGER,
77+
"truth_dataset_id" INTEGER,
78+
"is_key_metric" BOOLEAN NOT NULL DEFAULT FALSE
79+
);
80+
81+
CREATE INDEX IF NOT EXISTS "tracker_trend_producer_id_idx" ON "tracker_trend" ("producer_id");

modules/tracker/models/base/TrendModelBase.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ public function createIfNeeded($producerId, $metricName, $configItemId, $testDat
169169
$trendDao->setTruthDatasetId($truthDatasetId);
170170
}
171171

172-
$trendDao->setIsKeyMetric(false);
172+
// Our pgsql code can't handle ACTUAL booleans :deep_sigh:
173+
$trendDao->setIsKeyMetric('false');
173174

174175
$this->save($trendDao);
175176
}

modules/tracker/models/pdo/TrendModel.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public function getTrendsGroupByDatasets($producerDao, $onlyKey = false)
146146
'test_dataset_id' => $row['test_dataset_id'],
147147
'truth_dataset_id' => $row['truth_dataset_id'],
148148
);
149-
if ($onlyKey) {
149+
if ($onlyKey !== false) {
150150
$queryParams['is_key_metric'] = true;
151151
}
152152
$result['trends'] = $this->getAllByParams($queryParams);

0 commit comments

Comments
 (0)