From 93610df181b2bae16dfda4a8aee38809ad966738 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 27 Aug 2013 11:25:45 +0000
Subject: [PATCH] Fixed the broken tests in ReplicationServerTest.

---
 opends/src/server/org/opends/server/replication/server/ReplicationServer.java             |    5 -
 opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java |  148 +++++++++++++++++++------------------------------
 2 files changed, 60 insertions(+), 93 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 9aedc1b..c08bbac 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationServer.java
@@ -523,11 +523,10 @@
 
     try
     {
-      /*
-       * Initialize the replicationServer database.
-       */
+      // Initialize the replicationServer database.
       dbEnv = new ReplicationDbEnv(getFileForPath(dbDirname).getAbsolutePath(),
           this);
+      dbEnv.start();
 
       setServerURL();
       listenSocket = new ServerSocket();
diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
index 3f8e346..707667a 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/ReplicationDbEnv.java
@@ -50,9 +50,9 @@
  */
 public class ReplicationDbEnv
 {
-  private Environment dbEnvironment = null;
-  private Database stateDb = null;
-  private ReplicationServer replicationServer = null;
+  private Environment dbEnvironment;
+  private Database stateDb;
+  private ReplicationServer replicationServer;
   private static final String GENERATION_ID_TAG = "GENID";
   private static final String FIELD_SEPARATOR = " ";
   /**
@@ -141,12 +141,7 @@
        * the topology. The database "changelogstate" is used to store the list
        * of all the servers that have been seen in the past.
        */
-      DatabaseConfig dbConfig = new DatabaseConfig();
-      dbConfig.setAllowCreate(true);
-      dbConfig.setTransactional(true);
-
-      stateDb = dbEnvironment.openDatabase(null, "changelogstate", dbConfig);
-      start();
+      stateDb = openDatabase("changelogstate");
     }
     catch (RuntimeException e)
     {
@@ -154,13 +149,21 @@
     }
   }
 
+  private Database openDatabase(String databaseName) throws RuntimeException
+  {
+    final DatabaseConfig dbConfig = new DatabaseConfig();
+    dbConfig.setAllowCreate(true);
+    dbConfig.setTransactional(true);
+    return dbEnvironment.openDatabase(null, databaseName, dbConfig);
+  }
+
   /**
    * Read the list of known servers from the database and start dbHandler
    * for each of them.
    *
    * @throws ChangelogException in case of underlying Exception
    */
-  private void start() throws ChangelogException, DatabaseException
+  public void start() throws ChangelogException
   {
     DatabaseEntry key = new DatabaseEntry();
     DatabaseEntry data = new DatabaseEntry();
@@ -168,8 +171,47 @@
 
     try
     {
-      readDomainBaseDNGenerationIDRecords(key, data, cursor);
-      readServerIdDomainBaseDNRecords(key, data, cursor);
+      OperationStatus status = cursor.getFirst(key, data, LockMode.DEFAULT);
+      while (status == OperationStatus.SUCCESS)
+      {
+        String stringData = toString(data.getData());
+
+        if (debugEnabled())
+          TRACER.debugInfo("In " + replicationServer.getMonitorInstanceName()
+              + " Read (tag/baseDn/generationId) OR (serverId/baseDN): "
+              + stringData);
+
+        String[] str = stringData.split(FIELD_SEPARATOR, 3);
+        if (str[0].equals(GENERATION_ID_TAG))
+        {
+          long generationId = toLong(str[1]);
+          String baseDn = str[2];
+
+          if (debugEnabled())
+            TRACER.debugInfo("In " + replicationServer.getMonitorInstanceName()
+                + " Has read baseDn=" + baseDn + " generationId="
+                + generationId);
+
+          replicationServer.initDomainGenerationID(baseDn, generationId);
+        }
+        else
+        {
+          int serverId = toInt(str[0]);
+          String baseDn = str[1];
+
+          if (debugEnabled())
+            TRACER.debugInfo("In " + replicationServer.getMonitorInstanceName()
+                + " Has read: baseDn=" + baseDn + " serverId=" + serverId);
+
+          replicationServer.addServerIdToDomain(serverId, baseDn);
+        }
+
+        status = cursor.getNext(key, data, LockMode.DEFAULT);
+      }
+    }
+    catch (RuntimeException e)
+    {
+      throw new ChangelogException(e);
     }
     finally
     {
@@ -177,71 +219,6 @@
     }
   }
 
