From 883c4b7810dcabba4ebe2924ca0757485f5312da Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Fri, 15 Jun 2007 21:55:02 +0000
Subject: [PATCH] - Add a few more unit tests for important classes.  This also includes some plumbing for getting the quicksetup tests' workspace server configured enough so that it is startable and stoppable  for testing.

---
 opends/src/quicksetup/org/opends/quicksetup/Configuration.java |  102 +++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 87 insertions(+), 15 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/Configuration.java b/opends/src/quicksetup/org/opends/quicksetup/Configuration.java
index ceca3d5..e25f193 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/Configuration.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/Configuration.java
@@ -27,27 +27,37 @@
 
 package org.opends.quicksetup;
 
+import org.opends.quicksetup.util.Utils;
+
 import java.io.File;
 import java.io.FileReader;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.util.Set;
 import java.util.HashSet;
+import java.util.logging.Logger;
 
 /**
  * Represents the contents of an OpenDS configuration file.
  */
 public class Configuration {
 
-  private String contents = null;
+  static private final Logger LOG =
+          Logger.getLogger(Configuration.class.getName());
 
+  private String contents = null;
+  private Installation install = null;
   private File file = null;
 
   /**
    * Create a Configuration from a file.
+   * @param install of which this configuration is part
    * @param file config.ldif file
    */
-  public Configuration(File file) {
+  public Configuration(Installation install, File file) {
+    if (install == null) {
+      throw new NullPointerException("config file cannot be null");
+    }
     if (file == null) {
       throw new NullPointerException("config file cannot be null");
     } else if (
@@ -56,6 +66,7 @@
             !file.getName().startsWith("config.ldif")) {
       throw new IllegalArgumentException("file must be a config.ldif file");
     }
+    this.install = install;
     this.file = file;
   }
 
@@ -110,18 +121,18 @@
 
   private int getPort(String portAttr) throws IOException {
     int port = -1;
-
-    int index = getContents().indexOf("cn=ldap connection handler");
+    String contents = getContents();
+    int index = contents.indexOf("cn=ldap connection handler");
 
     if (index != -1) {
       String attrWithPoints = portAttr + ":";
-      int index1 = getContents().indexOf(attrWithPoints, index);
+      int index1 = contents.indexOf(attrWithPoints, index);
       if (index1 != -1) {
         int index2 =
-                getContents().indexOf(Constants.LINE_SEPARATOR, index1);
+                contents.indexOf(Constants.LINE_SEPARATOR, index1);
         if (index2 != -1) {
           String sPort =
-                  getContents().substring(attrWithPoints.length() +
+                  contents.substring(attrWithPoints.length() +
                           index1,
                           index2).trim();
           try {
@@ -160,12 +171,59 @@
   }
 
   /**
+   * Returns a Set of relative paths containing the log paths outside the
+   * installation.
+   * @return a Set of relative paths containing the log paths outside the
+   * installation.
+   * @throws IOException if there is trouble reading the config file
+   */
+  public Set<String> getOutsideLogs()
+          throws IOException
+  {
+    return getOutsidePaths(getLogPaths());
+  }
+
+  /**
+   * Returns a Set of relative paths containing the db paths outside the
+   * installation.
+   * @return a Set of relative paths containing the db paths outside the
+   * installation.
+   * @throws IOException if there is trouble reading the config file
+   */
+  public Set<String> getOutsideDbs()
+          throws IOException
+  {
+    return getOutsidePaths(getDatabasePaths());
+  }
+
+  private Set<String> getOutsidePaths(Set<String> paths) {
+    Set<String> outsidePaths = new HashSet<String>();
+    for (String path : paths) {
+      File fullDbPath;
+
+      // Assume that if the path starts with a file separator
+      // that it is an absolute path.  Otherwise its a relative
+      // path.
+      if (path.startsWith(File.separator)) {
+        fullDbPath = new File(path);
+      } else {
+        fullDbPath = new File(install.getRootDirectory(), path);
+      }
+
+      if (!Utils.isDescendant(fullDbPath, install.getRootDirectory())) {
+        outsidePaths.add(Utils.getPath(fullDbPath));
+      }
+    }
+    return outsidePaths;
+  }
+
+  /**
    * Provides the contents of the config.ldif file in a String.
    *
    * @return a String representing the contents of the config.ldif file.
    * @throws IOException if there was a problem reading the file
    */
-  private String getContents() throws IOException {
+  public String getContents() throws IOException {
     if (contents == null) {
       load();
     }
@@ -173,11 +231,24 @@
   }
 
   /**
+   * Returns the list of paths where the databases are installed as they appear
+   * in the configuration file.
+   *
+   * @return the list of paths where the databases are installed as they appear
+   * in the configuration file.
+   * @throws IOException if there is a problem reading the config file.
+   */
+  public Set<String> getDatabasePaths() throws IOException {
+    return getConfigurationValues("ds-cfg-backend-directory");
+  }
+
+
+  /**
    * Loads the contents of the configuration file into memory.
    * @throws IOException if there were problems loading the file
    */
   public void load() throws IOException {
-    StringBuffer buf = new StringBuffer();
+    StringBuilder buf = new StringBuilder();
     FileReader reader = new FileReader(file);
     BufferedReader in = new BufferedReader(reader);
     String line;
@@ -194,16 +265,17 @@
   {
     Set<String> set = new HashSet<String>();
     attrName += ":";
-    int index1 = getContents().indexOf(attrName);
+    String contents = getContents();
+    int index1 = contents.indexOf(attrName);
     while (index1 != -1) {
-      int index2 = getContents().indexOf(Constants.LINE_SEPARATOR, index1);
+      int index2 = contents.indexOf(Constants.LINE_SEPARATOR, index1);
       String value;
       if (index2 > (index1 + attrName.length())) {
-        value = getContents().substring(attrName.length() + index1,
+        value = contents.substring(attrName.length() + index1,
                 index2).trim();
-      } else if (getContents().length() > (index1 + attrName.length())) {
+      } else if (contents.length() > (index1 + attrName.length())) {
         // Assume end of file
-        value = getContents().substring(
+        value = contents.substring(
                 attrName.length() + index1).trim();
       } else {
         value = null;
@@ -213,7 +285,7 @@
         set.add(value);
       }
 
-      index1 = getContents().indexOf(attrName,
+      index1 = contents.indexOf(attrName,
               index1 + attrName.length());
     }
     return set;

--
Gitblit v1.10.0