]> source.dussan.org Git - sonarqube.git/commitdiff
BaseDao testing for DAO v. 2 0 SynchronizeAfter
authorStephane Gamard <stephane.gamard@sonarsource.com>
Fri, 12 Sep 2014 08:42:26 +0000 (10:42 +0200)
committerStephane Gamard <stephane.gamard@sonarsource.com>
Fri, 12 Sep 2014 08:42:26 +0000 (10:42 +0200)
server/sonar-server/src/test/java/org/sonar/server/db/BaseDaoTest.java
server/sonar-server/src/test/java/org/sonar/server/db/fake/FakeDao.java
server/sonar-server/src/test/resources/org/sonar/server/db/fake/FakeMapper.xml
sonar-core/src/test/java/org/sonar/core/persistence/TestDatabase.java

index 405e221e9be30bbe725d4e009109cef54f3de2d7..f4007ef3d422242db58611bda78ca5eddefac1b9 100644 (file)
@@ -25,6 +25,8 @@ import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 import org.sonar.api.utils.System2;
+import org.sonar.core.cluster.ClusterAction;
+import org.sonar.core.cluster.WorkQueue;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
 import org.sonar.core.persistence.TestDatabase;
@@ -32,14 +34,34 @@ import org.sonar.server.db.fake.FakeDao;
 import org.sonar.server.db.fake.FakeDto;
 import org.sonar.server.db.fake.FakeMapper;
 
+import java.util.Date;
+import java.util.List;
 import java.util.UUID;
 
 import static org.fest.assertions.Assertions.assertThat;
 
 public class BaseDaoTest {
 
+  public static FakeQueue queue = new FakeQueue();
+
   @ClassRule
-  public static TestDatabase db = new TestDatabase().schema(BaseDaoTest.class, "schema.sql");
+  public static TestDatabase db = new TestDatabase()
+    .schema(BaseDaoTest.class, "schema.sql")
+    .setQueue(queue);
+
+  private static class FakeQueue implements WorkQueue<ClusterAction> {
+
+    private int count = 0;
+
+    @Override
+    public void enqueue(List<ClusterAction> actions) {
+      count = actions.size();
+    }
+
+    public int getCount() {
+      return count;
+    }
+  }
 
   private static final String DTO_ALIAS = "fake";
 
@@ -51,8 +73,7 @@ public class BaseDaoTest {
     MyBatis batis = db.myBatis();
     batis.getSessionFactory().getConfiguration().getTypeAliasRegistry().registerAlias(DTO_ALIAS, FakeDto.class);
     batis.getSessionFactory().getConfiguration().addMapper(FakeMapper.class);
- }
-
+  }
 
   @Before
   public void before() throws Exception {
@@ -91,6 +112,30 @@ public class BaseDaoTest {
 
     assertThat(dto.getUpdatedAt().getTime()).isGreaterThan(t0);
     assertThat(dto.getCreatedAt().getTime()).isLessThan(t1);
+  }
+
+  @Test
+  public void does_enqueue_on_insert() {
+    FakeDto myDto = new FakeDto()
+      .setKey(UUID.randomUUID().toString());
+    dao.insert(session, myDto);
+    session.commit();
+    assertThat(queue.getCount()).isEqualTo(1);
+  }
+
+  @Test
+  public void synchronize_to_es_after_date() throws Exception {
+    long t0 = System.currentTimeMillis() - 1000;
+
+    String key = UUID.randomUUID().toString();
+    FakeDto myDto = new FakeDto()
+      .setKey(key);
+    dao.insert(session, myDto);
+
+    session.commit();
+    assertThat(queue.getCount()).isEqualTo(1);
 
+    dao.synchronizeAfter(session, new Date(t0));
+    assertThat(queue.getCount()).isEqualTo(2);
   }
-}
\ No newline at end of file
+}
index b3ed13e04a978e5aba22589fe820e3405702063a..73ec0efcc47d71e32c0571da17d5edcefa4bc6c1 100644 (file)
@@ -22,11 +22,12 @@ package org.sonar.server.db.fake;
 import org.sonar.api.utils.System2;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.server.db.BaseDao;
+import org.sonar.server.search.IndexDefinition;
 
 public class FakeDao extends BaseDao<FakeMapper, FakeDto, String> {
 
   public FakeDao(System2 system2) {
-    super(FakeMapper.class, system2);
+    super(IndexDefinition.createFor("test", "fake"), FakeMapper.class, system2);
   }
 
   @Override
index dc3aa0a1a620c066e1fcd25215e655a31e1d91fb..361a1445ed4702109cfe356172c6b37c0730298f 100644 (file)
@@ -24,7 +24,7 @@
   <select id="selectAfterDate" resultType="fake" resultSetType="FORWARD_ONLY" fetchSize="200">
     select
     <include refid="selectColumns"/>
-    from rules r
+    from fake f
     where f.updated_at IS NULL or f.updated_at &gt;= #{date}
   </select>
 
index b42a4e36428cc53c288ac06641f5258a92baa72b..cf2438bc636db92ff37caf35a0e980443c1d60e2 100644 (file)
@@ -88,6 +88,11 @@ public class TestDatabase extends ExternalResource {
     return this;
   }
 
+  public TestDatabase setQueue(WorkQueue queue) {
+    this.queue = queue;
+    return this;
+  }
+
   @Override
   protected void before() throws Throwable {
     Settings settings = new Settings().setProperties(Maps.fromProperties(System.getProperties()));