]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3306 Improve unit test to fix issue on it-sonar-persistence tests
authorJulien Lancelot <julien.lancelot@gmail.com>
Mon, 3 Dec 2012 14:32:49 +0000 (15:32 +0100)
committerJulien Lancelot <julien.lancelot@gmail.com>
Mon, 3 Dec 2012 15:08:20 +0000 (16:08 +0100)
sonar-core/src/test/java/org/sonar/core/persistence/SemaphoreDaoTest.java

index 781d5c959971631aa7583b900ff5f9d5004e4561..6458060cb3a62be4b3ba64b22f613c496a083399 100644 (file)
@@ -27,6 +27,9 @@ import org.junit.rules.ExpectedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
 import java.util.Date;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.CyclicBarrier;
@@ -234,12 +237,34 @@ public class SemaphoreDaoTest extends AbstractDaoTestCase {
   }
 
   private boolean isRecent(Date date) {
-    Date now = new Date();
-    Date futur = DateUtils.addDays(now, 1);
-    Date past = DateUtils.addDays(now, -1);
+    Date futur = DateUtils.addMinutes(now(), 1);
+    Date past = DateUtils.addDays(now(), -1);
     return date.after(past) && date.before(futur);
   }
 
+  private Date now() {
+    Connection connection = null;
+    PreparedStatement statement = null;
+    ResultSet rs = null;
+    try {
+      connection = getConnection();
+      rs = null;
+      statement = connection.prepareStatement("select current_timestamp");
+      rs = statement.executeQuery();
+      if (rs.next()) {
+        return new Date();
+      }
+      return null;
+
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    } finally {
+      DatabaseUtils.closeQuietly(rs);
+      DatabaseUtils.closeQuietly(statement);
+      DatabaseUtils.closeQuietly(connection);
+    }
+  }
+
   private static class Runner extends Thread {
     SemaphoreDao dao;
     AtomicInteger locks;