From 02d2f0aedeb8ac109eb37858a5d1d6c9328e62f4 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Mon, 7 Feb 2011 09:59:20 +0000
Subject: [PATCH] [LMS-2029] few tests in DAO layer

SVN: 19773
---
 .../DynamicPropertyEvaluationScheduler.java   | 12 +++--
 .../db/AbstractDAOWithoutContextTest.java     | 15 ------
 .../dataaccess/db/ExperimentDAOTest.java      | 47 +++++++++++++++++--
 3 files changed, 52 insertions(+), 22 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/DynamicPropertyEvaluationScheduler.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/DynamicPropertyEvaluationScheduler.java
index bdfda607f5b..2dec81fc012 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/DynamicPropertyEvaluationScheduler.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/DynamicPropertyEvaluationScheduler.java
@@ -53,6 +53,12 @@ public final class DynamicPropertyEvaluationScheduler implements
                     }
                 };
 
+    /* private - exposed for tests */
+    public static List<DynamicPropertyEvaluationOperation> getThreadOperations()
+    {
+        return threadQueue.get();
+    }
+
     private final IExtendedBlockingQueue<DynamicPropertyEvaluationOperation> evaluatorQueue;
 
     public DynamicPropertyEvaluationScheduler()
@@ -102,13 +108,13 @@ public final class DynamicPropertyEvaluationScheduler implements
     public void scheduleUpdate(DynamicPropertyEvaluationOperation operation)
     {
         threadDebugLog("Scheduling update: " + operation);
-        List<DynamicPropertyEvaluationOperation> threadOperations = threadQueue.get();
+        List<DynamicPropertyEvaluationOperation> threadOperations = getThreadOperations();
         threadOperations.add(operation);
     }
 
     public void synchronizeThreadQueue()
     {
-        List<DynamicPropertyEvaluationOperation> threadOperations = threadQueue.get();
+        List<DynamicPropertyEvaluationOperation> threadOperations = getThreadOperations();
         if (threadOperations.size() > 0)
         {
             threadDebugLog("Synchronizing scheduled operations");
@@ -126,7 +132,7 @@ public final class DynamicPropertyEvaluationScheduler implements
     public void clearThreadQueue()
     {
         threadDebugLog("Clearing scheduled operations");
-        List<DynamicPropertyEvaluationOperation> threadOperations = threadQueue.get();
+        List<DynamicPropertyEvaluationOperation> threadOperations = getThreadOperations();
         threadOperations.clear();
     }
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAOWithoutContextTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAOWithoutContextTest.java
index a7873c18b93..74929839784 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAOWithoutContextTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAOWithoutContextTest.java
@@ -40,7 +40,6 @@ import org.testng.annotations.BeforeMethod;
 import ch.rinn.restrictions.Friend;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExternalDataDAO;
-import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.search.HibernateSearchContext;
 import ch.systemsx.cisd.openbis.generic.server.util.TestInitializer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityPropertiesHolder;
@@ -91,8 +90,6 @@ public abstract class AbstractDAOWithoutContextTest extends
 
     protected SessionFactory sessionFactory;
 
-    HibernateSearchContext hibernateSearchContext;
-
     private Long origDatabaseInstanceId;
 
     private Object currentDAO;
@@ -136,18 +133,6 @@ public abstract class AbstractDAOWithoutContextTest extends
         this.sessionFactory = sessionFactory;
     }
 
-    /**
-     * Sets <code>hibernate search context</code>.
-     * <p>
-     * Will be automatically dependency injected by type.
-     * </p>
-     */
-    @Autowired
-    public final void setHibernateSearchContext(final HibernateSearchContext hibernateSearchContext)
-    {
-        this.hibernateSearchContext = hibernateSearchContext;
-    }
-
     /**
      * Changes the database instance id of given {@link AbstractDAO} to a new value.
      */
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAOTest.java
index 7c26ae3de71..5c3e935316e 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/ExperimentDAOTest.java
@@ -34,6 +34,8 @@ import org.testng.AssertJUnit;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.DynamicPropertyEvaluationOperation;
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.DynamicPropertyEvaluationScheduler;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IExperimentDAO;
 import ch.systemsx.cisd.openbis.generic.shared.CommonTestUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
@@ -89,17 +91,20 @@ public class ExperimentDAOTest extends AbstractDAOTest
     @Test
     public void testListExperimentsWithPropertiesForEmptySet() throws Exception
     {
-        List<ExperimentPE> list = daoFactory.getExperimentDAO().listExperimentsWithProperties(Collections.<Long>emptySet());
+        List<ExperimentPE> list =
+                daoFactory.getExperimentDAO().listExperimentsWithProperties(
+                        Collections.<Long> emptySet());
         assertEquals(0, list.size());
     }
-    
+
     @Test
     public void testListByPermIDForEmptySet() throws Exception
     {
-        List<ExperimentPE> list = daoFactory.getExperimentDAO().listByPermID(Collections.<String>emptySet());
+        List<ExperimentPE> list =
+                daoFactory.getExperimentDAO().listByPermID(Collections.<String> emptySet());
         assertEquals(0, list.size());
     }
-    
+
     @Test
     public void testListExperimentsFromProject() throws Exception
     {
@@ -314,9 +319,16 @@ public class ExperimentDAOTest extends AbstractDAOTest
         int sizeBefore = experimentsBefore.size();
         assertEqualsOrGreater(8, sizeBefore);
 
+        List<DynamicPropertyEvaluationOperation> threadOperations =
+                DynamicPropertyEvaluationScheduler.getThreadOperations();
+        assertEquals(0, threadOperations.size());
+
         ExperimentPE experiment = createExperiment("CISD", "CISD", "NEMO", "EXP12", "SIRNA_HCS");
         daoFactory.getExperimentDAO().createOrUpdateExperiment(experiment);
 
+        assertEquals(1, threadOperations.size());
+        assertEquals(asDynamicPropertyEvaluationOperation(experiment), threadOperations.get(0));
+
         List<ExperimentPE> experimentsAfter = daoFactory.getExperimentDAO().listExperiments();
         assertEquals(sizeBefore + 1, experimentsAfter.size());
         Collections.sort(experimentsAfter);
@@ -337,8 +349,16 @@ public class ExperimentDAOTest extends AbstractDAOTest
         experiment.setCode(codeModified);
         experiment.setPermId(daoFactory.getPermIdDAO().createPermId());
         final Date modificationTimestamp = experiment.getModificationDate();
+
+        List<DynamicPropertyEvaluationOperation> threadOperations =
+                DynamicPropertyEvaluationScheduler.getThreadOperations();
+        assertEquals(0, threadOperations.size());
+
         daoFactory.getExperimentDAO().createOrUpdateExperiment(experiment);
 
+        assertEquals(1, threadOperations.size());
+        assertEquals(asDynamicPropertyEvaluationOperation(experiment), threadOperations.get(0));
+
         List<ExperimentPE> experimentsAfter = daoFactory.getExperimentDAO().listExperiments();
         assertEquals(sizeBefore, experimentsAfter.size());
         Collections.sort(experimentsAfter);
@@ -354,13 +374,24 @@ public class ExperimentDAOTest extends AbstractDAOTest
         int sizeBefore = experimentsBefore.size();
         assertEqualsOrGreater(8, sizeBefore);
 
+        List<DynamicPropertyEvaluationOperation> threadOperations =
+                DynamicPropertyEvaluationScheduler.getThreadOperations();
+        assertEquals(0, threadOperations.size());
+
         ExperimentPE experiment = createExperiment("CISD", "CISD", "NEMO", "EXP13", "SIRNA_HCS");
         daoFactory.getExperimentDAO().createOrUpdateExperiment(experiment);
 
+        assertEquals(1, threadOperations.size());
+        assertEquals(asDynamicPropertyEvaluationOperation(experiment), threadOperations.get(0));
+
         ExperimentPE experiment2 =
                 createExperiment("CISD", "CISD", "NEMO", "EXP12", "COMPOUND_HCS");
         daoFactory.getExperimentDAO().createOrUpdateExperiment(experiment2);
 
+        assertEquals(2, threadOperations.size());
+        assertEquals(asDynamicPropertyEvaluationOperation(experiment), threadOperations.get(0));
+        assertEquals(asDynamicPropertyEvaluationOperation(experiment2), threadOperations.get(1));
+
         List<ExperimentPE> experimentsAfter = daoFactory.getExperimentDAO().listExperiments();
         Collections.sort(experimentsAfter);
         assertEquals(sizeBefore + 2, experimentsAfter.size());
@@ -412,6 +443,7 @@ public class ExperimentDAOTest extends AbstractDAOTest
     {
         final ExperimentPE experiment = createExperiment("CISD", "CISD", "NEMO", code, "SIRNA_HCS");
         boolean exceptionThrown = false;
+
         try
         {
             daoFactory.getExperimentDAO().createOrUpdateExperiment(experiment);
@@ -491,4 +523,11 @@ public class ExperimentDAOTest extends AbstractDAOTest
         AssertJUnit.assertTrue(result.isEmpty());
     }
 
+    private DynamicPropertyEvaluationOperation asDynamicPropertyEvaluationOperation(
+            ExperimentPE experiment)
+    {
+        return DynamicPropertyEvaluationOperation.evaluate(ExperimentPE.class,
+                Collections.singletonList(experiment.getId()));
+    }
+
 }
-- 
GitLab