From 9db2bf22933d23e8dd56401f34d0975b78541a26 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 25 Sep 2015 10:44:18 +0000
Subject: [PATCH] TestImportJob.java: Code cleanup, extracted lots of methods for common code.

---
 opendj-server-legacy/src/test/java/org/opends/server/backends/jeb/TestImportJob.java |  384 +++++++++++++++++++++---------------------------------
 1 files changed, 147 insertions(+), 237 deletions(-)

diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/jeb/TestImportJob.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/jeb/TestImportJob.java
index ec35988..dc0f035 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/jeb/TestImportJob.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/jeb/TestImportJob.java
@@ -30,19 +30,30 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
 import java.util.Set;
 
+import org.assertj.core.api.SoftAssertions;
+import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ByteString;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.api.Backend;
 import org.opends.server.backends.VerifyConfig;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.tasks.TaskUtils;
-import org.opends.server.types.*;
+import org.opends.server.types.AttributeType;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
+import org.opends.server.types.InitializationException;
+import org.opends.server.types.LDIFImportConfig;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -50,12 +61,27 @@
 @SuppressWarnings("javadoc")
 public class TestImportJob extends JebTestCase
 {
+  static class RejectSkippedEntries
+  {
+    private ByteArrayOutputStream rejectedEntries = new ByteArrayOutputStream();
+    private ByteArrayOutputStream skippedEntries = new ByteArrayOutputStream();
+
+    private void noSkippedOrRejectedEntries()
+    {
+      SoftAssertions softly = new SoftAssertions();
+      softly.assertThat(rejectedEntries.toString()).isEmpty();
+      softly.assertThat(skippedEntries.toString()).isEmpty();
+      softly.assertAll();
+    }
+  }
+
   private String backendID = "importRoot";
   private File tempDir;
   private String homeDirName;
 
+  private DN importtest1DN;
+  private DN importtestDN;
   private DN[] baseDNs;
-  private Backend<?> backend;
 
   // @formatter:off
   private String top =
@@ -232,6 +258,11 @@
       + "description: This is the description for Annalee Bogard.\n";
   // @formatter:on
 
+  private String file(String basename)
+  {
+    return homeDirName + File.separator + basename;
+  }
+
   @BeforeClass
   public void setUp() throws Exception
   {
@@ -245,44 +276,26 @@
 
     EnvManager.createHomeDir(homeDirName);
 
-    FileOutputStream ldifFile = new FileOutputStream(homeDirName
-        + File.separator + "top.ldif");
-    PrintStream writer = new PrintStream(ldifFile);
+    writeTo(top, "top.ldif");
+    writeTo(entries1, "entries1.ldif");
+    writeTo(replacement1, "replacement1.ldif");
+    writeTo(skippedEntries, "skipped.ldif");
 
-    writer.println(top);
-    writer.close();
-    ldifFile.close();
-
-    ldifFile = new FileOutputStream(homeDirName + File.separator
-        + "entries1.ldif");
-    writer = new PrintStream(ldifFile);
-
-    writer.println(entries1);
-    writer.close();
-    ldifFile.close();
-
-    ldifFile = new FileOutputStream(homeDirName + File.separator
-        + "replacement1.ldif");
-    writer = new PrintStream(ldifFile);
-
-    writer.println(replacement1);
-    writer.close();
-    ldifFile.close();
-
-    ldifFile = new FileOutputStream(homeDirName + File.separator
-        + "skipped.ldif");
-    writer = new PrintStream(ldifFile);
-
-    writer.println(skippedEntries);
-    writer.close();
-    ldifFile.close();
-
-    baseDNs = new DN[] { DN.valueOf("dc=importtest,dc=com"),
-        DN.valueOf("dc=importtest1,dc=com") };
-
+    importtest1DN = DN.valueOf("dc=importtest1,dc=com");
+    importtestDN = DN.valueOf("dc=importtest,dc=com");
+    baseDNs = new DN[] { importtestDN, importtest1DN };
   }
 
-
+  private void writeTo(String ldif, String baseName) throws IOException, FileNotFoundException
+  {
+    File file = new File(file(baseName));
+    file.deleteOnExit();
+    try (OutputStream ldifFile = new FileOutputStream(file);
+        PrintStream writer = new PrintStream(ldifFile))
+    {
+      writer.println(ldif);
+    }
+  }
 
   @AfterClass
   public void cleanUp() throws Exception
@@ -291,153 +304,78 @@
     TestCaseUtils.deleteDirectory(tempDir);
   }
 