-  private void readDomainBaseDNGenerationIDRecords(DatabaseEntry key,
-      DatabaseEntry data, Cursor cursor) throws ChangelogException,
-      DatabaseException
-  {
-    // Get the domain base DN/ generationIDs records
-    OperationStatus status = cursor.getFirst(key, data, LockMode.DEFAULT);
-    while (status == OperationStatus.SUCCESS)
-    {
-      String stringData = toString(data.getData());
-
-      if (debugEnabled())
-        TRACER.debugInfo("In "
-            + this.replicationServer.getMonitorInstanceName()
-            + " Read tag baseDn generationId=" + stringData);
-
-      String[] str = stringData.split(FIELD_SEPARATOR, 3);
-      if (str[0].equals(GENERATION_ID_TAG))
-      {
-        long generationId = toLong(str[1]);
-        String baseDn = str[2];
-
-        if (debugEnabled())
-          TRACER.debugInfo("In "
-              + this.replicationServer.getMonitorInstanceName()
-              + " Has read baseDn=" + baseDn + " generationId=" + generationId);
-
-        replicationServer.initDomainGenerationID(baseDn, generationId);
-      }
-      status = cursor.getNext(key, data, LockMode.DEFAULT);
-    }
-  }
-
-  private void readServerIdDomainBaseDNRecords(DatabaseEntry key,
-      DatabaseEntry data, Cursor cursor) throws ChangelogException,
-      DatabaseException
-  {
-    // Get the server Id / domain base DN records
-    OperationStatus status = cursor.getFirst(key, data, LockMode.DEFAULT);
-    while (status == OperationStatus.SUCCESS)
-    {
-      String stringData = toString(data.getData());
-
-      if (debugEnabled())
-        TRACER.debugInfo("In "
-            + this.replicationServer.getMonitorInstanceName()
-            + " Read serverId BaseDN=" + stringData);
-
-      String[] str = stringData.split(FIELD_SEPARATOR, 2);
-      if (!str[0].equals(GENERATION_ID_TAG))
-      {
-        int serverId = toInt(str[0]);
-        String baseDn = str[1];
-
-        if (debugEnabled())
-          TRACER.debugInfo("In "
-              + this.replicationServer.getMonitorInstanceName()
-              + " Has read: baseDn=" + baseDn + " serverId=" + serverId);
-
-        replicationServer.addServerIdToDomain(serverId, baseDn);
-      }
-
-      status = cursor.getNext(key, data, LockMode.DEFAULT);
-    }
-  }
-
   private int toInt(String data) throws ChangelogException
   {
     try
@@ -309,10 +286,7 @@
 
         // Opens the database for the changes received from this server
         // on this domain. Create it if it does not already exist.
-        DatabaseConfig dbConfig = new DatabaseConfig();
-        dbConfig.setAllowCreate(true);
-        dbConfig.setTransactional(true);
-        Database db = dbEnvironment.openDatabase(null, serverIdKey, dbConfig);
+        Database db = openDatabase(serverIdKey);
 
         // Creates the record serverId/domain base Dn in the stateDb
         // if it does not already exist.
@@ -545,17 +519,11 @@
      */
     public Database getOrCreateDraftCNDb() throws ChangelogException
     {
-      String stringId = "draftcndb";
-
-      // Opens the database for seqnum associated to this domain.
-      // Create it if it does not already exist.
-      DatabaseConfig dbConfig = new DatabaseConfig();
-      dbConfig.setAllowCreate(true);
-      dbConfig.setTransactional(true);
-
       try
       {
-        return dbEnvironment.openDatabase(null, stringId, dbConfig);
+        // Opens the database for seqnum associated to this domain.
+        // Create it if it does not already exist.
+        return openDatabase("draftcndb");
       }
       catch (RuntimeException e)
       {

--
Gitblit v1.10.0