]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5529 - Implemented findAfterDate in IssueDao V.2
authorStephane Gamard <stephane.gamard@sonarsource.com>
Sun, 31 Aug 2014 13:22:27 +0000 (15:22 +0200)
committerStephane Gamard <stephane.gamard@sonarsource.com>
Sun, 31 Aug 2014 13:22:27 +0000 (15:22 +0200)
server/sonar-server/src/main/java/org/sonar/server/search/IndexSynchronizer.java
server/sonar-server/src/test/java/org/sonar/server/issue/db/IssueBackendMediumTest.java
sonar-core/src/main/java/org/sonar/core/issue/db/IssueDto.java

index d4249a020dd0d2294724ffa3bb62ad76a5c8e66d..b14059e4a039cd5d749f6ccfbf5c0f1f43262dbb 100644 (file)
@@ -49,6 +49,7 @@ public class IndexSynchronizer {
     LOG.info("Starting DB to Index synchronization");
     long start = System.currentTimeMillis();
     synchronize(session, db.ruleDao(), index.get(RuleIndex.class));
+    synchronize(session, db.issueDao(), index.get(ActivityIndex.class));
     synchronize(session, db.activeRuleDao(), index.get(ActiveRuleIndex.class));
     synchronize(session, db.activityDao(), index.get(ActivityIndex.class));
     session.commit();
index 8443f958525e1e2c458e908954f74a9049671076..4416feab29de9ff899cf8815dca77b7f0ca615fe 100644 (file)
@@ -22,19 +22,25 @@ package org.sonar.server.issue.db;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
-import org.junit.Ignore;
 import org.junit.Test;
-import org.sonar.api.resources.Project;
+import org.sonar.core.component.ComponentDto;
+import org.sonar.core.issue.db.IssueDto;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.rule.RuleDto;
+import org.sonar.server.component.persistence.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.platform.Platform;
 import org.sonar.server.rule.RuleTesting;
+import org.sonar.server.rule.db.RuleDao;
 import org.sonar.server.search.IndexClient;
 import org.sonar.server.tester.ServerTester;
 
-public class IssueBackendMediumTest {
+import java.util.Date;
+import java.util.UUID;
+
+import static org.fest.assertions.Assertions.assertThat;
 
+public class IssueBackendMediumTest {
 
   @ClassRule
   public static ServerTester tester = new ServerTester();
@@ -61,14 +67,38 @@ public class IssueBackendMediumTest {
   }
 
   @Test
-  @Ignore("work in progress")
-  public void insert_select_issue() throws Exception {
-    Project project = new Project("my:project");
+  public void insert_and_find_after_date() throws Exception {
+
     RuleDto rule = RuleTesting.newXooX1();
-//    //IssueDto issue = IssueDto.createFor(project, rule);
-//    System.out.println("issue.getKey() = " + issue.getKey());
-//    dbClient.issueDao().insert(dbSession, issue);
-//
-//    assertThat(issue.getId()).isNotNull();
+    tester.get(RuleDao.class).insert(dbSession, rule);
+
+    ComponentDto project = new ComponentDto()
+      .setId(1L)
+      .setProjectId(1L);
+    tester.get(ComponentDao.class).insert(dbSession, project);
+
+    ComponentDto resource = new ComponentDto()
+      .setProjectId(1L)
+      .setId(2L);
+    tester.get(ComponentDao.class).insert(dbSession, resource);
+
+    IssueDto issue = new IssueDto().setId(1L).setRuleId(50).setComponentId(123l).setRootComponentId(100l)
+      .setRuleId(rule.getId())
+      .setRootComponentId(project.getId())
+      .setComponentId(resource.getId())
+      .setStatus("OPEN").setResolution("OPEN")
+      .setKee(UUID.randomUUID().toString());
+    dbClient.issueDao().insert(dbSession, issue);
+
+    dbSession.commit();
+    assertThat(issue.getId()).isNotNull();
+
+    // Find Issues since forever
+    Date t0 = new Date(0);
+    assertThat(dbClient.issueDao().findAfterDate(dbSession, t0)).hasSize(1);
+
+    // Should not find any new issues
+    Date t1 = new Date();
+    assertThat(dbClient.issueDao().findAfterDate(dbSession, t1)).hasSize(0);
   }
-}
\ No newline at end of file
+}
index 7b4f4a2550434bfd70a80a3bacddc09ba6c25335..355652afb9907e2b3db385feb336dbcd700b9ee3 100644 (file)
@@ -24,15 +24,18 @@ import com.google.common.base.Preconditions;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
 import org.sonar.api.issue.internal.DefaultIssue;
+import org.sonar.api.resources.Project;
 import org.sonar.api.rule.RuleKey;
 import org.sonar.api.utils.Duration;
 import org.sonar.api.utils.KeyValueFormat;
 import org.sonar.core.persistence.Dto;
+import org.sonar.core.rule.RuleDto;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.UUID;
 
 /**
  * @since 3.6
@@ -441,4 +444,11 @@ public final class IssueDto extends Dto<String> implements Serializable {
     issue.setSelectedAt(selectedAt);
     return issue;
   }
+
+  public static IssueDto createFor(Project project, RuleDto rule) {
+    return new IssueDto()
+      .setRootComponentId(new Long(project.getId()))
+      .setRuleId(rule.getId())
+      .setKee(UUID.randomUUID().toString());
+  }
 }