-
-  @Test(enabled = true)
+  @Test
   public void testImportAll() throws Exception
   {
     TestCaseUtils.clearJEBackend(backendID);
-    ArrayList<String> fileList = new ArrayList<>();
-    fileList.add(homeDirName + File.separator + "top.ldif");
-    fileList.add(homeDirName + File.separator + "entries1.ldif");
 
-    ByteArrayOutputStream rejectedEntries = new ByteArrayOutputStream();
-    ByteArrayOutputStream skippedEntries = new ByteArrayOutputStream();
-    LDIFImportConfig importConfig = new LDIFImportConfig(fileList);
+    RejectSkippedEntries entries = new RejectSkippedEntries();
+    LDIFImportConfig importConfig = newLDIFImportConfig(entries, "top.ldif", "entries1.ldif");
     importConfig.setAppendToExistingData(false);
     importConfig.setReplaceExistingEntries(false);
     importConfig.setValidateSchema(true);
-    importConfig.writeRejectedEntries(rejectedEntries);
-    importConfig.writeSkippedEntries(skippedEntries);
 
     importLDIF(importConfig);
+    entries.noSkippedOrRejectedEntries();
 
-    backend = DirectoryServer.getBackend(backendID);
-    RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
-    EntryContainer entryContainer;
-
-    assertTrue(rejectedEntries.size() <= 0);
-    assertTrue(skippedEntries.size() <= 0);
-    for (DN baseDN : baseDNs)
-    {
-      entryContainer = rootContainer.getEntryContainer(baseDN);
-      entryContainer.sharedLock.lock();
-      try
-      {
-        assertNotNull(entryContainer);
-
-        if (baseDN.toString().equals("dc=importtest,dc=com"))
-        {
-          assertEquals(entryContainer.getEntryCount(), 5);
-          assertTrue(entryContainer.entryExists(baseDN));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("ou=People,dc=importtest,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("ou=Others,ou=People,dc=importtest,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.0,ou=People,dc=importtest,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.539,ou=People,dc=importtest,dc=com")));
-
-          VerifyConfig verifyConfig = new VerifyConfig();
-          verifyConfig.setBaseDN(baseDN);
-
-          backend = DirectoryServer.getBackend(backendID);
-          assertEquals(backend.verifyBackend(verifyConfig), 0);
-        }
-        else if (baseDN.toString().equals("dc=importtest1,dc=com"))
-        {
-          assertEquals(entryContainer.getEntryCount(), 3);
-          assertTrue(entryContainer.entryExists(baseDN));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.446,dc=importtest1,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.362,dc=importtest1,dc=com")));
-
-          VerifyConfig verifyConfig = new VerifyConfig();
-          verifyConfig.setBaseDN(baseDN);
-
-          backend = DirectoryServer.getBackend(backendID);
-          assertEquals(backend.verifyBackend(verifyConfig), 0);
-        }
-      }
-      finally
-      {
-        entryContainer.sharedLock.unlock();
-      }
-    }
+    assertImportedData();
   }
 
-
-
   @Test(dependsOnMethods = "testImportAll")
   public void testImportPartial() throws Exception
   {
-    ArrayList<String> fileList = new ArrayList<>();
-    fileList.add(homeDirName + File.separator + "top.ldif");
-    fileList.add(homeDirName + File.separator + "entries1.ldif");
-
     Set<DN> includeBranches = Collections.singleton(DN.valueOf("ou=People,dc=importtest,dc=com"));
     Set<DN> excludeBranches = Collections.singleton(DN.valueOf("ou=Others,ou=People,dc=importtest,dc=com"));
 
-    ByteArrayOutputStream rejectedEntries = new ByteArrayOutputStream();
-    ByteArrayOutputStream skippedEntries = new ByteArrayOutputStream();
-    LDIFImportConfig importConfig = new LDIFImportConfig(fileList);
+    RejectSkippedEntries entries = new RejectSkippedEntries();
+    LDIFImportConfig importConfig = newLDIFImportConfig(entries, "top.ldif", "entries1.ldif");
     importConfig.setAppendToExistingData(false);
     importConfig.setReplaceExistingEntries(false);
     importConfig.setValidateSchema(true);
-    importConfig.writeRejectedEntries(rejectedEntries);
-    importConfig.writeSkippedEntries(skippedEntries);
     importConfig.setIncludeBranches(includeBranches);
     importConfig.setExcludeBranches(excludeBranches);
 
     importLDIF(importConfig);
 
-    backend = DirectoryServer.getBackend(backendID);
-    RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
-    EntryContainer entryContainer;
+    SoftAssertions softly = new SoftAssertions();
+    softly.assertThat(entries.rejectedEntries.toString()).isEmpty();
+    softly.assertThat(entries.skippedEntries.toString()).isNotEmpty();
+    softly.assertAll();
 
-    assertTrue(rejectedEntries.size() <= 0);
+    assertImportedData();
+  }
+
+  private void assertImportedData() throws Exception
+  {
     for (DN baseDN : baseDNs)
     {
-      entryContainer = rootContainer.getEntryContainer(baseDN);
+      EntryContainer entryContainer = getEntryContainer(baseDN);
       entryContainer.sharedLock.lock();
       try
       {
-        assertNotNull(entryContainer);
-
-        if (baseDN.toString().equals("dc=importtest,dc=com"))
+        if (baseDN.equals(importtestDN))
         {
           assertEquals(entryContainer.getEntryCount(), 5);
           assertTrue(entryContainer.entryExists(baseDN));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("ou=People,dc=importtest,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("ou=Others,ou=People,dc=importtest,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.0,ou=People,dc=importtest,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.539,ou=People,dc=importtest,dc=com")));
+          assertTrue(entryContainer.entryExists(DN.valueOf("ou=People,dc=importtest,dc=com")));
+          assertTrue(entryContainer.entryExists(DN.valueOf("ou=Others,ou=People,dc=importtest,dc=com")));
+          assertTrue(entryContainer.entryExists(DN.valueOf("uid=user.0,ou=People,dc=importtest,dc=com")));
+          assertTrue(entryContainer.entryExists(DN.valueOf("uid=user.539,ou=People,dc=importtest,dc=com")));
 
-          VerifyConfig verifyConfig = new VerifyConfig();
-          verifyConfig.setBaseDN(baseDN);
-
-          backend = DirectoryServer.getBackend(backendID);
-          assertEquals(backend.verifyBackend(verifyConfig), 0);
+          assertEquals(verifyBackend(baseDN), 0);
         }
-        else if (baseDN.toString().equals("dc=importtest1,dc=com"))
+        else if (baseDN.equals(importtest1DN))
         {
           assertEquals(entryContainer.getEntryCount(), 3);
           assertTrue(entryContainer.entryExists(baseDN));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.446,dc=importtest1,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.362,dc=importtest1,dc=com")));
+          assertTrue(entryContainer.entryExists(DN.valueOf("uid=user.446,dc=importtest1,dc=com")));
+          assertTrue(entryContainer.entryExists(DN.valueOf("uid=user.362,dc=importtest1,dc=com")));
 
-          VerifyConfig verifyConfig = new VerifyConfig();
-          verifyConfig.setBaseDN(baseDN);
-
-          backend = DirectoryServer.getBackend(backendID);
-          assertEquals(backend.verifyBackend(verifyConfig), 0);
+          assertEquals(verifyBackend(baseDN), 0);
+        }
+        else
+        {
+          throw new IllegalStateException("No asserts exist for baseDN \"" + baseDN + "\". Please provide some.");
         }
       }
       finally
@@ -447,47 +385,29 @@
     }
   }
 
-
-
   @Test(dependsOnMethods = "testImportPartial")
   public void testImportReplaceExisting() throws Exception
   {
-    ByteArrayOutputStream rejectedEntries = new ByteArrayOutputStream();
-    LDIFImportConfig importConfig = new LDIFImportConfig(homeDirName
-        + File.separator + "replacement1.ldif");
+    RejectSkippedEntries entries = new RejectSkippedEntries();
+    LDIFImportConfig importConfig = newLDIFImportConfig(entries, "replacement1.ldif");
     importConfig.setAppendToExistingData(true);
     importConfig.setReplaceExistingEntries(true);
     importConfig.setValidateSchema(true);
-    importConfig.writeRejectedEntries(rejectedEntries);
 
     importLDIF(importConfig);
+    entries.noSkippedOrRejectedEntries();
 
-    backend = DirectoryServer.getBackend(backendID);
-    RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
-    EntryContainer entryContainer;
-
-    entryContainer = rootContainer.getEntryContainer(DN
-        .valueOf("dc=importtest1,dc=com"));
-    assertNotNull(entryContainer);
-
+    EntryContainer entryContainer = getEntryContainer(importtest1DN);
     entryContainer.sharedLock.lock();
     try
     {
-      assertTrue(rejectedEntries.size() <= 0);
-      Entry entry = entryContainer.getEntry(DN
-          .valueOf("uid=user.446,dc=importtest1,dc=com"));
+      Entry entry = entryContainer.getEntry(DN.valueOf("uid=user.446,dc=importtest1,dc=com"));
       assertNotNull(entry);
 
-      AttributeType attribute = entry.getAttribute("cn").get(0)
-          .getAttributeType();
+      AttributeType attrType = DirectoryServer.getAttributeType("cn");
+      assertTrue(entry.hasValue(attrType, null, ByteString.valueOf("Annalee Bogard")));
 
-      assertTrue(entry.hasValue(attribute, null, ByteString.valueOf("Annalee Bogard")));
-
-      VerifyConfig verifyConfig = new VerifyConfig();
-      verifyConfig.setBaseDN(DN.valueOf("dc=importtest1,dc=com"));
-
-      backend = DirectoryServer.getBackend(backendID);
-      assertEquals(backend.verifyBackend(verifyConfig), 0);
+      assertEquals(verifyBackend(importtest1DN), 0);
     }
     finally
     {
@@ -495,132 +415,122 @@
     }
   }
 
+  private long verifyBackend(DN baseDN) throws InitializationException, ConfigException, DirectoryException
+  {
+    VerifyConfig verifyConfig = new VerifyConfig();
+    verifyConfig.setBaseDN(baseDN);
 
+    Backend<?> backend = DirectoryServer.getBackend(backendID);
+    return backend.verifyBackend(verifyConfig);
+  }
 
   @Test(dependsOnMethods = "testImportReplaceExisting")
   public void testImportNoParent() throws Exception
   {
-    ByteArrayOutputStream rejectedEntries = new ByteArrayOutputStream();
-    LDIFImportConfig importConfig = new LDIFImportConfig(homeDirName
-        + File.separator + "replacement1.ldif");
+    RejectSkippedEntries entries = new RejectSkippedEntries();
+    LDIFImportConfig importConfig = newLDIFImportConfig(entries, "replacement1.ldif");
     importConfig.setAppendToExistingData(false);
     importConfig.setReplaceExistingEntries(true);
     importConfig.setValidateSchema(true);
-    importConfig.writeRejectedEntries(rejectedEntries);
 
     importLDIF(importConfig);
 
-    assertTrue(rejectedEntries.toString().contains(
-        "uid=user.446,dc=importtest1,dc=com"));
+    SoftAssertions softly = new SoftAssertions();
+    softly.assertThat(entries.rejectedEntries.toString()).contains("uid=user.446,dc=importtest1,dc=com");
+    softly.assertThat(entries.skippedEntries.toString()).isEmpty();
+    softly.assertAll();
   }
 
-
   @Test(dependsOnMethods = "testImportReplaceExisting")
   public void testImportAppend() throws Exception
   {
     TestCaseUtils.clearJEBackend(backendID);
 
-    LDIFImportConfig importConfig = new LDIFImportConfig(homeDirName
-        + File.separator + "top.ldif");
+    RejectSkippedEntries entries = new RejectSkippedEntries();
+    LDIFImportConfig importConfig = newLDIFImportConfig(entries, "top.ldif");
     importConfig.setAppendToExistingData(false);
     importConfig.setReplaceExistingEntries(false);
     importConfig.setValidateSchema(true);
 
     importLDIF(importConfig);
+    entries.noSkippedOrRejectedEntries();
 
-    importConfig = new LDIFImportConfig(homeDirName + File.separator
-        + "entries1.ldif");
+    entries = new RejectSkippedEntries();
+    importConfig = newLDIFImportConfig(entries, "entries1.ldif");
     importConfig.setAppendToExistingData(true);
     importConfig.setReplaceExistingEntries(false);
     importConfig.setValidateSchema(true);
 
     importLDIF(importConfig);
+    entries.noSkippedOrRejectedEntries();
 
-    backend = DirectoryServer.getBackend(backendID);
-    RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
-    EntryContainer entryContainer;
-
-    for (DN baseDN : baseDNs)
-    {
-      entryContainer = rootContainer.getEntryContainer(baseDN);
-      assertNotNull(entryContainer);
-      entryContainer.sharedLock.lock();
-      try
-      {
-        if (baseDN.toString().equals("dc=importtest,dc=com"))
-        {
-          assertEquals(entryContainer.getEntryCount(), 5);
-          assertTrue(entryContainer.entryExists(baseDN));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("ou=People,dc=importtest,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.0,ou=People,dc=importtest,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.539,ou=People,dc=importtest,dc=com")));
-        }
-        else if (baseDN.toString().equals("dc=importtest1,dc=com"))
-        {
-          assertEquals(entryContainer.getEntryCount(), 3);
-          assertTrue(entryContainer.entryExists(baseDN));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.446,dc=importtest1,dc=com")));
-          assertTrue(entryContainer.entryExists(DN
-              .valueOf("uid=user.362,dc=importtest1,dc=com")));
-        }
-      }
-      finally
-      {
-        entryContainer.sharedLock.unlock();
-        TaskUtils.enableBackend(backendID);
-      }
-    }
+    assertImportedData();
   }
 
