You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/01/01 10:52:34 UTC
svn commit: r894986 - in
/directory/apacheds/branches/apacheds-schema/test-framework/src:
main/java/org/apache/directory/server/core/integ/FrameworkRunner.java
test/java/org/apache/directory/server/core/integ/TestWithClassLevelLdapServer.java
Author: kayyagari
Date: Fri Jan 1 09:52:33 2010
New Revision: 894986
URL: http://svn.apache.org/viewvc?rev=894986&view=rev
Log:
o fixed the way LdapServer is initialized
o updated the FrameworkRunner to inject an inherited DirectoryService in LdapServer(i.e a Class level
LdapServer can use its Suite's or a default DirectoryService if not declared at the Class level)
o added a test class to test these changes
Added:
directory/apacheds/branches/apacheds-schema/test-framework/src/test/java/org/apache/directory/server/core/integ/TestWithClassLevelLdapServer.java
Modified:
directory/apacheds/branches/apacheds-schema/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java
Modified: directory/apacheds/branches/apacheds-schema/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java?rev=894986&r1=894985&r2=894986&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-schema/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java (original)
+++ directory/apacheds/branches/apacheds-schema/test-framework/src/main/java/org/apache/directory/server/core/integ/FrameworkRunner.java Fri Jan 1 09:52:33 2010
@@ -95,53 +95,8 @@
classDS = DSAnnotationProcessor.getDirectoryService( getDescription() );
long revision = 0L;
DirectoryService directoryService = null;
-
- // check first if it is a LdapServerBuilder
- // then use the DS in LdapServer alone
- if( classLdapServerBuilder != null )
- {
- if( classDS == null )
- {
- throw new IllegalStateException( "missing CreateDS annotation on class " + getDescription().getClassName() );
- }
-
- directoryService = classDS;
- // Then tag for reversion and apply the class LDIFs
- revision = directoryService.getChangeLog().getCurrentRevision();
- LOG.debug( "Create revision {}", revision );
-
- DSAnnotationProcessor.applyLdifs( getDescription(), classDS );
- int minPort = 0;
-
- if ( suite != null )
- {
- LdapServer suiteServer = suite.getLdapServer();
-
- for ( Transport transport : suiteServer.getTransports() )
- {
- if ( minPort <= transport.getPort() )
- {
- minPort = transport.getPort();
- }
- }
- }
-
- classLdapServer = ServerAnnotationProcessor.getLdapServer( getDescription(), classDS, minPort + 1 );
- }
- else if( suite != null && suite.getLdapServer() != null )
- {
- classLdapServer = suite.getLdapServer();
- classDS = classLdapServer.getDirectoryService();
-
- directoryService = classDS;
- // Then tag for reversion and apply the class LDIFs
- revision = directoryService.getChangeLog().getCurrentRevision();
- LOG.debug( "Create revision {}", revision );
-
- DSAnnotationProcessor.applyLdifs( getDescription(), classDS );
- }
- else if ( classDS != null )
+ if ( classDS != null )
{
// We have a class DS defined, update it
directoryService = classDS;
@@ -206,41 +161,60 @@
}
}
+ // check if it has a LdapServerBuilder
+ // then use the DS created above
+ if( classLdapServerBuilder != null )
+ {
+ int minPort = 0;
+
+ if ( suite != null )
+ {
+ LdapServer suiteServer = suite.getLdapServer();
+
+ for ( Transport transport : suiteServer.getTransports() )
+ {
+ if ( minPort <= transport.getPort() )
+ {
+ minPort = transport.getPort();
+ }
+ }
+ }
+
+ classLdapServer = ServerAnnotationProcessor.getLdapServer( getDescription(), directoryService, minPort + 1 );
+ }
+ else if( suite != null && suite.getLdapServer() != null )
+ {
+ classLdapServer = suite.getLdapServer();
+ directoryService = classLdapServer.getDirectoryService();
+ // no need to inject the LDIF data that would have been done above
+ // if ApplyLdifs is present
+ }
+
// Now run the class
super.run( notifier );
- boolean stopped = false;
-
if( classLdapServer != null )
{
if( suite == null || suite.getLdapServer() != classLdapServer )
{
classLdapServer.stop();
- LOG.debug( "Shuting down DS for {}", classDS.getInstanceId() );
- classDS.shutdown();
- FileUtils.deleteDirectory( classDS.getWorkingDirectory() );
- stopped = true;
}
}
+
// cleanup classService if it is not the same as suite service or
// it is not null (this second case happens in the absence of a suite)
- else if ( classDS != null )
+ if ( classDS != null )
{
LOG.debug( "Shuting down DS for {}", classDS.getInstanceId() );
classDS.shutdown();
FileUtils.deleteDirectory( classDS.getWorkingDirectory() );
- stopped = true;
}
-
- if( !stopped )
+ else if ( revision < directoryService.getChangeLog().getCurrentRevision() )
{
// Revert the ldifs
- if ( revision < directoryService.getChangeLog().getCurrentRevision() )
- {
- LOG.debug( "Revert revision {}", revision );
- // We use a class or suite DS, just revert the current test's modifications
- directoryService.revert( revision );
- }
+ LOG.debug( "Revert revision {}", revision );
+ // We use a class or suite DS, just revert the current test's modifications
+ directoryService.revert( revision );
}
}
catch ( Exception e )
@@ -288,9 +262,11 @@
// Check if this method has a dedicated DSBuilder
DirectoryService methodDS = DSAnnotationProcessor.getDirectoryService( methodDescription );
+ // we don't support method level LdapServer so
+ // we check for the presence of Class level LdapServer first
if( classLdapServer != null )
{
- directoryService = classDS;
+ directoryService = classLdapServer.getDirectoryService();
revision = directoryService.getChangeLog().getCurrentRevision();
LOG.debug( "Create revision {}", revision );
@@ -340,41 +316,24 @@
if( classLdapServer != null )
{
field = getTestClass().getJavaClass().getField( DIRECTORY_SERVICE_FIELD_NAME );
- field.set( getTestClass().getJavaClass(), classDS );
+ field.set( getTestClass().getJavaClass(), classLdapServer.getDirectoryService() );
field = getTestClass().getJavaClass().getField( LDAP_SERVER_FIELD_NAME );
field.set( getTestClass().getJavaClass(), classLdapServer );
}
-// // Last not least, see if we have to start a server
-// else if ( suite != null )
-// {
-// // If we have a LdapServer instance, feed the associated field too
-// field = getTestClass().getJavaClass().getField( LDAP_SERVER_FIELD_NAME );
-// field.set( getTestClass().getJavaClass(), suite.getLdapServer() );
-//
-// /*
-// CreateLdapServer ldapServerBuilder = suite.getLdapServerBuilder();
-//
-// DefaultLdapServerFactory ldapServerFactory = (DefaultLdapServerFactory)ldapServerBuilder.factory().newInstance();
-// ldapServerFactory.setDirectoryService( directoryService );
-// */
-// }
// Run the test
super.runChild( method, notifier );
- boolean stopped = false;
// Cleanup the methodDS if it has been created
if ( methodDS != null )
{
LOG.debug( "Shuting down DS for {}", methodDS.getInstanceId() );
methodDS.shutdown();
FileUtils.deleteDirectory( methodDS.getWorkingDirectory() );
- stopped = true;
}
-
- if ( ( !stopped ) && ( revision < directoryService.getChangeLog().getCurrentRevision() ) )
+ else if ( ( revision < directoryService.getChangeLog().getCurrentRevision() ) )
{
// We use a class or suite DS, just revert the current test's modifications
directoryService.revert( revision );
Added: directory/apacheds/branches/apacheds-schema/test-framework/src/test/java/org/apache/directory/server/core/integ/TestWithClassLevelLdapServer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/test-framework/src/test/java/org/apache/directory/server/core/integ/TestWithClassLevelLdapServer.java?rev=894986&view=auto
==============================================================================
--- directory/apacheds/branches/apacheds-schema/test-framework/src/test/java/org/apache/directory/server/core/integ/TestWithClassLevelLdapServer.java (added)
+++ directory/apacheds/branches/apacheds-schema/test-framework/src/test/java/org/apache/directory/server/core/integ/TestWithClassLevelLdapServer.java Fri Jan 1 09:52:33 2010
@@ -0,0 +1,61 @@
+/*
+ * 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.core.integ;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.directory.server.annotations.CreateLdapServer;
+import org.apache.directory.server.annotations.CreateTransport;
+import org.apache.directory.server.core.annotations.ApplyLdifFiles;
+import org.apache.directory.shared.ldap.name.LdapDN;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith( FrameworkRunner.class )
+@CreateLdapServer (
+ transports =
+ {
+ @CreateTransport( protocol = "LDAP" )
+ })
+public class TestWithClassLevelLdapServer extends AbstractLdapTestUnit
+{
+ @Test
+ @ApplyLdifFiles( "test-entry.ldif" )
+ public void testWithApplyLdifFiles() throws Exception
+ {
+ assertTrue( service.getAdminSession().exists( new LdapDN( "cn=testPerson1,ou=system" ) ) );
+
+ if ( isRunInSuite )
+ {
+ assertTrue( service.getAdminSession().exists( new LdapDN( "dc=example,dc=com" ) ) );
+ // the SuiteDS is the name given to the DS instance in the enclosing TestSuite
+ assertEquals( "SuiteDS", ldapServer.getDirectoryService().getInstanceId() );
+ }
+ else // should run with a default DS created in FrameworkRunner
+ {
+ assertTrue( ldapServer.getDirectoryService().getInstanceId().startsWith( "default" ) ); // after 'default' a UUID follows
+ }
+
+ assertTrue( service.getAdminSession().exists( new LdapDN( "cn=testPerson2,ou=system" ) ) );
+
+ assertNotNull( ldapServer );
+ }
+}