You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2010/12/08 16:38:19 UTC

svn commit: r1043457 - /directory/apacheds/branches/server-config-annotations/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java

Author: pamarcelot
Date: Wed Dec  8 15:38:19 2010
New Revision: 1043457

URL: http://svn.apache.org/viewvc?rev=1043457&view=rev
Log:
Added a test for the ConfigWriter.

Added:
    directory/apacheds/branches/server-config-annotations/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java

Added: directory/apacheds/branches/server-config-annotations/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/server-config-annotations/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java?rev=1043457&view=auto
==============================================================================
--- directory/apacheds/branches/server-config-annotations/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java (added)
+++ directory/apacheds/branches/server-config-annotations/server-config/src/test/java/org/apache/directory/server/config/ConfigWriterTest.java Wed Dec  8 15:38:19 2010
@@ -0,0 +1,136 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you under the Apache License, Version 2.0 (the
+ *   "License"); you may not use this file except in compliance
+ *   with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing,
+ *   software distributed under the License is distributed on an
+ *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *   KIND, either express or implied.  See the License for the
+ *   specific language governing permissions and limitations
+ *   under the License.
+ *
+ */
+
+package org.apache.directory.server.config;
+
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.directory.junit.tools.Concurrent;
+import org.apache.directory.junit.tools.ConcurrentJunitRunner;
+import org.apache.directory.server.config.beans.ConfigBean;
+import org.apache.directory.server.core.partition.ldif.SingleFileLdifPartition;
+import org.apache.directory.shared.ldap.ldif.LdifEntry;
+import org.apache.directory.shared.ldap.ldif.LdifReader;
+import org.apache.directory.shared.ldap.name.DN;
+import org.apache.directory.shared.ldap.schema.SchemaManager;
+import org.apache.directory.shared.ldap.schema.ldif.extractor.SchemaLdifExtractor;
+import org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor;
+import org.apache.directory.shared.ldap.schema.loader.ldif.LdifSchemaLoader;
+import org.apache.directory.shared.ldap.schema.manager.impl.DefaultSchemaManager;
+import org.apache.directory.shared.ldap.schema.registries.SchemaLoader;
+import org.apache.directory.shared.ldap.util.LdapExceptionUtils;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+
+/**
+ * Test class for ConfigPartitionReader
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+@RunWith(ConcurrentJunitRunner.class)
+@Concurrent()
+public class ConfigWriterTest
+{
+    private static SchemaManager schemaManager;
+
+    private static File workDir = new File( System.getProperty( "java.io.tmpdir" ) + "/server-work" );
+
+
+    @BeforeClass
+    public static void readConfig() throws Exception
+    {
+        FileUtils.deleteDirectory( workDir );
+        workDir.mkdir();
+
+        String workingDirectory = workDir.getPath();
+        // Extract the schema on disk (a brand new one) and load the registries
+        File schemaRepository = new File( workingDirectory, "schema" );
+
+        if ( schemaRepository.exists() )
+        {
+            FileUtils.deleteDirectory( schemaRepository );
+        }
+
+        SchemaLdifExtractor extractor = new DefaultSchemaLdifExtractor( new File( workingDirectory ) );
+        extractor.extractOrCopy();
+
+        SchemaLoader loader = new LdifSchemaLoader( schemaRepository );
+        schemaManager = new DefaultSchemaManager( loader );
+
+        // We have to load the schema now, otherwise we won't be able
+        // to initialize the Partitions, as we won't be able to parse 
+        // and normalize their suffix DN
+        schemaManager.loadAllEnabled();
+
+        List<Throwable> errors = schemaManager.getErrors();
+
+        if ( errors.size() != 0 )
+        {
+            throw new Exception( "Schema load failed : " + LdapExceptionUtils.printErrors( errors ) );
+        }
+    }
+
+
+    @Test
+    public void testConfigReader() throws Exception
+    {
+        // Extracting of the config file
+        File configDir = new File( workDir, "configReader" ); // could be any directory, cause the config is now in a single file
+        String configFile = LdifConfigExtractor.extractSingleFileConfig( configDir, "config.ldif", true );
+
+        // Creating of the config partition
+        SingleFileLdifPartition configPartition = new SingleFileLdifPartition( configFile );
+        configPartition.setId( "config" );
+        configPartition.setSuffix( new DN( "ou=config" ) );
+        configPartition.setSchemaManager( schemaManager );
+        configPartition.initialize();
+
+        // Reading the config partition
+        ConfigPartitionReader cpReader = new ConfigPartitionReader( configPartition, workDir );
+        ConfigBean configBean = cpReader.readConfig();
+        assertNotNull( configBean );
+
+        // Creating the config writer
+        ConfigWriter configWriter = new ConfigWriter( schemaManager, configBean );
+
+        // Reading the original config file
+        LdifReader ldifReader = new LdifReader( configFile );
+        List<LdifEntry> originalConfigEntries = new ArrayList<LdifEntry>();
+        while ( ldifReader.hasNext() )
+        {
+            originalConfigEntries.add( ldifReader.next() );
+        }
+
+        // Comparing the number of entries
+        assertEquals( originalConfigEntries.size(), configWriter.getConvertedLdifEntries().size() );
+
+        // Destroying the config partition
+        configPartition.destroy();
+    }
+}