From 36050c5587e30c0e0b740166c73c2d145c3471d1 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Wed, 30 Apr 2008 23:38:25 +0000
Subject: [PATCH] Fix for issue where deleteing the last few entries indexed by a VLV index might cause a NPE.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVLVIndex.java |   98 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 83 insertions(+), 15 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVLVIndex.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVLVIndex.java
index a9a9320..451e81a 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVLVIndex.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVLVIndex.java
@@ -88,6 +88,8 @@
 
   TreeSet<SortValues> expectedSortedValues;
 
+  List<Entry> entries;
+
   @BeforeClass
   public void setUp() throws Exception {
     TestCaseUtils.startServer();
@@ -112,21 +114,8 @@
     suffixDN          = DN.decode("dc=vlvtest,dc=com");
 
     expectedSortedValues = new TreeSet<SortValues>();
-  }
 
-  @AfterClass
-  public void cleanUp() throws Exception {
-  }
-
-  /**
-   * Populates the JE DB with a set of test data.
-   *
-   * @throws  Exception  If an unexpected problem occurs.
-   */
-  private void populateDB()
-      throws Exception
-  {
-    List<Entry> entries = TestCaseUtils.makeEntries(
+    entries = TestCaseUtils.makeEntries(
         "dn: dc=vlvtest,dc=com",
         "objectClass: top",
         "objectClass: domain",
@@ -223,7 +212,20 @@
         "sn: Zorro",
         "cn: Zorro"
     );
+  }
 
+  @AfterClass
+  public void cleanUp() throws Exception {
+  }
+
+  /**
+   * Populates the JE DB with a set of test data.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  private void populateDB()
+      throws Exception
+  {
     long id = 1;
     for(Entry entry : entries)
     {
@@ -234,8 +236,74 @@
     }
   }
 
-
   @Test
+  public void testDel() throws Exception
+  {
+    populateDB();
+
+    TestCaseUtils.deleteEntry(entries.get(1));
+    TestCaseUtils.deleteEntry(entries.get(entries.size() - 1));
+
+    be=(BackendImpl) DirectoryServer.getBackend(beID);
+    RootContainer rootContainer = be.getRootContainer();
+    EntryContainer entryContainer =
+        rootContainer.getEntryContainer(DN.decode("dc=vlvtest,dc=com"));
+
+    for(VLVIndex vlvIndex : entryContainer.getVLVIndexes())
+    {
+      if(vlvIndex.getName().contains("testvlvindex"))
+      {
+
+
+        SortValuesSet svs1 =
+            vlvIndex.getSortValuesSet(null, 0,
+                                      expectedSortedValues.first().getValues());
+
+        assertNotNull(svs1);
+        assertEquals(svs1.size(), 3);
+
+        SortValuesSet svs2 =
+            vlvIndex.getSortValuesSet(null, 0,
+                                      expectedSortedValues.last().getValues());
+
+        assertNotNull(svs2);
+        assertEquals(svs2.size(), 5);
+      }
+    }
+
+    for(int i = 2; i <= entries.size() - 2; i++)
+    {
+      TestCaseUtils.deleteEntry(entries.get(i));
+    }
+    // Delete the base entry
+    TestCaseUtils.deleteEntry(entries.get(0));
+
+    for(VLVIndex vlvIndex : entryContainer.getVLVIndexes())
+    {
+      if(vlvIndex.getName().contains("testvlvindex"))
+      {
+
+
+        SortValuesSet svs1 =
+            vlvIndex.getSortValuesSet(null, 0,
+                                      expectedSortedValues.first().getValues());
+
+        assertNotNull(svs1);
+        assertEquals(svs1.size(), 0);
+        assertNull(svs1.getKeyBytes());
+
+        SortValuesSet svs2 =
+            vlvIndex.getSortValuesSet(null, 0,
+                                      expectedSortedValues.last().getValues());
+
+        assertNotNull(svs2);
+        assertEquals(svs1.size(), 0);
+        assertNull(svs1.getKeyBytes());
+      }
+    }
+  }
+
+  @Test( dependsOnMethods = { "testDel" } )
   public void testAdd() throws Exception
   {
     populateDB();

--
Gitblit v1.10.0