From 6a78bbaefc09b90a361b65f1870be6bae3b9a77b Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Fri, 12 Sep 2014 10:42:26 +0200 Subject: [PATCH] BaseDao testing for DAO v. 2 0 SynchronizeAfter --- .../java/org/sonar/server/db/BaseDaoTest.java | 53 +++++++++++++++++-- .../org/sonar/server/db/fake/FakeDao.java | 3 +- .../org/sonar/server/db/fake/FakeMapper.xml | 2 +- .../sonar/core/persistence/TestDatabase.java | 5 ++ 4 files changed, 57 insertions(+), 6 deletions(-) diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/BaseDaoTest.java b/server/sonar-server/src/test/java/org/sonar/server/db/BaseDaoTest.java index 405e221e9be..f4007ef3d42 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/db/BaseDaoTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/db/BaseDaoTest.java @@ -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 { + + private int count = 0; + + @Override + public void enqueue(List 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 +} diff --git a/server/sonar-server/src/test/java/org/sonar/server/db/fake/FakeDao.java b/server/sonar-server/src/test/java/org/sonar/server/db/fake/FakeDao.java index b3ed13e04a9..73ec0efcc47 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/db/fake/FakeDao.java +++ b/server/sonar-server/src/test/java/org/sonar/server/db/fake/FakeDao.java @@ -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 { public FakeDao(System2 system2) { - super(FakeMapper.class, system2); + super(IndexDefinition.createFor("test", "fake"), FakeMapper.class, system2); } @Override diff --git a/server/sonar-server/src/test/resources/org/sonar/server/db/fake/FakeMapper.xml b/server/sonar-server/src/test/resources/org/sonar/server/db/fake/FakeMapper.xml index dc3aa0a1a62..361a1445ed4 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/db/fake/FakeMapper.xml +++ b/server/sonar-server/src/test/resources/org/sonar/server/db/fake/FakeMapper.xml @@ -24,7 +24,7 @@ diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/TestDatabase.java b/sonar-core/src/test/java/org/sonar/core/persistence/TestDatabase.java index b42a4e36428..cf2438bc636 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/TestDatabase.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/TestDatabase.java @@ -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())); -- 2.39.5