mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
14.11.2014 87c7d8eee45762a26567f98ebe3338602b567b74
OPENDJ-1308 (CR-3156) Migrate schema support - ByteString - Indexer

EntryIDSet.java:
In ctor, changed second argument to take a ByteString too.

TestVerifyJob.java:
Consequence of the change to EntryIDSet.

VerifyJob.java:
Removed dead code.
3 files modified
64 ■■■■■ changed files
opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryIDSet.java 13 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java 4 ●●●● patch | view | raw | blame | history
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVerifyJob.java 47 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/jeb/EntryIDSet.java
@@ -86,7 +86,8 @@
   */
  public EntryIDSet(byte[] keyBytes, byte[] bytes)
  {
    this(keyBytes != null ? ByteString.wrap(keyBytes) : null, bytes);
    this(keyBytes != null ? ByteString.wrap(keyBytes) : null,
        bytes != null ? ByteString.wrap(bytes) : null);
  }
  /**
@@ -97,7 +98,7 @@
   * @param bytes
   *          The database value, or null if there are no entry IDs.
   */
  public EntryIDSet(ByteString keyBytes, byte[] bytes)
  public EntryIDSet(ByteString keyBytes, ByteString bytes)
  {
    this.keyBytes = keyBytes;
@@ -107,23 +108,23 @@
      return;
    }
    if (bytes.length == 0)
    if (bytes.length() == 0)
    {
      // Entry limit has exceeded and there is no encoded undefined set size.
      values = null;
      undefinedSize = Long.MAX_VALUE;
    }
    else if ((bytes[0] & 0x80) == 0x80)
    else if ((bytes.byteAt(0) & 0x80) == 0x80)
    {
      // Entry limit has exceeded and there is an encoded undefined set size.
      values = null;
      undefinedSize = JebFormat.entryIDUndefinedSizeFromDatabase(bytes);
      undefinedSize = bytes.toLong();
    }
    else
    {
      // Seems like entry limit has not been exceeded and the bytes is a
      // list of entry IDs.
      values = JebFormat.entryIDListFromDatabase(bytes);
      values = JebFormat.entryIDListFromDatabase(bytes.toByteArray());
    }
  }
opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java
@@ -670,10 +670,8 @@
        }
        EntryIDSet entryIDList;
        try
        {
          JebFormat.entryIDListFromDatabase(data.getData());
          entryIDList = new EntryIDSet(key.getData(), data.getData());
        }
        catch (Exception e)
@@ -805,7 +803,6 @@
        EntryIDSet entryIDList;
        try
        {
          JebFormat.entryIDListFromDatabase(data.getData());
          entryIDList = new EntryIDSet(key.getData(), data.getData());
        }
        catch (Exception e)
@@ -1095,7 +1092,6 @@
        EntryIDSet entryIDList;
        try
        {
          JebFormat.entryIDListFromDatabase(data.getData());
          entryIDList = new EntryIDSet(key.getData(), data.getData());
        }
        catch (Exception e)
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVerifyJob.java
@@ -48,6 +48,7 @@
import static org.opends.server.util.ServerConstants.*;
import static org.testng.Assert.*;
@SuppressWarnings("javadoc")
public class TestVerifyJob extends JebTestCase
{
  //Root suffix for verify backend
@@ -228,10 +229,8 @@
      id=new EntryID(3);
      assertTrue(dn2id.insert(txn, testDN, id));
      //Add badDN key with bad entry id
      DatabaseEntry key=
           new DatabaseEntry(StaticUtils.getBytes(badDN));
      DatabaseEntry data =
           new EntryID(37).getDatabaseEntry();
      DatabaseEntry key = new DatabaseEntry(StaticUtils.getBytes(badDN));
      DatabaseEntry data = new EntryID(37).getDatabaseEntry();
      assertEquals(dn2id.put(txn, key, data), OperationStatus.SUCCESS);
      //Add DN key with malformed entryID
      key=new DatabaseEntry(StaticUtils.getBytes(junkDN2));
@@ -281,7 +280,7 @@
      idBytes[15] = (byte)1;
      //bad jeb format
      idBytes[23] = (byte) 0x04;
      idSet = newEntryIDSet(idBytes);
      idSet = new EntryIDSet(null, idBytes);
      id2child.writeKey(txn, key, idSet);
      performBECleanVerify("id2children", 6);
    }
