From b0420c460bca595f5cf0cb779184a1f23108195a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 14 Jan 2015 15:53:18 +0000
Subject: [PATCH] OPENDJ-1724 (CR-5789) Persistit: add support for verify-indexes
---
/dev/null | 115 --------
opendj3-server-dev/src/server/org/opends/server/tools/VerifyIndex.java | 28 -
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java | 171 +++--------
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVerifyJob.java | 99 ++----
opendj3-server-dev/src/server/org/opends/server/api/Backend.java | 35 ++
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestImportJob.java | 141 ++-------
opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyConfig.java | 42 +--
opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java | 28 -
opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyJob.java | 50 --
opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java | 52 --
opendj3-server-dev/src/server/org/opends/server/backends/pluggable/BackendImpl.java | 25 -
11 files changed, 224 insertions(+), 562 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/api/Backend.java b/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
index e732e5d..7734659 100644
--- a/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
+++ b/opendj3-server-dev/src/server/org/opends/server/api/Backend.java
@@ -26,6 +26,8 @@
*/
package org.opends.server.api;
+import static org.opends.messages.BackendMessages.*;
+
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
@@ -36,8 +38,10 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ConditionResult;
+import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.opends.server.admin.Configuration;
+import org.opends.server.backends.pluggable.VerifyConfig;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
@@ -648,6 +652,37 @@
throws DirectoryException;
/**
+ * Indicates whether this backend supports indexing attributes to speed up searches.
+ *
+ * @return {@code true} if this backend supports indexing attributes, {@code false} otherwise
+ */
+ public boolean supportsIndexing()
+ {
+ return false;
+ }
+
+ /**
+ * Verify the integrity of the backend instance.
+ *
+ * @param verifyConfig
+ * The verify configuration.
+ * @return The results of the operation.
+ * @throws ConfigException
+ * If an unrecoverable problem arises during initialization.
+ * @throws InitializationException
+ * If a problem occurs during initialization that is not related to the server
+ * configuration.
+ * @throws DirectoryException
+ * If a Directory Server error occurs.
+ */
+ public long verifyBackend(VerifyConfig verifyConfig)
+ throws InitializationException, ConfigException, DirectoryException
+ {
+ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
+ ERR_INDEXES_NOT_SUPPORTED.get(getBackendID()));
+ }
+
+ /**
* Indicates whether this backend provides a backup mechanism of any
* kind. This method is used by the backup process when backing up
* all backends to determine whether this backend is one that should
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
index c94b73d..0b38f29 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -57,6 +57,7 @@
import org.opends.server.api.DiskSpaceMonitorHandler;
import org.opends.server.api.MonitorProvider;
import org.opends.server.backends.jeb.importLDIF.Importer;
+import org.opends.server.backends.pluggable.VerifyConfig;
import org.opends.server.core.*;
import org.opends.server.extensions.DiskSpaceMonitor;
import org.opends.server.types.*;
@@ -818,19 +819,16 @@
return envConfig;
}
- /**
- * Verify the integrity of the backend instance.
- * @param verifyConfig The verify configuration.
- * @param statEntry Optional entry to save stats into.
- * @return The error count.
- * @throws ConfigException If an unrecoverable problem arises during
- * initialization.
- * @throws InitializationException If a problem occurs during initialization
- * that is not related to the server
- * configuration.
- * @throws DirectoryException If a Directory Server error occurs.
- */
- public long verifyBackend(VerifyConfig verifyConfig, Entry statEntry)
+ /** {@inheritDoc} */
+ @Override
+ public boolean supportsIndexing()
+ {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public long verifyBackend(VerifyConfig verifyConfig)
throws InitializationException, ConfigException, DirectoryException
{
// If the backend already has the root container open, we must use the same
@@ -844,7 +842,7 @@
}
VerifyJob verifyJob = new VerifyJob(verifyConfig);
- return verifyJob.verifyBackend(rootContainer, statEntry);
+ return verifyJob.verifyBackend(rootContainer);
}
catch (DatabaseException e)
{
@@ -1030,7 +1028,6 @@
public ConfigChangeResult applyConfigurationChange(LocalDBBackendCfg newCfg)
{
final ConfigChangeResult ccr = new ConfigChangeResult();
-
try
{
if(rootContainer != null)
@@ -1064,7 +1061,6 @@
ccr.addMessage(LocalizableMessage.raw(stackTraceToSingleLineString(e)));
ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
}
-
return ccr;
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyConfig.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyConfig.java
deleted file mode 100644
index 12e0029..0000000
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyConfig.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
- * or http://forgerock.org/license/CDDLv1.0.html.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at legal-notices/CDDLv1_0.txt.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information:
- * Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- * Copyright 2006-2008 Sun Microsystems, Inc.
- */
-package org.opends.server.backends.jeb;
-
-import org.opends.server.types.DN;
-
-import java.util.ArrayList;
-
-/**
- * This class represents the configuration of a JE backend verification process.
- */
-public class VerifyConfig
-{
- /**
- * The base DN to be verified.
- */
- private DN baseDN;
-
- /**
- * The names of indexes to be verified for completeness.
- */
- private ArrayList<String> completeList;
-
- /**
- * The names of indexes to be verified for cleanliness.
- */
- private ArrayList<String> cleanList;
-
- /**
- * Create a new verify configuration.
- */
- public VerifyConfig()
- {
- baseDN = null;
- completeList = new ArrayList<String>();
- cleanList = new ArrayList<String>();
- }
-
- /**
- * Get the base DN to be verified.
- * @return The base DN to be verified.
- */
- public DN getBaseDN()
- {
- return baseDN;
- }
-
- /**
- * Set the base DN to be verified.
- * @param baseDN The base DN to be verified.
- */
- public void setBaseDN(DN baseDN)
- {
- this.baseDN = baseDN;
- }
-
- /**
- * Get the names of indexes to be verified for completeness.
- * @return The names of indexes to be verified for completeness.
- */
- public ArrayList<String> getCompleteList()
- {
- return completeList;
- }
-
- /**
- * Add the name of an index to those indexes to be verified for completeness.
- * @param index The name of an index to be verified for completeness.
- */
- public void addCompleteIndex(String index)
- {
- completeList.add(index);
- }
-
- /**
- * Get the names of indexes to be verified for cleanliness.
- * @return The names of indexes to be verified for cleanliness.
- */
- public ArrayList<String> getCleanList()
- {
- return cleanList;
- }
-
- /**
- * Add the name of an index to those indexes to be verified for cleanliness.
- * @param index The name of an index to be verified for cleanliness.
- */
- public void addCleanIndex(String index)
- {
- cleanList.add(index);
- }
-}
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java
index df6cd5e..1893262 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java
@@ -39,6 +39,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.spi.IndexingOptions;
+import org.opends.server.backends.pluggable.VerifyConfig;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.*;
import org.opends.server.util.ServerConstants;
@@ -113,14 +114,12 @@
* Verify the backend.
*
* @param rootContainer The root container that holds the entries to verify.
- * @param statEntry Optional statistics entry.
* @return The error count.
* @throws DatabaseException If an error occurs in the JE database.
* @throws JebException If an error occurs in the JE backend.
* @throws DirectoryException If an error occurs while verifying the backend.
*/
- public long verifyBackend(RootContainer rootContainer, Entry statEntry) throws
- DatabaseException, JebException, DirectoryException
+ public long verifyBackend(RootContainer rootContainer) throws DatabaseException, JebException, DirectoryException
{
this.rootContainer = rootContainer;
EntryContainer entryContainer =
@@ -277,11 +276,9 @@
rate = 1000f*keyCount / totalTime;
}
- addStatEntry(statEntry, "verify-error-count", String.valueOf(errorCount));
- addStatEntry(statEntry, "verify-key-count", String.valueOf(keyCount));
if (cleanMode)
{
- logger.info(NOTE_JEB_VERIFY_CLEAN_FINAL_STATUS, keyCount, errorCount, totalTime/1000, rate);
+ logger.info(NOTE_JEB_VERIFY_CLEAN_FINAL_STATUS, keyCount, errorCount, totalTime / 1000, rate);
if (multiReferenceCount > 0)
{
@@ -291,27 +288,18 @@
averageEntryReferences = entryReferencesCount/keyCount;
}
- logger.debug(INFO_JEB_VERIFY_MULTIPLE_REFERENCE_COUNT, multiReferenceCount);
- addStatEntry(statEntry, "verify-multiple-reference-count",
- String.valueOf(multiReferenceCount));
-
- logger.debug(INFO_JEB_VERIFY_ENTRY_LIMIT_EXCEEDED_COUNT, entryLimitExceededCount);
- addStatEntry(statEntry, "verify-entry-limit-exceeded-count",
- String.valueOf(entryLimitExceededCount));
-
- logger.debug(INFO_JEB_VERIFY_AVERAGE_REFERENCE_COUNT, averageEntryReferences);
- addStatEntry(statEntry, "verify-average-reference-count",
- String.valueOf(averageEntryReferences));
-
- logger.debug(INFO_JEB_VERIFY_MAX_REFERENCE_COUNT, maxEntryPerValue);
- addStatEntry(statEntry, "verify-max-reference-count",
- String.valueOf(maxEntryPerValue));
+ if (logger.isDebugEnabled())
+ {
+ logger.debug(INFO_JEB_VERIFY_MULTIPLE_REFERENCE_COUNT, multiReferenceCount);
+ logger.debug(INFO_JEB_VERIFY_ENTRY_LIMIT_EXCEEDED_COUNT, entryLimitExceededCount);
+ logger.debug(INFO_JEB_VERIFY_AVERAGE_REFERENCE_COUNT, averageEntryReferences);
+ logger.debug(INFO_JEB_VERIFY_MAX_REFERENCE_COUNT, maxEntryPerValue);
+ }
}
}
else
{
logger.info(NOTE_JEB_VERIFY_FINAL_STATUS, keyCount, errorCount, totalTime/1000, rate);
- //TODO add entry-limit-stats to the statEntry
if (entryLimitMap.size() > 0)
{
logger.debug(INFO_JEB_VERIFY_ENTRY_LIMIT_STATS_HEADER);
@@ -359,13 +347,11 @@
{
DiskOrderedCursor cursor =
id2entry.openCursor(new DiskOrderedCursorConfig());
+ long storedEntryCount = id2entry.getRecordCount();
try
{
DatabaseEntry key = new DatabaseEntry();
DatabaseEntry data = new DatabaseEntry();
-
- Long storedEntryCount = id2entry.getRecordCount();
-
while (cursor.getNext(key, data, null) == OperationStatus.SUCCESS)
{
EntryID entryID;
@@ -1732,20 +1718,4 @@
previousTime = latestTime;
}
}
-
- /**
- * Adds an attribute of type t and value v to the statEntry, only if the
- * statEntry is not null.
- * @param statEntry passed in from backentryImpl.verifyBackend.
- * @param t String to be used as the attribute type.
- * @param v String to be used as the attribute value.
- */
- private void addStatEntry(Entry statEntry, String t, String v)
- {
- if (statEntry != null)
- {
- Attribute a = Attributes.create(t, v);
- statEntry.addAttribute(a, null);
- }
- }
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/BackendImpl.java b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/BackendImpl.java
index a2cd815..e358851 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/BackendImpl.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/BackendImpl.java
@@ -693,19 +693,16 @@
return new RootContainer(this, cfg).importLDIF(importConfig);
}
- /**
- * Verify the integrity of the backend instance.
- * @param verifyConfig The verify configuration.
- * @param statEntry Optional entry to save stats into.
- * @return The error count.
- * @throws ConfigException If an unrecoverable problem arises during
- * initialization.
- * @throws InitializationException If a problem occurs during initialization
- * that is not related to the server
- * configuration.
- * @throws DirectoryException If a Directory Server error occurs.
- */
- public long verifyBackend(VerifyConfig verifyConfig, Entry statEntry)
+ /** {@inheritDoc} */
+ @Override
+ public boolean supportsIndexing()
+ {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public long verifyBackend(VerifyConfig verifyConfig)
throws InitializationException, ConfigException, DirectoryException
{
// If the backend already has the root container open, we must use the same
@@ -719,7 +716,7 @@
}
VerifyJob verifyJob = new VerifyJob(verifyConfig);
- return verifyJob.verifyBackend(rootContainer, statEntry);
+ return verifyJob.verifyBackend(rootContainer);
}
catch (StorageRuntimeException e)
{
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyConfig.java b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyConfig.java
index 712e582..1a953c8 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyConfig.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyConfig.java
@@ -22,43 +22,27 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2014 ForgeRock AS
+ * Portions Copyright 2014-2015 ForgeRock AS
*/
package org.opends.server.backends.pluggable;
-import org.opends.server.types.DN;
-
import java.util.ArrayList;
+import java.util.List;
+
+import org.forgerock.util.Reject;
+import org.opends.server.types.DN;
/**
* This class represents the configuration of a JE backend verification process.
*/
public class VerifyConfig
{
- /**
- * The base DN to be verified.
- */
+ /** The base DN to be verified. */
private DN baseDN;
-
- /**
- * The names of indexes to be verified for completeness.
- */
- private ArrayList<String> completeList;
-
- /**
- * The names of indexes to be verified for cleanliness.
- */
- private ArrayList<String> cleanList;
-
- /**
- * Create a new verify configuration.
- */
- public VerifyConfig()
- {
- baseDN = null;
- completeList = new ArrayList<String>();
- cleanList = new ArrayList<String>();
- }
+ /** The names of indexes to be verified for completeness. */
+ private ArrayList<String> completeList = new ArrayList<String>();
+ /** The names of indexes to be verified for cleanliness. */
+ private ArrayList<String> cleanList = new ArrayList<String>();
/**
* Get the base DN to be verified.
@@ -82,7 +66,7 @@
* Get the names of indexes to be verified for completeness.
* @return The names of indexes to be verified for completeness.
*/
- public ArrayList<String> getCompleteList()
+ public List<String> getCompleteList()
{
return completeList;
}
@@ -93,6 +77,7 @@
*/
public void addCompleteIndex(String index)
{
+ Reject.ifNull(index);
completeList.add(index);
}
@@ -100,7 +85,7 @@
* Get the names of indexes to be verified for cleanliness.
* @return The names of indexes to be verified for cleanliness.
*/
- public ArrayList<String> getCleanList()
+ public List<String> getCleanList()
{
return cleanList;
}
@@ -111,6 +96,7 @@
*/
public void addCleanIndex(String index)
{
+ Reject.ifNull(index);
cleanList.add(index);
}
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyJob.java b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyJob.java
index 03e5c59..05e6117 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyJob.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VerifyJob.java
@@ -59,7 +59,6 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.Attribute;
import org.opends.server.types.AttributeType;
-import org.opends.server.types.Attributes;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
@@ -133,13 +132,11 @@
* Verify the backend.
*
* @param rootContainer The root container that holds the entries to verify.
- * @param statEntry Optional statistics entry.
* @return The error count.
* @throws StorageRuntimeException If an error occurs in the JE database.
* @throws DirectoryException If an error occurs while verifying the backend.
*/
- public long verifyBackend(final RootContainer rootContainer, final Entry statEntry) throws StorageRuntimeException,
- DirectoryException
+ public long verifyBackend(final RootContainer rootContainer) throws StorageRuntimeException, DirectoryException
{
try
{
@@ -148,7 +145,7 @@
@Override
public Long run(ReadableStorage txn) throws Exception
{
- return verifyBackend0(txn, rootContainer, statEntry);
+ return verifyBackend0(txn, rootContainer);
}
});
}
@@ -158,7 +155,7 @@
}
}
- private long verifyBackend0(ReadableStorage txn, RootContainer rootContainer, Entry statEntry)
+ private long verifyBackend0(ReadableStorage txn, RootContainer rootContainer)
throws StorageRuntimeException, DirectoryException
{
this.rootContainer = rootContainer;
@@ -316,8 +313,6 @@
rate = 1000f*keyCount / totalTime;
}
- addStatEntry(statEntry, "verify-error-count", String.valueOf(errorCount));
- addStatEntry(statEntry, "verify-key-count", String.valueOf(keyCount));
if (cleanMode)
{
logger.info(NOTE_JEB_VERIFY_CLEAN_FINAL_STATUS, keyCount, errorCount, totalTime/1000, rate);
@@ -330,27 +325,18 @@
averageEntryReferences = entryReferencesCount/keyCount;
}
- logger.debug(INFO_JEB_VERIFY_MULTIPLE_REFERENCE_COUNT, multiReferenceCount);
- addStatEntry(statEntry, "verify-multiple-reference-count",
- String.valueOf(multiReferenceCount));
-
- logger.debug(INFO_JEB_VERIFY_ENTRY_LIMIT_EXCEEDED_COUNT, entryLimitExceededCount);
- addStatEntry(statEntry, "verify-entry-limit-exceeded-count",
- String.valueOf(entryLimitExceededCount));
-
- logger.debug(INFO_JEB_VERIFY_AVERAGE_REFERENCE_COUNT, averageEntryReferences);
- addStatEntry(statEntry, "verify-average-reference-count",
- String.valueOf(averageEntryReferences));
-
- logger.debug(INFO_JEB_VERIFY_MAX_REFERENCE_COUNT, maxEntryPerValue);
- addStatEntry(statEntry, "verify-max-reference-count",
- String.valueOf(maxEntryPerValue));
+ if (logger.isDebugEnabled())
+ {
+ logger.debug(INFO_JEB_VERIFY_MULTIPLE_REFERENCE_COUNT, multiReferenceCount);
+ logger.debug(INFO_JEB_VERIFY_ENTRY_LIMIT_EXCEEDED_COUNT, entryLimitExceededCount);
+ logger.debug(INFO_JEB_VERIFY_AVERAGE_REFERENCE_COUNT, averageEntryReferences);
+ logger.debug(INFO_JEB_VERIFY_MAX_REFERENCE_COUNT, maxEntryPerValue);
+ }
}
}
else
{
logger.info(NOTE_JEB_VERIFY_FINAL_STATUS, keyCount, errorCount, totalTime/1000, rate);
- //TODO add entry-limit-stats to the statEntry
if (entryLimitMap.size() > 0)
{
logger.debug(INFO_JEB_VERIFY_ENTRY_LIMIT_STATS_HEADER);
@@ -1695,20 +1681,4 @@
previousTime = latestTime;
}
}
-
- /**
- * Adds an attribute of type t and value v to the statEntry, only if the
- * statEntry is not null.
- * @param statEntry passed in from backentryImpl.verifyBackend.
- * @param t String to be used as the attribute type.
- * @param v String to be used as the attribute value.
- */
- private void addStatEntry(Entry statEntry, String t, String v)
- {
- if (statEntry != null)
- {
- Attribute a = Attributes.create(t, v);
- statEntry.addAttribute(a, null);
- }
- }
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/tools/VerifyIndex.java b/opendj3-server-dev/src/server/org/opends/server/tools/VerifyIndex.java
index 5a632c4..f24563f 100644
--- a/opendj3-server-dev/src/server/org/opends/server/tools/VerifyIndex.java
+++ b/opendj3-server-dev/src/server/org/opends/server/tools/VerifyIndex.java
@@ -22,18 +22,15 @@
*
*
* Copyright 2006-2008 Sun Microsystems, Inc.
- * Portions Copyright 2012-2014 ForgeRock AS.
+ * Portions Copyright 2012-2015 ForgeRock AS.
*/
package org.opends.server.tools;
-
+import static com.forgerock.opendj.cli.ArgumentConstants.*;
+import static com.forgerock.opendj.cli.Utils.*;
import static org.opends.messages.ToolMessages.*;
-import static com.forgerock.opendj.cli.ArgumentConstants.*;
-import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
-import static com.forgerock.opendj.cli.Utils.wrapText;
-import static com.forgerock.opendj.cli.Utils.filterExitCode;
import java.io.OutputStream;
import java.io.PrintStream;
@@ -42,11 +39,10 @@
import java.util.logging.Level;
import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.admin.std.server.BackendCfg;
import org.opends.server.api.Backend;
-import org.opends.server.backends.jeb.BackendImpl;
-import org.opends.server.backends.jeb.VerifyConfig;
-import org.forgerock.opendj.config.server.ConfigException;
+import org.opends.server.backends.pluggable.VerifyConfig;
import org.opends.server.core.CoreConfigManager;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
@@ -64,7 +60,6 @@
import com.forgerock.opendj.cli.CommonArguments;
import com.forgerock.opendj.cli.StringArgument;
-
/**
* This program provides a utility to verify the contents of the indexes
* of a Directory Server backend. This will be a process that is
@@ -82,7 +77,6 @@
public static void main(String[] args)
{
int retCode = mainVerifyIndex(args, true, System.out, System.err);
-
if(retCode != 0)
{
System.exit(filterExitCode(retCode));
@@ -384,7 +378,7 @@
// Get information about the backends defined in the server. Iterate
// through them, finding the one backend to be verified.
- Backend backend = null;
+ Backend<?> backend = null;
ArrayList<Backend> backendList = new ArrayList<Backend>();
ArrayList<BackendCfg> entryList = new ArrayList<BackendCfg>();
@@ -394,7 +388,7 @@
int numBackends = backendList.size();
for (int i=0; i < numBackends; i++)
{
- Backend b = backendList.get(i);
+ Backend<?> b = backendList.get(i);
List<DN> baseDNs = dnList.get(i);
for (DN baseDN : baseDNs)
@@ -403,7 +397,7 @@
{
if (backend == null)
{
- backend = b;
+ backend = b;
}
else
{
@@ -421,7 +415,7 @@
return 1;
}
- if (!(backend instanceof BackendImpl))
+ if (!backend.supportsIndexing())
{
err.println(wrapText(ERR_BACKEND_NO_INDEXING_SUPPORT.get(), MAX_LINE_WIDTH));
return 1;
@@ -470,8 +464,7 @@
int returnCode = 0 ;
try
{
- BackendImpl jebBackend = (BackendImpl)backend;
- long errorCount = jebBackend.verifyBackend(verifyConfig, null);
+ final long errorCount = backend.verifyBackend(verifyConfig);
if (countErrors.isPresent())
{
if (errorCount > Integer.MAX_VALUE)
@@ -512,4 +505,3 @@
return returnCode;
}
}
-
diff --git a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestImportJob.java b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestImportJob.java
index 5e6bb3f..9202f36 100644
--- a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestImportJob.java
+++ b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestImportJob.java
@@ -26,17 +26,18 @@
*/
package org.opends.server.backends.jeb;
+import static org.testng.Assert.*;
+
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.TestCaseUtils;
+import org.opends.server.api.Backend;
+import org.opends.server.backends.pluggable.VerifyConfig;
import org.opends.server.core.DirectoryServer;
import org.opends.server.tasks.TaskUtils;
import org.opends.server.types.*;
@@ -44,20 +45,15 @@
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import static org.opends.server.util.ServerConstants.*;
-import static org.testng.Assert.*;
-
@SuppressWarnings("javadoc")
public class TestImportJob extends JebTestCase
{
- private String beID = "importRoot";
+ private String backendID = "importRoot";
private File tempDir;
private String homeDirName;
private DN[] baseDNs;
- private BackendImpl be;
-
- private String errorCount = "verify-error-count";
+ private Backend<?> backend;
// @formatter:off
private String top =
@@ -240,8 +236,7 @@
// This test suite depends on having the schema available, so we'll make
// sure the server is started.
TestCaseUtils.startServer();
- // Enable the backend
- TestCaseUtils.enableBackend(beID);
+ TestCaseUtils.enableBackend(backendID);
tempDir = TestCaseUtils.createTemporaryDirectory("jebimporttest");
homeDirName = tempDir.getAbsolutePath();
@@ -291,8 +286,7 @@
@AfterClass
public void cleanUp() throws Exception
{
- TestCaseUtils.disableBackend(beID);
- //TestCaseUtils.deleteDirectory(tempDir);
+ TestCaseUtils.disableBackend(backendID);
}
@@ -300,7 +294,7 @@
@Test(enabled = true)
public void testImportAll() throws Exception
{
- TestCaseUtils.clearJEBackend(beID);
+ TestCaseUtils.clearJEBackend(backendID);
ArrayList<String> fileList = new ArrayList<String>();
fileList.add(homeDirName + File.separator + "top.ldif");
fileList.add(homeDirName + File.separator + "entries1.ldif");
@@ -316,8 +310,8 @@
importLDIF(importConfig);
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- RootContainer rootContainer = be.getRootContainer();
+ backend = DirectoryServer.getBackend(backendID);
+ RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
EntryContainer entryContainer;
assertTrue(rejectedEntries.size() <= 0);
@@ -346,10 +340,8 @@
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(baseDN);
- Entry statEntry = bldStatEntry("");
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
else if (baseDN.toString().equals("dc=importtest1,dc=com"))
{
@@ -363,16 +355,13 @@
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(baseDN);
- Entry statEntry = bldStatEntry("");
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
}
finally
{
entryContainer.sharedLock.unlock();
-
}
}
}
@@ -404,8 +393,8 @@
importLDIF(importConfig);
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- RootContainer rootContainer = be.getRootContainer();
+ backend = DirectoryServer.getBackend(backendID);
+ RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
EntryContainer entryContainer;
assertTrue(rejectedEntries.size() <= 0);
@@ -433,10 +422,8 @@
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(baseDN);
- Entry statEntry = bldStatEntry("");
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
else if (baseDN.toString().equals("dc=importtest1,dc=com"))
{
@@ -450,16 +437,13 @@
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(baseDN);
- Entry statEntry = bldStatEntry("");
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
}
finally
{
entryContainer.sharedLock.unlock();
-
}
}
}
@@ -479,8 +463,8 @@
importLDIF(importConfig);
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- RootContainer rootContainer = be.getRootContainer();
+ backend = DirectoryServer.getBackend(backendID);
+ RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
EntryContainer entryContainer;
entryContainer = rootContainer.getEntryContainer(DN
@@ -503,10 +487,8 @@
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(DN.valueOf("dc=importtest1,dc=com"));
- Entry statEntry = bldStatEntry("");
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
finally
{
@@ -537,7 +519,7 @@
@Test(dependsOnMethods = "testImportReplaceExisting")
public void testImportAppend() throws Exception
{
- TestCaseUtils.clearJEBackend(beID);
+ TestCaseUtils.clearJEBackend(backendID);
LDIFImportConfig importConfig = new LDIFImportConfig(homeDirName
+ File.separator + "top.ldif");
@@ -555,8 +537,8 @@
importLDIF(importConfig);
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- RootContainer rootContainer = be.getRootContainer();
+ backend = DirectoryServer.getBackend(backendID);
+ RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
EntryContainer entryContainer;
for (DN baseDN : baseDNs)
@@ -590,7 +572,7 @@
finally
{
entryContainer.sharedLock.unlock();
- TaskUtils.enableBackend(beID);
+ TaskUtils.enableBackend(backendID);
}
}
}
@@ -640,72 +622,15 @@
private void importLDIF(LDIFImportConfig importConfig) throws DirectoryException
{
- be = (BackendImpl) DirectoryServer.getBackend(beID);
- TaskUtils.disableBackend(beID);
+ backend = DirectoryServer.getBackend(backendID);
+ TaskUtils.disableBackend(backendID);
try
{
- be.importLDIF(importConfig);
+ backend.importLDIF(importConfig);
}
finally
{
- TaskUtils.enableBackend(beID);
+ TaskUtils.enableBackend(backendID);
}
}
-
- /**
- * Builds an entry suitable for using in the verify job to gather statistics
- * about the verify.
- *
- * @param dn
- * to put into the entry.
- * @return a suitable entry.
- * @throws DirectoryException
- * if the cannot be created.
- */
- private Entry bldStatEntry(String dn) throws DirectoryException
- {
- DN entryDN = DN.valueOf(dn);
- HashMap<ObjectClass, String> ocs = new HashMap<ObjectClass, String>(2);
- ObjectClass topOC = DirectoryServer.getObjectClass(OC_TOP);
- if (topOC == null)
- {
- topOC = DirectoryServer.getDefaultObjectClass(OC_TOP);
- }
- ocs.put(topOC, OC_TOP);
- ObjectClass extensibleObjectOC = DirectoryServer
- .getObjectClass(OC_EXTENSIBLE_OBJECT);
- if (extensibleObjectOC == null)
- {
- extensibleObjectOC = DirectoryServer
- .getDefaultObjectClass(OC_EXTENSIBLE_OBJECT);
- }
- ocs.put(extensibleObjectOC, OC_EXTENSIBLE_OBJECT);
- return new Entry(entryDN, ocs,
- new LinkedHashMap<AttributeType, List<Attribute>>(0),
- new HashMap<AttributeType, List<Attribute>>(0));
- }
-
-
-
- /**
- * Gets information from the stat entry and returns that value as a Long.
- *
- * @param e
- * entry to search.
- * @param type
- * attribute type
- * @return Long
- * @throws NumberFormatException
- * if the attribute value cannot be parsed.
- */
- private long getStatEntryCount(Entry e, String type)
- throws NumberFormatException
- {
- AttributeType attrType = DirectoryServer.getAttributeType(type);
- if (attrType == null)
- attrType = DirectoryServer.getDefaultAttributeType(type);
- List<Attribute> attrList = e.getAttribute(attrType, null);
- ByteString v = attrList.get(0).iterator().next();
- return Long.parseLong(v.toString());
- }
}
diff --git a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java
index e9f0156..52e778d 100644
--- a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java
+++ b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestRebuildJob.java
@@ -22,40 +22,35 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
- * Portions Copyright 2011-2014 ForgeRock AS
+ * Portions Copyright 2011-2015 ForgeRock AS
*/
package org.opends.server.backends.jeb;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
+import static org.testng.Assert.*;
-import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.TestCaseUtils;
import org.opends.server.backends.jeb.RebuildConfig.RebuildMode;
+import org.opends.server.backends.pluggable.VerifyConfig;
import org.opends.server.core.DirectoryServer;
import org.opends.server.tasks.TaskUtils;
-import org.opends.server.types.*;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.InitializationException;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import static org.opends.server.util.ServerConstants.*;
-import static org.testng.Assert.*;
-
@SuppressWarnings("javadoc")
public class TestRebuildJob extends JebTestCase
{
- private String beID="rebuildRoot";
+ private String backendID = "rebuildRoot";
private static String suffix="dc=rebuild,dc=jeb";
private static String vBranch="ou=rebuild tests," + suffix;
private String numUsersLine="define numusers= #numEntries#";
- //Attribute type in stat entry containing error count
- private String errorCount="verify-error-count";
private DN[] baseDNs;
- private BackendImpl be;
+ private BackendImpl backend;
@DataProvider(name = "systemIndexes")
public Object[][] systemIndexes() {
@@ -129,7 +124,7 @@
@BeforeClass
public void setup() throws Exception {
TestCaseUtils.startServer();
- TestCaseUtils.enableBackend(beID);
+ TestCaseUtils.enableBackend(backendID);
baseDNs = new DN[] {
DN.valueOf(suffix)
};
@@ -137,8 +132,8 @@
@AfterClass
public void cleanUp() throws Exception {
- TestCaseUtils.clearJEBackend(beID);
- TestCaseUtils.disableBackend(beID);
+ TestCaseUtils.clearJEBackend(backendID);
+ TestCaseUtils.disableBackend(backendID);
}
/**
@@ -147,7 +142,7 @@
* @throws Exception if the entries are not loaded or created.
*/
private void cleanAndLoad(int numEntries) throws Exception {
- TestCaseUtils.clearJEBackend(beID);
+ TestCaseUtils.clearJEBackend(backendID);
template[2]=numUsersLine;
template[2]=
template[2].replaceAll("#numEntries#", String.valueOf(numEntries));
@@ -166,8 +161,8 @@
RebuildConfig rebuildConfig = new RebuildConfig();
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex(index);
- be=(BackendImpl) DirectoryServer.getBackend(beID);
- be.rebuildBackend(rebuildConfig);
+ backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+ backend.rebuildBackend(rebuildConfig);
if(index.contains(".") && !index.startsWith("vlv."))
{
@@ -193,9 +188,8 @@
RebuildConfig rebuildConfig = new RebuildConfig();
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex("id2entry");
- be=(BackendImpl) DirectoryServer.getBackend(beID);
-
- be.rebuildBackend(rebuildConfig);
+ backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+ backend.rebuildBackend(rebuildConfig);
}
@@ -213,14 +207,13 @@
RebuildConfig rebuildConfig = new RebuildConfig();
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex("id2entry");
- be=(BackendImpl) DirectoryServer.getBackend(beID);
-
- TaskUtils.disableBackend(beID);
+ backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+ TaskUtils.disableBackend(backendID);
try {
- be.rebuildBackend(rebuildConfig);
+ backend.rebuildBackend(rebuildConfig);
} finally {
- TaskUtils.enableBackend(beID);
+ TaskUtils.enableBackend(backendID);
}
}
@@ -231,9 +224,8 @@
RebuildConfig rebuildConfig = new RebuildConfig();
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex(index);
- be=(BackendImpl) DirectoryServer.getBackend(beID);
-
- be.rebuildBackend(rebuildConfig);
+ backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+ backend.rebuildBackend(rebuildConfig);
}
@Test(dataProvider = "systemIndexes",
@@ -244,8 +236,8 @@
RebuildConfig rebuildConfig = new RebuildConfig();
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex(index);
- be=(BackendImpl) DirectoryServer.getBackend(beID);
- be.rebuildBackend(rebuildConfig);
+ backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+ backend.rebuildBackend(rebuildConfig);
}
@Test(dataProvider = "systemIndexes")
@@ -255,19 +247,19 @@
RebuildConfig rebuildConfig = new RebuildConfig();
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex(index);
- be=(BackendImpl) DirectoryServer.getBackend(beID);
+ backend = (BackendImpl) DirectoryServer.getBackend(backendID);
- TaskUtils.disableBackend(beID);
+ TaskUtils.disableBackend(backendID);
- be.rebuildBackend(rebuildConfig);
+ backend.rebuildBackend(rebuildConfig);
//TODO: Verify dn2uri database as well.
- if(!index.equalsIgnoreCase("dn2uri"))
+ if (!"dn2uri".equalsIgnoreCase(index))
{
assertEquals(verifyBackend(index), 0);
}
- TaskUtils.enableBackend(beID);
+ TaskUtils.enableBackend(backendID);
}
@Test
@@ -278,15 +270,7 @@
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.setRebuildMode(RebuildMode.ALL);
- be=(BackendImpl) DirectoryServer.getBackend(beID);
-
- TaskUtils.disableBackend(beID);
-
- be.rebuildBackend(rebuildConfig);
-
- assertEquals(verifyBackend(null), 0);
-
- TaskUtils.enableBackend(beID);
+ rebuildIndexes(rebuildConfig);
}
@Test
@@ -297,18 +281,9 @@
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.setRebuildMode(RebuildMode.DEGRADED);
- be=(BackendImpl) DirectoryServer.getBackend(beID);
-
- TaskUtils.disableBackend(beID);
-
- be.rebuildBackend(rebuildConfig);
-
- assertEquals(verifyBackend(null), 0);
-
- TaskUtils.enableBackend(beID);
+ rebuildIndexes(rebuildConfig);
}
-
@Test
public void testRebuildDN2ID() throws Exception
{
@@ -317,15 +292,22 @@
rebuildConfig.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex("dn2id");
- be=(BackendImpl) DirectoryServer.getBackend(beID);
+ rebuildIndexes(rebuildConfig);
+ }
- TaskUtils.disableBackend(beID);
-
- be.rebuildBackend(rebuildConfig);
-
- assertEquals(verifyBackend(null), 0);
-
- TaskUtils.enableBackend(beID);
+ private void rebuildIndexes(RebuildConfig rebuildConfig) throws Exception
+ {
+ backend = (BackendImpl) DirectoryServer.getBackend(backendID);
+ TaskUtils.disableBackend(backendID);
+ try
+ {
+ backend.rebuildBackend(rebuildConfig);
+ assertEquals(verifyBackend(null), 0);
+ }
+ finally
+ {
+ TaskUtils.enableBackend(backendID);
+ }
}
@Test
@@ -349,22 +331,24 @@
public void testRebuildMultipleJobs() throws Exception
{
RebuildConfig rebuildConfig = new RebuildConfig();
- RebuildConfig rebuildConfig2 = new RebuildConfig();
rebuildConfig.setBaseDN(baseDNs[0]);
- rebuildConfig2.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex("dn2id");
rebuildConfig.addRebuildIndex("id2children");
- rebuildConfig2.addRebuildIndex("dn2id");
rebuildConfig.addRebuildIndex("cn");
+ RebuildConfig rebuildConfig2 = new RebuildConfig();
+ rebuildConfig2.setBaseDN(baseDNs[0]);
+ rebuildConfig2.addRebuildIndex("dn2id");
+
assertNotNull(rebuildConfig.checkConflicts(rebuildConfig2));
assertNotNull(rebuildConfig2.checkConflicts(rebuildConfig));
rebuildConfig = new RebuildConfig();
- rebuildConfig2 = new RebuildConfig();
rebuildConfig.setBaseDN(baseDNs[0]);
- rebuildConfig2.setBaseDN(baseDNs[0]);
rebuildConfig.addRebuildIndex("cn");
+
+ rebuildConfig2 = new RebuildConfig();
+ rebuildConfig2.setBaseDN(baseDNs[0]);
rebuildConfig2.addRebuildIndex("cn.presence");
rebuildConfig2.addRebuildIndex("dn2id");
@@ -380,53 +364,6 @@
{
verifyConfig.addCleanIndex(index);
}
- Entry statEntry=bldStatEntry("");
- be.verifyBackend(verifyConfig, statEntry);
-
- return getStatEntryCount(statEntry, errorCount);
- }
-
- /**
- * Builds an entry suitable for using in the verify job to gather statistics about
- * the verify.
- * @param dn to put into the entry.
- * @return a suitable entry.
- * @throws DirectoryException if the cannot be created.
- */
- private Entry bldStatEntry(String dn) throws DirectoryException {
- DN entryDN = DN.valueOf(dn);
- HashMap<ObjectClass, String> ocs = new HashMap<ObjectClass, String>(2);
- ObjectClass topOC = DirectoryServer.getObjectClass(OC_TOP);
- if (topOC == null) {
- topOC = DirectoryServer.getDefaultObjectClass(OC_TOP);
- }
- ocs.put(topOC, OC_TOP);
- ObjectClass extensibleObjectOC = DirectoryServer
- .getObjectClass(OC_EXTENSIBLE_OBJECT);
- if (extensibleObjectOC == null) {
- extensibleObjectOC = DirectoryServer
- .getDefaultObjectClass(OC_EXTENSIBLE_OBJECT);
- }
- ocs.put(extensibleObjectOC, OC_EXTENSIBLE_OBJECT);
- return new Entry(entryDN, ocs,
- new LinkedHashMap<AttributeType, List<Attribute>>(0),
- new HashMap<AttributeType, List<Attribute>>(0));
- }
- /**
- * Gets information from the stat entry and returns that value as a Long.
- * @param e entry to search.
- * @param type attribute type
- * @return Long
- * @throws NumberFormatException if the attribute value cannot be parsed.
- */
- private long getStatEntryCount(Entry e, String type)
- throws NumberFormatException {
- AttributeType attrType =
- DirectoryServer.getAttributeType(type);
- if (attrType == null)
- attrType = DirectoryServer.getDefaultAttributeType(type);
- List<Attribute> attrList = e.getAttribute(attrType, null);
- ByteString v = attrList.get(0).iterator().next();
- return Long.parseLong(v.toString());
+ return backend.verifyBackend(verifyConfig);
}
}
diff --git a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVerifyJob.java b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVerifyJob.java
index c3c5b26..ff2aa22 100644
--- a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVerifyJob.java
+++ b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVerifyJob.java
@@ -22,16 +22,21 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions Copyright 2011-2014 ForgeRock AS
+ * Portions Copyright 2011-2015 ForgeRock AS
*/
package org.opends.server.backends.jeb;
+import static org.opends.server.util.ServerConstants.*;
+import static org.testng.Assert.*;
+
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import org.forgerock.opendj.ldap.ByteString;
import org.opends.server.TestCaseUtils;
+import org.opends.server.api.Backend;
+import org.opends.server.backends.pluggable.VerifyConfig;
import org.opends.server.core.DirectoryServer;
import org.opends.server.types.*;
import org.opends.server.util.StaticUtils;
@@ -46,21 +51,16 @@
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
-import static org.opends.server.util.ServerConstants.*;
-import static org.testng.Assert.*;
-
@SuppressWarnings("javadoc")
public class TestVerifyJob extends JebTestCase
{
/** Root suffix for verify backend. */
private static String suffix="dc=verify,dc=jeb";
private static String vBranch="ou=verify tests," + suffix;
- private String beID="verifyRoot";
+ private String backendID = "verifyRoot";
private String numUsersLine="define numusers= #numEntries#";
- /** Attribute type in stat entry containing error count. */
- private String errorCount="verify-error-count";
private DN[] baseDNs;
- private BackendImpl be;
+ private Backend<?> backend;
private EntryContainer eContainer;
private DN2ID dn2id;
private ID2Entry id2entry;
@@ -134,7 +134,7 @@
@BeforeClass
public void setup() throws Exception {
TestCaseUtils.startServer();
- TestCaseUtils.enableBackend(beID);
+ TestCaseUtils.enableBackend(backendID);
baseDNs = new DN[] {
DN.valueOf(suffix)
};
@@ -142,8 +142,8 @@
@AfterClass
public void cleanUp() throws Exception {
- TestCaseUtils.clearJEBackend(beID);
- TestCaseUtils.disableBackend(beID);
+ TestCaseUtils.clearJEBackend(backendID);
+ TestCaseUtils.disableBackend(backendID);
}
/**
@@ -158,10 +158,8 @@
cleanAndLoad(9);
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(baseDNs[0]);
- Entry statEntry=bldStatEntry("");
- be=(BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
/**
@@ -177,10 +175,8 @@
verifyConfig.setBaseDN(baseDNs[0]);
verifyConfig.addCleanIndex("telephoneNumber");
verifyConfig.addCleanIndex("givenName");
- Entry statEntry=bldStatEntry("");
- be=(BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
/**
@@ -196,10 +192,8 @@
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(baseDNs[0]);
verifyConfig.addCleanIndex(index);
- Entry statEntry=bldStatEntry("");
- be=(BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
/*
@@ -448,10 +442,9 @@
//Add entry with short id
byte[] shortBytes = new byte[3];
DatabaseEntry key= new DatabaseEntry(shortBytes);
- Entry testEntry=bldStatEntry(junkDN);
- ByteString entryBytes =
- ID2Entry.entryToDatabase(testEntry,
- new DataConfig(false, false, null));
+ Entry testEntry = buildEntry(junkDN);
+ DataConfig dataConfig = new DataConfig(false, false, null);
+ ByteString entryBytes = ID2Entry.entryToDatabase(testEntry, dataConfig);
DatabaseEntry data= new DatabaseEntry(entryBytes.toByteArray());
assertEquals(id2entry.put(txn, key, data), OperationStatus.SUCCESS);
@@ -770,10 +763,8 @@
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(baseDNs[0]);
verifyConfig.addCleanIndex("userPassword");
- Entry statEntry=bldStatEntry("");
- be=(BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), 0);
+ backend = DirectoryServer.getBackend(backendID);
+ assertEquals(backend.verifyBackend(verifyConfig), 0);
}
/**
@@ -786,9 +777,8 @@
VerifyConfig verifyConfig = new VerifyConfig();
verifyConfig.setBaseDN(baseDNs[0]);
verifyConfig.addCleanIndex(badIndexName);
- Entry statEntry=bldStatEntry("");
- be=(BackendImpl) DirectoryServer.getBackend(beID);
- be.verifyBackend(verifyConfig, statEntry);
+ backend = DirectoryServer.getBackend(backendID);
+ backend.verifyBackend(verifyConfig);
}
/* end tests */
@@ -805,7 +795,7 @@
private DatabaseEntry addID2EntryReturnKey(String dn, long id, boolean trashFormat)
throws Exception {
DatabaseEntry key= new EntryID(id).getDatabaseEntry();
- Entry testEntry=bldStatEntry(dn);
+ Entry testEntry = buildEntry(dn);
DataConfig dataConfig = new DataConfig(false, false, null);
byte []entryBytes = ID2Entry.entryToDatabase(testEntry, dataConfig).toByteArray();
if(trashFormat)
@@ -861,9 +851,7 @@
{
verifyConfig.addCleanIndex(indexToDo);
}
- Entry statEntry=bldStatEntry("");
- be.verifyBackend(verifyConfig, statEntry);
- assertEquals(getStatEntryCount(statEntry, errorCount), expectedErrors);
+ assertEquals(backend.verifyBackend(verifyConfig), expectedErrors);
}
@@ -877,8 +865,8 @@
*/
private void preTest(int numEntries) throws Exception {
cleanAndLoad(numEntries);
- be=(BackendImpl) DirectoryServer.getBackend(beID);
- RootContainer rContainer = be.getRootContainer();
+ backend = DirectoryServer.getBackend(backendID);
+ RootContainer rContainer = ((BackendImpl) backend).getRootContainer();
eContainer= rContainer.getEntryContainer(DN.valueOf(suffix));
id2child=eContainer.getID2Children();
id2entry=eContainer.getID2Entry();
@@ -893,7 +881,7 @@
* @throws Exception if the entries are not loaded or created.
*/
private void cleanAndLoad(int numEntries) throws Exception {
- TestCaseUtils.clearJEBackend(beID);
+ TestCaseUtils.clearJEBackend(backendID);
template[2]=numUsersLine;
template[2]=
template[2].replaceAll("#numEntries#", String.valueOf(numEntries));
@@ -901,32 +889,13 @@
}
/**
- * Gets information from the stat entry and returns that value as a Long.
- * @param e entry to search.
- * @param type attribute type
- * @return Long
- * @throws NumberFormatException if the attribute value cannot be parsed.
- */
- private long getStatEntryCount(Entry e, String type)
- throws NumberFormatException {
- AttributeType attrType = DirectoryServer.getAttributeType(type);
- if (attrType == null)
- {
- attrType = DirectoryServer.getDefaultAttributeType(type);
- }
- List<Attribute> attrList = e.getAttribute(attrType, null);
- ByteString v = attrList.get(0).iterator().next();
- return Long.parseLong(v.toString());
- }
-
- /**
- * Builds an entry suitable for using in the verify job to gather statistics about
- * the verify.
+ * Builds an entry.
+ *
* @param dn to put into the entry.
- * @return a suitable entry.
- * @throws DirectoryException if the cannot be created.
+ * @return a new entry.
+ * @throws DirectoryException if the entry cannot be created.
*/
- private Entry bldStatEntry(String dn) throws DirectoryException {
+ private Entry buildEntry(String dn) throws DirectoryException {
DN entryDN = DN.valueOf(dn);
HashMap<ObjectClass, String> ocs = new HashMap<ObjectClass, String>(2);
ObjectClass topOC = DirectoryServer.getObjectClass(OC_TOP);
--
Gitblit v1.10.0