/* * 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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 * * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server; import static org.opends.server.TestCaseUtils.copyFile; import static org.opends.server.TestCaseUtils.createTemporaryDirectory; import static org.opends.server.TestCaseUtils.deleteDirectory; import java.io.File; import java.io.IOException; import org.opends.server.config.ConfigFileHandler; import org.opends.server.core.DirectoryServer; /** * This fixture makes sure that a directory server instance is available * with a configuration environment loaded from the source tree's * resource directory. *

* This fixture should be used by test cases which need a directory * server instance with a working configuration environment. */ public final class ConfigurationFixture { /** * A factory used to obtain the configuration fixture instance. */ public static final FixtureFactory FACTORY; static { FACTORY = new SingletonFixtureFactory( new Factory()); } // The name of the temporary instance root directory. private File instanceRoot; /** * Internal factory implementation. */ private static final class Factory implements FixtureFactory { // The configuration fixture instance. private ConfigurationFixture instance = null; /** * {@inheritDoc} */ public ConfigurationFixture setUp() throws Exception { // This fixture requires the initial directory server fixture. InitialDirectoryServerFixture.FACTORY.setUp(); // Create temporary config file structure. File tempDirectory = createTemporaryDirectory("ds7test"); // Create the configuration directory. File configDirectory = new File(tempDirectory, "config"); configDirectory.mkdir(); // All files to be copied are taken from the resource directory. File configResourceDirectory = new File("resource/config"); // Copy over the configuration file. File configFile = new File(configDirectory, "config.ldif"); copyFile(new File(configResourceDirectory, "config.ldif"), configFile); DirectoryServer directoryServer = DirectoryServer.getInstance(); directoryServer.initializeConfiguration(ConfigFileHandler.class .getName(), configFile.getAbsolutePath()); instance = new ConfigurationFixture(tempDirectory); return instance; } /** * {@inheritDoc} */ public void tearDown() throws Exception { // Clean up configuration directories. try { deleteDirectory(instance.getInstanceRoot()); } catch (IOException e) { // Ignore errors. } instance = null; // Make sure resource held by the directory server fixture are // released. InitialDirectoryServerFixture.FACTORY.tearDown(); } } /** * Create a configuration fixture. * * @param instanceRoot * The name of the temporary instance root. */ private ConfigurationFixture(File instanceRoot) { this.instanceRoot = instanceRoot; } /** * Get the temporary instance root. * * @return The temporary instance root. */ public File getInstanceRoot() { return instanceRoot; } }