@@ -291,11 +290,6 @@
    }
  }
  private EntryIDSet newEntryIDSet(byte[] idBytes)
  {
    return new EntryIDSet((ByteString) null, idBytes);
  }
  /**
   * Runs clean verify against the id2subtree index after adding
   * various errors in that index file.
@@ -319,17 +313,17 @@
      idBytes[3] = (byte)0xff;
      //non-subordinate
      idBytes[15] = (byte)1;
      idSet = newEntryIDSet(idBytes);
      idSet = new EntryIDSet(null, idBytes);
      id2subtree.writeKey(txn, key, idSet);
      //Try to break JebFormat version of key entry
      key=addID2EntryReturnKey(junkDN, 4, true);
      idBytes[3]=(byte) 0x04;
      idBytes[15]=(byte)0x00;
      EntryIDSet idSet1 = newEntryIDSet(idBytes);
      EntryIDSet idSet1 = new EntryIDSet(null, idBytes);
      id2subtree.writeKey(txn, key, idSet1);
      //put invalid key -- no EntryID matches
      key= new EntryID(45).getDatabaseEntry();
      idSet = newEntryIDSet(idBytes);
      idSet = new EntryIDSet(null, idBytes);
      id2subtree.writeKey(txn, key, idSet);
      performBECleanVerify("id2subtree", 7);
    }
@@ -370,7 +364,7 @@
      dataBytes[31] = (byte) 0x04;
      DatabaseEntry data= new DatabaseEntry(dataBytes);
      OperationStatus status = index.put(txn, key, data);
      assertTrue(status == OperationStatus.SUCCESS);
      assertEquals(status, OperationStatus.SUCCESS);
      //really 5 errors, but duplicate reference doesn't increment error
      //count for some reason
      performBECleanVerify(phoneType, 4);
@@ -524,7 +518,7 @@
      DatabaseEntry key=addID2EntryReturnKey(noParentDN, 10, false);
      byte[] idBytes=new byte[16];
      idBytes[7]=(byte) 0x0A;
      EntryIDSet idSet = newEntryIDSet(idBytes);
      EntryIDSet idSet = new EntryIDSet(null, idBytes);
      id2child.writeKey(txn, key, idSet);
      //Add child entry - don't worry about key
      addID2EntryReturnKey(cDN, 11, false);
@@ -533,7 +527,7 @@
      //add parent key/IDSet with bad IDset id
      byte[] idBytesp=new byte[16];
      idBytesp[7]=(byte) 0xFF;
      EntryIDSet idSetp = newEntryIDSet(idBytesp);
      EntryIDSet idSetp = new EntryIDSet(null, idBytesp);
      id2child.writeKey(txn, keyp, idSetp);
      performBECompleteVerify("id2children", 3);
    }
@@ -656,29 +650,26 @@
      dataBytes[15] = (byte)0xfe;
      DatabaseEntry data= new DatabaseEntry(dataBytes);
      OperationStatus status = eqIndex.put(txn, key, data);
      assertTrue(status == OperationStatus.SUCCESS);
      assertEquals(status, OperationStatus.SUCCESS);
      status = ordIndex.put(txn, key, data);
      assertTrue(status == OperationStatus.SUCCESS);
      assertEquals(status, OperationStatus.SUCCESS);
      //Add null idlist to both equality and ordering indexes.
      key =
           new DatabaseEntry(StaticUtils.getBytes("user.1@example.com"));
      key = new DatabaseEntry(StaticUtils.getBytes("user.1@example.com"));
      data= new DatabaseEntry(new EntryIDSet().toDatabase());
      status = eqIndex.put(txn, key, data);
      assertTrue(status == OperationStatus.SUCCESS);
      assertEquals(status, OperationStatus.SUCCESS);
      status = ordIndex.put(txn, key, data);
      assertTrue(status == OperationStatus.SUCCESS);
      assertEquals(status, OperationStatus.SUCCESS);
      //Add invalid idlist ids to presence index.
      key =
           new DatabaseEntry(StaticUtils.getBytes("+"));
      key = new DatabaseEntry(StaticUtils.getBytes("+"));
      data = new DatabaseEntry(dataBytes);
      status = presIndex.put(txn, key, data);
      assertTrue(status == OperationStatus.SUCCESS);
      assertEquals(status, OperationStatus.SUCCESS);
      //Add invalid idlist ids to substring index.
      key =
           new DatabaseEntry(StaticUtils.getBytes("@examp"));
      key = new DatabaseEntry(StaticUtils.getBytes("@examp"));
      data = new DatabaseEntry(dataBytes);
      status = subIndex.put(txn, key, data);
      assertTrue(status == OperationStatus.SUCCESS);
      assertEquals(status, OperationStatus.SUCCESS);
      performBECompleteVerify(mailType, 6);
    }
    finally