From f95eca255b79a070abb510da157a37969c81fed2 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 01 Oct 2013 07:38:46 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ProtocolWindowTest.java                        |    2 
 opends/src/server/org/opends/server/replication/server/ReplicationServer.java                                          |   13 ------
 opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java                                 |   13 +++++-
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java                       |   10 ++++-
 opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java                                  |    5 --
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java                          |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java          |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java              |   20 +++++-----
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java              |    5 +-
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java |    2 
 10 files changed, 34 insertions(+), 40 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
index ead8133..462d4c2 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -1210,19 +1210,6 @@
   }
 
   /**
-   * Clears the Db associated with that server.
-   */
-  public void clearDb()
-  {
-    for (ReplicationServerDomain rsd : getReplicationServerDomains())
-    {
-      rsd.clearDbs();
-    }
-
-    this.changelogDB.clearCNIndexDB();
-  }
-
-  /**
    * Get the assured mode timeout.
    * @return The assured mode timeout.
    */
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java b/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java
index b96492a..a775ebc 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/api/ChangelogDB.java
@@ -84,11 +84,6 @@
   void shutdownDB();
 
   /**
-   * Temporary method added here until I (JNR) can find a way to get rid of it.
-   */
-  void clearCNIndexDB();
-
-  /**
    * Removes the changelog database directory.
    */
   void removeDB();
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
index 82c846e..d13cd7a 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
@@ -297,10 +297,17 @@
     }
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public void clearCNIndexDB()
+  /**
+   * Clears all content from the changelog database, but leaves its directory on
+   * the filesystem.
+   */
+  public void clearDB()
   {
+    for (DN baseDN : this.sourceDbHandlers.keySet())
+    {
+      removeDomain(baseDN);
+    }
+
     synchronized (cnIndexDBLock)
     {
       if (cnIndexDB != null)
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java
index a3c710e..4d39a5d 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/GenerationIdTest.java
@@ -1160,7 +1160,7 @@
     TestCaseUtils.initializeTestBackend(false);
 
     replServer1 = createReplicationServer(changelog1ID, false, testCase);
-    replServer1.clearDb();
+    clearChangelogDB(replServer1);
 
     ReplicationBroker broker = null;
     try
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ProtocolWindowTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ProtocolWindowTest.java
index 3b0b6db..5d91b05 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ProtocolWindowTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ProtocolWindowTest.java
@@ -202,7 +202,7 @@
         logError(Message.raw(Category.SYNC, Severity.NOTICE,
           "saturateQueueAndRestart: error cleaning config entry: " + dn));
       }
-      replicationServer.clearDb();
+      clearChangelogDB(replicationServer);
     }
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java
index 83b9c03..793773b 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ReplicationTestCase.java
@@ -58,6 +58,7 @@
 import org.opends.server.replication.protocol.ReplicationMsg;
 import org.opends.server.replication.protocol.Session;
 import org.opends.server.replication.server.ReplicationServer;
+import org.opends.server.replication.server.changelog.je.JEChangelogDB;
 import org.opends.server.replication.service.ReplicationBroker;
 import org.opends.server.replication.service.ReplicationDomain;
 import org.opends.server.schema.DirectoryStringSyntax;
@@ -463,14 +464,18 @@
     assertEquals(DirectoryServer.getBackend("replicationChanges"), null, "Replication changes backend object has been left");
   }
 
+  protected void clearChangelogDB(ReplicationServer rs)
+  {
+    ((JEChangelogDB) rs.getChangelogDB()).clearDB();
+  }
+
   /**
    * Cleanup databases of the currently instantiated replication servers in the
    * VM
    */
   protected void cleanUpReplicationServersDB() {
-
     for (ReplicationServer rs : ReplicationServer.getAllInstances()) {
-      rs.clearDb();
+      clearChangelogDB(rs);
     }
   }
 
@@ -480,6 +485,7 @@
    */
   protected void removeReplicationServerDB() {
     for (ReplicationServer rs : ReplicationServer.getAllInstances()) {
+      clearChangelogDB(rs);
       rs.removeDb();
     }
   }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