-
-
   @Test(dependsOnMethods = "testImportPartial")
   public void testImportNotReplaceExisting() throws Exception
   {
-    ByteArrayOutputStream rejectedEntries = new ByteArrayOutputStream();
-    LDIFImportConfig importConfig = new LDIFImportConfig(homeDirName
-        + File.separator + "replacement1.ldif");
+    RejectSkippedEntries entries = new RejectSkippedEntries();
+    LDIFImportConfig importConfig = newLDIFImportConfig(entries, "replacement1.ldif");
     importConfig.setAppendToExistingData(true);
     importConfig.setReplaceExistingEntries(false);
     importConfig.setValidateSchema(true);
-    importConfig.writeRejectedEntries(rejectedEntries);
 
     importLDIF(importConfig);
 
-    assertTrue(rejectedEntries.toString().contains(
-        "uid=user.446,dc=importtest1,dc=com"));
+    SoftAssertions softly = new SoftAssertions();
+    softly.assertThat(entries.rejectedEntries.toString()).contains("uid=user.446,dc=importtest1,dc=com");
+    softly.assertThat(entries.skippedEntries.toString()).isEmpty();
+    softly.assertAll();
   }
 
-
-
   @Test(dependsOnMethods = "testImportPartial")
   public void testImportSkip() throws Exception
   {
     Set<DN> excludeBranches = Collections.singleton(DN.valueOf("dc=skipped,dc=importtest1,dc=com"));
-    ByteArrayOutputStream skippedEntries = new ByteArrayOutputStream();
-    LDIFImportConfig importConfig = new LDIFImportConfig(homeDirName
-        + File.separator + "skipped.ldif");
+    RejectSkippedEntries entries = new RejectSkippedEntries();
+    LDIFImportConfig importConfig = newLDIFImportConfig(entries, "skipped.ldif");
     importConfig.setAppendToExistingData(true);
     importConfig.setReplaceExistingEntries(true);
     importConfig.setValidateSchema(true);
     importConfig.setExcludeBranches(excludeBranches);
-    importConfig.writeSkippedEntries(skippedEntries);
 
     importLDIF(importConfig);
 
-    assertTrue(skippedEntries.toString().contains(
-        "dc=skipped,dc=importtest1,dc=com"));
-    assertTrue(skippedEntries.toString().contains(
-        "uid=user.446,dc=skipped,dc=importtest1,dc=com"));
+    SoftAssertions softly = new SoftAssertions();
+    softly.assertThat(entries.rejectedEntries.toString()).isEmpty();
+    softly.assertThat(entries.skippedEntries.toString()).contains(
+        "dc=skipped,dc=importtest1,dc=com",
+        "uid=user.446,dc=skipped,dc=importtest1,dc=com");
+    softly.assertAll();
+  }
+
+  private EntryContainer getEntryContainer(DN baseDN)
+  {
+    Backend<?> backend = DirectoryServer.getBackend(backendID);
+    RootContainer rootContainer = ((BackendImpl) backend).getRootContainer();
+
+    EntryContainer entryContainer = rootContainer.getEntryContainer(baseDN);
+    assertNotNull(entryContainer);
+    return entryContainer;
+  }
+
+  private LDIFImportConfig newLDIFImportConfig(RejectSkippedEntries entries, String... baseNames)
+  {
+    List<String> ldifFiles = new ArrayList<>(baseNames.length);
+    for (String baseName : baseNames)
+    {
+      ldifFiles.add(file(baseName));
+    }
+    LDIFImportConfig cfg = new LDIFImportConfig(ldifFiles);
+    cfg.writeRejectedEntries(entries.rejectedEntries);
+    cfg.writeSkippedEntries(entries.skippedEntries);
+    return cfg;
   }
 
   private void importLDIF(LDIFImportConfig importConfig) throws DirectoryException
   {
-    backend = DirectoryServer.getBackend(backendID);
+    Backend<?> backend = DirectoryServer.getBackend(backendID);
     TaskUtils.disableBackend(backendID);
     try
     {

--
Gitblit v1.10.0