summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuha Sippola <juhasippola@outlook.com>2015-06-25 16:21:15 +0300
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-08-04 10:38:26 +0000
commit7e66ceb73fce9bdd1bbe5a15f55bc1831aad08fd (patch)
treef614ce50e19ce2089fd264b1331d49ceae09d422
parent0347794ba954fae6f9e3d5c4d08c21d5c995cfd4 (diff)
Qt metrics 2 (v0.3): Database table field changes
Changed project_run.build_number to project_run.build_key and its type from int to varchar(256) as new-CI uses sha1s for that. Changed testset_run.testcases_xxx to testset_run.total_xxx for consistent use of terms. Change-Id: Ifb9d931d5a35479b26a906586a7cc397cbb85d9c Reviewed-by: Tony Sarajärvi <tony.sarajarvi@digia.com>
-rw-r--r--non-puppet/qtmetrics2/src/Database.php60
-rw-r--r--non-puppet/qtmetrics2/src/ProjectRun.php24
-rw-r--r--non-puppet/qtmetrics2/src/TestsetRun.php10
-rw-r--r--non-puppet/qtmetrics2/src/test/DatabaseTest.php46
-rw-r--r--non-puppet/qtmetrics2/templates/about.php4
-rw-r--r--non-puppet/qtmetrics2/testparser.pl34
6 files changed, 90 insertions, 88 deletions
diff --git a/non-puppet/qtmetrics2/src/Database.php b/non-puppet/qtmetrics2/src/Database.php
index c54268e..9f9999c 100644
--- a/non-puppet/qtmetrics2/src/Database.php
+++ b/non-puppet/qtmetrics2/src/Database.php
@@ -34,8 +34,8 @@
/**
* Database class
- * @version 0.2
- * @since 11-06-2015
+ * @version 0.3
+ * @since 16-06-2015
* @author Juha Sippola
*/
@@ -180,22 +180,24 @@ class Database {
}
/**
- * Get the latest build number for given project, branch and state
+ * Get the latest build key for given project, branch and state
* @param string $project
* @param string $branch
* @param string $state
- * @return int
+ * @return string
*/
- public function getLatestProjectBranchBuildNumber($project, $branch, $state)
+ public function getLatestProjectBranchBuildKey($project, $branch, $state)
{
$result = array();
$query = $this->db->prepare("
- SELECT max(build_number) AS latest_build
+ SELECT build_key AS latest_build
FROM project_run
WHERE
project_id = (SELECT id FROM project WHERE name = ?) AND
branch_id = (SELECT id FROM branch WHERE name = ?) AND
state_id = (SELECT id FROM state WHERE name = ?)
+ ORDER BY timestamp DESC
+ LIMIT 1
");
$query->execute(array(
$project,
@@ -209,32 +211,24 @@ class Database {
}
/**
- * Get the latest build numbers by branch for given project and state
+ * Get the latest build keys by branch for given project and state
* @param string $project
* @param string $state
- * @return array (string name, int number)
+ * @return array (string name, string key)
*/
- public function getLatestProjectBranchBuildNumbers($project, $state)
+ public function getLatestProjectBranchBuildKeys($project, $state)
{
$result = array();
- $query = $this->db->prepare("
- SELECT branch.name, max(build_number) AS latest_build
- FROM project_run
- INNER JOIN branch ON branch_id = branch.id
- WHERE
- project_id = (SELECT id FROM project WHERE name = ?) AND
- state_id = (SELECT id FROM state WHERE name = ?)
- GROUP BY branch_id
- ");
- $query->execute(array(
- $project,
- $state
- ));
- while($row = $query->fetch(PDO::FETCH_ASSOC)) {
- $result[] = array(
- 'name' => $row['name'],
- 'number' => $row['latest_build']
- );
+
+ $branches = self::getBranches();
+ foreach ($branches as $branch) {
+ $key = self::getLatestProjectBranchBuildKey($project, $branch['name'], $state);
+ if ($key) {
+ $result[] = array(
+ 'name' => $branch['name'],
+ 'key' => $key
+ );
+ }
}
return $result;
}
@@ -248,7 +242,7 @@ class Database {
public function getLatestProjectBranchBuildResults($project, $state)
{
$result = array();
- $builds = self::getLatestProjectBranchBuildNumbers($project, $state);
+ $builds = self::getLatestProjectBranchBuildKeys($project, $state);
foreach ($builds as $build) {
$query = $this->db->prepare("
SELECT branch.name, project_run.result
@@ -258,13 +252,13 @@ class Database {
project_id = (SELECT id FROM project WHERE name = ?) AND
state_id = (SELECT id FROM state WHERE name = ?) AND
branch_id = (SELECT id FROM branch WHERE name = ?) AND
- build_number = ?;
+ build_key = ?;
");
$query->execute(array(
$project,
$state,
$build['name'],
- $build['number']
+ $build['key']
));
while($row = $query->fetch(PDO::FETCH_ASSOC)) {
$result[] = array(
@@ -287,7 +281,7 @@ class Database {
public function getLatestTestsetConfBuildResults($testset, $testsetProject, $runProject, $runState)
{
$result = array();
- $builds = self::getLatestProjectBranchBuildNumbers($runProject, $runState);
+ $builds = self::getLatestProjectBranchBuildKeys($runProject, $runState);
foreach ($builds as $build) {
$query = $this->db->prepare("
SELECT conf.name AS conf, branch.name AS branch, testset_run.result
@@ -301,7 +295,7 @@ class Database {
project_run.project_id = (SELECT id FROM project WHERE name = ?) AND
project_run.state_id = (SELECT id FROM state WHERE name = ?) AND
project_run.branch_id = (SELECT id from branch WHERE name = ?) AND
- project_run.build_number = ?;
+ project_run.build_key = ?;
");
$query->execute(array(
$testset,
@@ -309,7 +303,7 @@ class Database {
$runProject,
$runState,
$build['name'],
- $build['number']
+ $build['key']
));
while($row = $query->fetch(PDO::FETCH_ASSOC)) {
$result[] = array(
diff --git a/non-puppet/qtmetrics2/src/ProjectRun.php b/non-puppet/qtmetrics2/src/ProjectRun.php
index 4d2fdf4..26fb995 100644
--- a/non-puppet/qtmetrics2/src/ProjectRun.php
+++ b/non-puppet/qtmetrics2/src/ProjectRun.php
@@ -34,8 +34,8 @@
/**
* ProjectRun class
- * @version 0.1
- * @since 07-05-2015
+ * @version 0.2
+ * @since 12-05-2015
* @author Juha Sippola
*/
@@ -69,10 +69,10 @@ class ProjectRun {
private $stateName;
/**
- * Build number.
- * @var int
+ * Build key.
+ * @var string
*/
- private $buildNumber;
+ private $buildKey;
/**
* Build result.
@@ -98,17 +98,17 @@ class ProjectRun {
* @param string $projectName
* @param string $branchName
* @param string $stateName
- * @param int $buildNumber
+ * @param int $buildKey
* @param string $result
* @param int $timestamp
* @param int $duration
*/
- public function __construct($projectName, $branchName, $stateName, $buildNumber, $result, $timestamp, $duration)
+ public function __construct($projectName, $branchName, $stateName, $buildKey, $result, $timestamp, $duration)
{
$this->projectName = $projectName;
$this->branchName = $branchName;
$this->stateName = $stateName;
- $this->buildNumber = $buildNumber;
+ $this->buildKey = $buildKey;
$this->result = $result;
$this->timestamp = $timestamp;
$this->duration = $duration;
@@ -151,12 +151,12 @@ class ProjectRun {
}
/**
- * Get build number.
- * @return int
+ * Get build key.
+ * @return string
*/
- public function getBuildNumber()
+ public function getBuildKey()
{
- return $this->buildNumber;
+ return $this->buildKey;
}
/**
diff --git a/non-puppet/qtmetrics2/src/TestsetRun.php b/non-puppet/qtmetrics2/src/TestsetRun.php
index 1f759d6..9f5f198 100644
--- a/non-puppet/qtmetrics2/src/TestsetRun.php
+++ b/non-puppet/qtmetrics2/src/TestsetRun.php
@@ -34,8 +34,8 @@
/**
* TestsetRun class
- * @version 0.1
- * @since 06-06-2015
+ * @version 0.2
+ * @since 12-06-2015
* @author Juha Sippola
*/
@@ -80,7 +80,7 @@ class TestsetRun extends ProjectRun {
* @param string $projectName
* @param string $branchName
* @param string $stateName
- * @param int $buildNumber
+ * @param int $buildKey
* @param string $configurationName
* @param int $run (ordinal number)
* @param string $result (plain result without any possible flags)
@@ -88,8 +88,8 @@ class TestsetRun extends ProjectRun {
* @param int $timestamp
* @param int $duration
*/
- public function __construct($name, $projectName, $branchName, $stateName, $buildNumber, $confName, $run, $result, $insignificant, $timestamp, $duration) {
- parent::__construct($projectName, $branchName, $stateName, $buildNumber, $result, $timestamp, $duration);
+ public function __construct($name, $projectName, $branchName, $stateName, $buildKey, $confName, $run, $result, $insignificant, $timestamp, $duration) {
+ parent::__construct($projectName, $branchName, $stateName, $buildKey, $result, $timestamp, $duration);
$this->name = $name;
$this->confName = $confName;
$this->run = $run;
diff --git a/non-puppet/qtmetrics2/src/test/DatabaseTest.php b/non-puppet/qtmetrics2/src/test/DatabaseTest.php
index 680b101..98b854c 100644
--- a/non-puppet/qtmetrics2/src/test/DatabaseTest.php
+++ b/non-puppet/qtmetrics2/src/test/DatabaseTest.php
@@ -38,8 +38,8 @@ require_once(__DIR__.'/../Factory.php');
* Database unit test class
* Some of the tests require the test data as inserted into database with qtmetrics_insert.sql
* @example To run (in qtmetrics root directory): php <path-to-phpunit>/phpunit.phar ./src/test
- * @version 0.2
- * @since 10-06-2015
+ * @version 0.3
+ * @since 15-06-2015
* @author Juha Sippola
*/
@@ -198,45 +198,53 @@ class DatabaseTest extends PHPUnit_Framework_TestCase
}
/**
- * Test getLatestProjectBranchBuildNumbers
- * @dataProvider testGetLatestProjectBranchBuildNumbersData
+ * Test getLatestProjectBranchBuildKeys
+ * @dataProvider testGetLatestProjectBranchBuildKeysData
*/
- public function testGetLatestProjectBranchBuildNumbers($project, $state, $exp_branch, $exp_build_number_min)
+ public function testGetLatestProjectBranchBuildKeys($project, $state, $exp_branch, $exp_build_key)
{
$branches = array();
$db = Factory::db();
- $result = $db->getLatestProjectBranchBuildNumbers($project, $state);
+ $result = $db->getLatestProjectBranchBuildKeys($project, $state);
$this->assertNotEmpty($result);
foreach($result as $row) {
- $this->assertArrayHasKey('name', $row);
- $this->assertArrayHasKey('number', $row);
- $this->assertGreaterThan($exp_build_number_min, $row['number']);
- $branches[] = $row['name'];
+ if ($row['name'] == $exp_branch) {
+ $this->assertArrayHasKey('name', $row);
+ $this->assertArrayHasKey('key', $row);
+ $this->assertEquals($exp_build_key, $row['key']);
+ $branches[] = $row['name'];
+ }
}
$this->assertContains($exp_branch, $branches);
}
- public function testGetLatestProjectBranchBuildNumbersData()
+ public function testGetLatestProjectBranchBuildKeysData()
{
return array(
- array('Qt5', 'state', 'dev', 100) // Assuming any dev build has number > 100
+ array('Qt5', 'state', 'master', '4777'), // based on test data
+ array('Qt5', 'state', 'dev', 'BuildKeyInStringFormat12345'),
+ array('Qt5', 'state', 'release', '157'),
+ array('Qt5', 'state', 'stable', '1348')
);
}
/**
- * Test getLatestProjectBranchBuildNumber
- * @dataProvider testGetLatestProjectBranchBuildNumberData
+ * Test getLatestProjectBranchBuildKey
+ * @dataProvider testGetLatestProjectBranchBuildKeyData
*/
- public function testGetLatestProjectBranchBuildNumber($project, $branch, $state, $exp_build_number_min)
+ public function testGetLatestProjectBranchBuildKey($project, $branch, $state, $exp_build_key)
{
$db = Factory::db();
- $result = $db->getLatestProjectBranchBuildNumber($project, $branch, $state);
+ $result = $db->getLatestProjectBranchBuildKey($project, $branch, $state);
$this->assertNotEmpty($result);
- $this->assertGreaterThan($exp_build_number_min, $result);
+ $this->assertEquals($exp_build_key, $result);
}
- public function testGetLatestProjectBranchBuildNumberData()
+ public function testGetLatestProjectBranchBuildKeyData()
{
return array(
- array('Qt5', 'dev', 'state', 100) // Assuming any dev build has number > 100
+ array('Qt5', 'master', 'state', '4777'), // based on test data
+ array('Qt5', 'dev', 'state', 'BuildKeyInStringFormat12345'),
+ array('Qt5', 'release', 'state', '157'),
+ array('Qt5', 'stable', 'state', '1348')
);
}
diff --git a/non-puppet/qtmetrics2/templates/about.php b/non-puppet/qtmetrics2/templates/about.php
index b1dfb4d..2b8d627 100644
--- a/non-puppet/qtmetrics2/templates/about.php
+++ b/non-puppet/qtmetrics2/templates/about.php
@@ -34,7 +34,7 @@
/**
* About window content
- * @version 0.2
+ * @version 0.3
* @since 16-06-2015
* @author Juha Sippola
*/
@@ -44,4 +44,4 @@
<p>This is Qt Metrics revision 2 with redesigned UI and database.</p>
<p>These pages are still <strong>under construction</strong> and therefore the views and functionality is limited.</p>
<p>See the <a href="https://wiki.qt.io/Qt_Metrics_2_Backlog" target="_blank">backlog</a> for development items currently identified or in progress.</p>
-<p><small>Version 0.2 (16-Jun-2015)</small></p>
+<p><small>Version 0.3 (16-Jun-2015)</small></p>
diff --git a/non-puppet/qtmetrics2/testparser.pl b/non-puppet/qtmetrics2/testparser.pl
index b947610..31daad4 100644
--- a/non-puppet/qtmetrics2/testparser.pl
+++ b/non-puppet/qtmetrics2/testparser.pl
@@ -1175,11 +1175,11 @@ sub sql_create_tables
project_id TINYINT UNSIGNED NOT NULL,
branch_id TINYINT UNSIGNED NOT NULL,
state_id TINYINT UNSIGNED NOT NULL,
- build_number MEDIUMINT UNSIGNED NOT NULL,
+ build_key VARCHAR(256) NOT NULL,
result ENUM('SUCCESS','FAILURE','ABORTED') NOT NULL,
timestamp TIMESTAMP NOT NULL,
duration TIME NOT NULL,
- UNIQUE INDEX unique_project_run (project_id,branch_id,state_id,build_number),
+ UNIQUE INDEX unique_project_run (project_id,branch_id,state_id,build_key),
CONSTRAINT project_run_pk PRIMARY KEY (id)
) ENGINE MyISAM"
);
@@ -1251,10 +1251,10 @@ sub sql_create_tables
run TINYINT UNSIGNED NOT NULL,
result ENUM('passed','failed','ipassed','ifailed') NOT NULL,
duration SMALLINT UNSIGNED NOT NULL,
- testcases_passed SMALLINT UNSIGNED NOT NULL,
- testcases_failed SMALLINT UNSIGNED NOT NULL,
- testcases_skipped SMALLINT UNSIGNED NOT NULL,
- testcases_blacklisted SMALLINT UNSIGNED NOT NULL,
+ total_passed SMALLINT UNSIGNED NOT NULL,
+ total_failed SMALLINT UNSIGNED NOT NULL,
+ total_skipped SMALLINT UNSIGNED NOT NULL,
+ total_blacklisted SMALLINT UNSIGNED NOT NULL,
CONSTRAINT testset_run_pk PRIMARY KEY (id)
) ENGINE MyISAM"
);
@@ -1302,7 +1302,7 @@ sub sql
WHERE project.name = \"$projectname\" AND
branch.name = \"$branchname\" AND
state.name = \"$statename\" AND
- project_run.build_number = $datahash{BUILD_NUMBER}
+ project_run.build_key = $datahash{BUILD_NUMBER}
)";
print "$query\n" if $VERBOSE or $output;
$dbh->do ($query) or print "removal of old data in phase_run failed: $!\n" if !$output;
@@ -1321,7 +1321,7 @@ sub sql
WHERE project.name = \"$projectname\" AND
branch.name = \"$branchname\" AND
state.name = \"$statename\" AND
- project_run.build_number = $datahash{BUILD_NUMBER}
+ project_run.build_key = $datahash{BUILD_NUMBER}
)";
print "$query\n" if $VERBOSE or $output;
$dbh->do ($query) or print "removal of old data in testrow_run failed: $!\n" if !$output;
@@ -1339,7 +1339,7 @@ sub sql
WHERE project.name = \"$projectname\" AND
branch.name = \"$branchname\" AND
state.name = \"$statename\" AND
- project_run.build_number = $datahash{BUILD_NUMBER}
+ project_run.build_key = $datahash{BUILD_NUMBER}
)";
print "$query\n" if $VERBOSE or $output;
$dbh->do ($query) or print "removal of old data in testfunction_run failed: $!\n" if !$output;
@@ -1356,7 +1356,7 @@ sub sql
WHERE project.name = \"$projectname\" AND
branch.name = \"$branchname\" AND
state.name = \"$statename\" AND
- project_run.build_number = $datahash{BUILD_NUMBER}
+ project_run.build_key = $datahash{BUILD_NUMBER}
)";
print "$query\n" if $VERBOSE or $output;
$dbh->do ($query) or print "removal of old data in testset_run failed: $!\n" if !$output;
@@ -1369,7 +1369,7 @@ sub sql
WHERE project_run.project_id = (SELECT id FROM project WHERE name = \"$projectname\") AND
project_run.branch_id = (SELECT id FROM branch WHERE name = \"$branchname\") AND
project_run.state_id = (SELECT id FROM state WHERE name = \"$statename\") AND
- project_run.build_number = $datahash{BUILD_NUMBER}
+ project_run.build_key = $datahash{BUILD_NUMBER}
)";
print "$query\n" if $VERBOSE or $output;
$dbh->do ($query) or print "removal of old data in conf_run failed: $!\n" if !$output;
@@ -1379,7 +1379,7 @@ sub sql
WHERE project_id = (SELECT project.id FROM project WHERE project.name = \"$projectname\") AND
branch_id = (SELECT branch.id FROM branch WHERE branch.name = \"$branchname\") AND
state_id = (SELECT state.id FROM state WHERE state.name = \"$statename\") AND
- build_number = $datahash{BUILD_NUMBER}";
+ build_key = $datahash{BUILD_NUMBER}";
print "$query\n" if $VERBOSE or $output;
$dbh->do ($query) or print "removal of old data in project_run failed: $!\n" if !$output;
@@ -1424,7 +1424,7 @@ sub sql
}
my $query =
- "INSERT INTO project_run (project_id, branch_id, state_id, build_number, result, timestamp, duration)
+ "INSERT INTO project_run (project_id, branch_id, state_id, build_key, result, timestamp, duration)
SELECT project.id, branch.id, state.id, $datahash{BUILD_NUMBER}, \"$datahash{RESULT}\", $timestamp, $duration
FROM project, branch, state
WHERE project.name = \"$projectname\" AND
@@ -1505,7 +1505,7 @@ sub sql
project_run.project_id = (SELECT id FROM project WHERE name = \"$projectname\") AND
project_run.branch_id = (SELECT id FROM branch WHERE name = \"$branchname\") AND
project_run.state_id = (SELECT id FROM state WHERE name = \"$statename\") AND
- project_run.build_number = $datahash{BUILD_NUMBER}";
+ project_run.build_key = $datahash{BUILD_NUMBER}";
print OUTPUT "$query\n" if $VERBOSE or $output;
$dbh->do ($query) or print "insert into conf_run failed: $!\n" if !$output;
@@ -1540,7 +1540,7 @@ sub sql
}
# testset is connected to its parent project (e.g. QtConnectivity) while testset_run to project where run (e.g. Qt5)
my $query =
- "INSERT INTO testset_run (testset_id, conf_run_id, run, result, duration, testcases_passed, testcases_failed, testcases_skipped, testcases_blacklisted)
+ "INSERT INTO testset_run (testset_id, conf_run_id, run, result, duration, total_passed, total_failed, total_skipped, total_blacklisted)
SELECT testset.id,
conf_run.id,
$datahash{cfg}{$cfg}{testresults}{all_tests}{$test}{runs},
@@ -1562,7 +1562,7 @@ sub sql
INNER JOIN branch ON project_run.branch_id = branch.id
INNER JOIN state ON project_run.state_id = state.id
WHERE conf.name = \"$cfg\" AND
- project_run.build_number = $datahash{BUILD_NUMBER} AND
+ project_run.build_key = $datahash{BUILD_NUMBER} AND
project.name = \"$projectname\" AND
branch.name = \"$branchname\" AND
state.name = \"$statename\" )";
@@ -1602,7 +1602,7 @@ sub sql
INNER JOIN branch ON project_run.branch_id = branch.id
INNER JOIN state ON project_run.state_id = state.id
WHERE conf.name = \"$cfg\" AND
- project_run.build_number = $datahash{BUILD_NUMBER} AND
+ project_run.build_key = $datahash{BUILD_NUMBER} AND
project.name = \"$projectname\" AND
branch.name = \"$branchname\" AND
state.name = \"$statename\" )";