index 13b00ac..3ae5b3a 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/HistoricalCsnOrderingTest.java
@@ -332,7 +332,7 @@
         new ReplServerFakeConfiguration(rsPort, "HistoricalCsnOrdering", 0, 1,
             0, 100, replServers, 1, 1000, 5000);
     ReplicationServer replicationServer = new ReplicationServer(conf);
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     return replicationServer;
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java
index c975942..d4a8434 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/plugin/ReplicationServerLoadBalancingTest.java
@@ -772,7 +772,7 @@
     {
       if (rs[rsIndex] != null)
       {
-        rs[rsIndex].clearDb();
+        clearChangelogDB(rs[rsIndex]);
         rs[rsIndex].remove();
       }
     }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
index 0c125b9..e12dc75 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ExternalChangeLogTest.java
@@ -2071,7 +2071,7 @@
   @AfterMethod
   public void clearReplicationDb()
   {
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
   }
 
   /**
@@ -2614,8 +2614,7 @@
     assertEquals(draftdb.count(), 8);
     draftdb.setPurgeDelay(1000);
 
-    // Now clear the changelog db
-    this.replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
 
     // Expect changes purged from the changelog db to be sometimes
     // also purged from the DraftCNDb.
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java
index 1cff9ac..60853ae 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/ReplicationServerTest.java
@@ -168,7 +168,7 @@
   @Test(enabled=true, dependsOnMethods = { "searchBackend"})
   public void replicationServerTest() throws Exception
   {
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     changelogBasic();
     newClientLateServer1();
     newClient();
@@ -192,7 +192,7 @@
   @Test(enabled=false, dependsOnMethods = { "searchBackend"})
   public void replicationServerTestLoop() throws Exception
   {
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     changelogBasic();
     while (true)
     {
@@ -210,7 +210,7 @@
    */
   private void changelogBasic() throws Exception
   {
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     debugInfo("Starting changelogBasic");
     ReplicationBroker server1 = null;
     ReplicationBroker server2 = null;
@@ -460,7 +460,7 @@
   {
     debugInfo("Starting oneWriterMultipleReader");
 
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     TestCaseUtils.initializeTestBackend(true);
 
     ReplicationBroker server = null;
@@ -551,7 +551,7 @@
     BrokerReader reader[] = new BrokerReader[THREADS];
     ReplicationBroker broker[] = new ReplicationBroker[THREADS];
 
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     TestCaseUtils.initializeTestBackend(true);
 
     try
@@ -629,7 +629,7 @@
   {
     final String tn = "changelogChaining0";
     debugInfo("Starting " + tn);
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     TestCaseUtils.initializeTestBackend(true);
 
     {
@@ -732,7 +732,7 @@
   {
     final String tn = "changelogChaining1";
     debugInfo("Starting " + tn);
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     TestCaseUtils.initializeTestBackend(true);
 
     {
@@ -860,7 +860,7 @@
     debugInfo("Starting windowProbeTest");
     final int WINDOW = 10;
 
-    replicationServer.clearDb();
+    clearChangelogDB(replicationServer);
     TestCaseUtils.initializeTestBackend(true);
 
     /*
@@ -1296,7 +1296,7 @@
           connection.processSearch("cn=monitor", WHOLE_SUBTREE, "(objectclass=*)");
       assertEquals(op.getResultCode(), SUCCESS, op.getErrorMessage().toString());
 
-       replicationServer.clearDb();
+      clearChangelogDB(replicationServer);
 
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        LDIFExportConfig exportConfig = new LDIFExportConfig(stream);
@@ -1530,7 +1530,7 @@
   @Test(enabled=true, dependsOnMethods = { "searchBackend"}, groups = "opendj-256")
   public void replicationServerConnected() throws Exception
   {
-      replicationServer.clearDb();
+     clearChangelogDB(replicationServer);
       TestCaseUtils.initializeTestBackend(true);
 
       debugInfo("Starting replicationServerConnected");

--
Gitblit v1.10.0