diff options
author | Juha Sippola <juhasippola@outlook.com> | 2015-06-25 16:21:15 +0300 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-08-04 10:38:26 +0000 |
commit | 7e66ceb73fce9bdd1bbe5a15f55bc1831aad08fd (patch) | |
tree | f614ce50e19ce2089fd264b1331d49ceae09d422 | |
parent | 0347794ba954fae6f9e3d5c4d08c21d5c995cfd4 (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.php | 60 | ||||
-rw-r--r-- | non-puppet/qtmetrics2/src/ProjectRun.php | 24 | ||||
-rw-r--r-- | non-puppet/qtmetrics2/src/TestsetRun.php | 10 | ||||
-rw-r--r-- | non-puppet/qtmetrics2/src/test/DatabaseTest.php | 46 | ||||
-rw-r--r-- | non-puppet/qtmetrics2/templates/about.php | 4 | ||||
-rw-r--r-- | non-puppet/qtmetrics2/testparser.pl | 34 |
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\" )"; |