From 76f8bad1735d5094ff0698f5634829a76342203a Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Wed, 10 Dec 2014 22:39:22 +0100 Subject: [PATCH] Complete DbTester with methods countSql(String sql) and countRowsInTable(String table) --- .../db/migrations/BaseDataChangeTest.java | 2 +- .../migrations/v36/ViolationMigrationTest.java | 2 +- .../migrations/v50/FeedIssueLongDatesTest.java | 2 +- .../migrations/v51/FeedUsersLongDatesTest.java | 2 +- .../v51/FeedUsersScmAccountsTest.java | 2 +- .../org/sonar/core/persistence/DbTester.java | 18 +++++++++++++++++- 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/BaseDataChangeTest.java b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/BaseDataChangeTest.java index a448490c679..141c536da4b 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/BaseDataChangeTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/BaseDataChangeTest.java @@ -238,7 +238,7 @@ public class BaseDataChangeTest extends AbstractDaoTestCase { } }.execute(); - assertThat(db.count("select count(id) from persons")).isEqualTo(count); + assertThat(db.countRowsOfTable("persons")).isEqualTo(count); } @Test diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v36/ViolationMigrationTest.java b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v36/ViolationMigrationTest.java index c0491d901eb..730318bc457 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v36/ViolationMigrationTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v36/ViolationMigrationTest.java @@ -52,6 +52,6 @@ public class ViolationMigrationTest { } private void assertMigrationEnded() { - assertThat(db.count("select count(id) from rule_failures")).isEqualTo(0); + assertThat(db.countRowsOfTable("rule_failures")).isEqualTo(0); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v50/FeedIssueLongDatesTest.java b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v50/FeedIssueLongDatesTest.java index 4440ae9738b..c62906df7ed 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v50/FeedIssueLongDatesTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v50/FeedIssueLongDatesTest.java @@ -44,7 +44,7 @@ public class FeedIssueLongDatesTest { DatabaseMigration migration = new FeedIssueLongDates(db.database(), system); migration.execute(); - int count = db.count("select count(*) from issues where created_at_ms is not null and updated_at_ms is not null"); + int count = db.countSql("select count(*) from issues where created_at_ms is not null and updated_at_ms is not null"); assertThat(count).isEqualTo(3); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v51/FeedUsersLongDatesTest.java b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v51/FeedUsersLongDatesTest.java index 4b1488c93bd..b72969dcc20 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v51/FeedUsersLongDatesTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v51/FeedUsersLongDatesTest.java @@ -44,7 +44,7 @@ public class FeedUsersLongDatesTest { DatabaseMigration migration = new FeedUsersLongDates(db.database(), system); migration.execute(); - int count = db.count("select count(*) from users where created_at_ms is not null and updated_at_ms is not null"); + int count = db.countSql("select count(*) from users where created_at_ms is not null and updated_at_ms is not null"); assertThat(count).isEqualTo(3); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v51/FeedUsersScmAccountsTest.java b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v51/FeedUsersScmAccountsTest.java index f73a72e9a06..9d1896dd190 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v51/FeedUsersScmAccountsTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/db/migrations/v51/FeedUsersScmAccountsTest.java @@ -50,7 +50,7 @@ public class FeedUsersScmAccountsTest { migration.execute(); // Cannot use db.assertDbUnit with users table as there's a conflict with the h2 users table - assertThat(db.count("select count(*) from users where updated_at='3000000000000'")).isEqualTo(3); + assertThat(db.countSql("select count(*) from users where updated_at='3000000000000'")).isEqualTo(3); assertThat(getScmAccountsFromUsers(1)).contains("user1,user1@mail.com"); assertThat(getScmAccountsFromUsers(3)).contains("user3"); assertThat(getScmAccountsFromUsers(4)).contains("user4,\"user4,@mail.com\""); diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/DbTester.java b/sonar-core/src/test/java/org/sonar/core/persistence/DbTester.java index c87c5cb9d8a..3f7787b5320 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/DbTester.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/DbTester.java @@ -19,6 +19,7 @@ */ package org.sonar.core.persistence; +import com.google.common.base.Preconditions; import com.google.common.collect.Maps; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.dbutils.DbUtils; @@ -169,7 +170,22 @@ public class DbTester extends ExternalResource { } } - public int count(String sql) { + /** + * Returns the number of rows in the table. Example: + *
int issues = countTable("issues")
+ */ + public int countRowsOfTable(String tableName) { + Preconditions.checkArgument(StringUtils.containsNone(tableName, " "), "Parameter must be the name of a table. Got " + tableName); + return countSql("select count(*) from " + tableName); + } + + /** + * Executes a SQL request starting with "SELECT COUNT(something) FROM", for example: + *
int OpenIssues = countSql("select count('id') from issues where status is not null")
+ */ + public int countSql(String sql) { + Preconditions.checkArgument(StringUtils.contains(sql, "count("), + "Parameter must be a SQL request containing 'count(x)' function. Got " + sql); Connection connection = null; PreparedStatement stmt = null; ResultSet rs = null; -- 2.39.5