From e11c4ccf18b63a004d1bfb139e7b7df075b2fa38 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Thu, 3 Nov 2011 23:47:50 +0000 Subject: [PATCH] start fixing unit test on webdav module: ensure correctly closing lucene index on shutdown git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1197361 13f79535-47bb-0310-9956-ffa450edef68 --- .../archiva-web/archiva-webdav/pom.xml | 5 + ...tractRepositoryServletProxiedTestCase.java | 20 ++-- .../AbstractRepositoryServletTestCase.java | 5 + .../webdav/util/MavenIndexerCleaner.java | 109 ++++++++++++++++++ .../repository-servlet-security-test/web.xml | 3 + .../src/test/resources/WEB-INF/web.xml | 3 + .../resources/repository-servlet-simple.xml | 5 +- 7 files changed, 140 insertions(+), 10 deletions(-) create mode 100644 archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/util/MavenIndexerCleaner.java diff --git a/archiva-modules/archiva-web/archiva-webdav/pom.xml b/archiva-modules/archiva-web/archiva-webdav/pom.xml index 5ca1c57e2..5c301b023 100644 --- a/archiva-modules/archiva-web/archiva-webdav/pom.xml +++ b/archiva-modules/archiva-web/archiva-webdav/pom.xml @@ -180,6 +180,11 @@ archiva-repository-admin-default test + + org.codehaus.redback + redback-common-test-resources + test + diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletProxiedTestCase.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletProxiedTestCase.java index b16834dd3..6a8864334 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletProxiedTestCase.java +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletProxiedTestCase.java @@ -100,6 +100,16 @@ public abstract class AbstractRepositoryServletProxiedTestCase super.setUp(); } + @Override + @After + public void tearDown() + throws Exception + { + shutdownServer( remoteCentral ); + shutdownServer( remoteSnapshots ); + super.tearDown(); + } + protected RemoteRepoInfo createServer( String id ) throws Exception { @@ -254,13 +264,5 @@ public abstract class AbstractRepositoryServletProxiedTestCase setupCleanRepo( remoteSnapshots.root ); } - @Override - @After - public void tearDown() - throws Exception - { - shutdownServer( remoteCentral ); - shutdownServer( remoteSnapshots ); - super.tearDown(); - } + } diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java index db149f09a..8ae24a9ee 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/AbstractRepositoryServletTestCase.java @@ -27,11 +27,14 @@ import junit.framework.Assert; import junit.framework.TestCase; import net.sf.ehcache.CacheManager; import org.apache.archiva.admin.model.beans.ManagedRepository; +import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; import org.apache.commons.io.FileUtils; import org.apache.archiva.configuration.ArchivaConfiguration; import org.apache.archiva.configuration.Configuration; import org.apache.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.archiva.configuration.RemoteRepositoryConfiguration; +import org.apache.maven.index.NexusIndexer; +import org.apache.maven.index.context.IndexingContext; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; @@ -136,6 +139,8 @@ public abstract class AbstractRepositoryServletTestCase public void tearDown() throws Exception { + + if ( sc != null ) { sc.clearContents(); diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/util/MavenIndexerCleaner.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/util/MavenIndexerCleaner.java new file mode 100644 index 000000000..8c960e38f --- /dev/null +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/util/MavenIndexerCleaner.java @@ -0,0 +1,109 @@ +package org.apache.archiva.webdav.util; +/* + * 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. + */ + +import com.opensymphony.xwork2.inject.Inject; +import org.apache.archiva.common.plexusbridge.PlexusSisuBridge; +import org.apache.maven.index.NexusIndexer; +import org.apache.maven.index.context.IndexingContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +/** + * @author Olivier Lamy + */ +@Service +public class MavenIndexerCleaner + implements ServletContextListener +{ + Logger log = LoggerFactory.getLogger( getClass() ); + + + PlexusSisuBridge plexusSisuBridge; + + public void contextInitialized( ServletContextEvent servletContextEvent ) + { + try + { + WebApplicationContext wacu = + WebApplicationContextUtils.getRequiredWebApplicationContext( servletContextEvent.getServletContext() ); + plexusSisuBridge = wacu.getBean( PlexusSisuBridge.class ); + cleanupIndex( ); + + } + catch ( Exception e ) + { + log.error( e.getMessage(), e ); + throw new RuntimeException( e.getMessage(), e ); + } + } + + public void contextDestroyed( ServletContextEvent servletContextEvent ) + { + try + { + cleanupIndex( ); + + } + catch ( Exception e ) + { + log.error( e.getMessage(), e ); + throw new RuntimeException( e.getMessage(), e ); + } + } + + public void cleanupIndex( ) + throws Exception + { + log.info( "cleanup IndexingContext" ); + NexusIndexer nexusIndexer = plexusSisuBridge.lookup( NexusIndexer.class ); + for ( IndexingContext context : nexusIndexer.getIndexingContexts().values() ) + { + nexusIndexer.removeIndexingContext( context, true ); + } + } + + @Inject + private ApplicationContext applicationContext; + + @PostConstruct + public void startup() throws Exception + { + plexusSisuBridge = applicationContext.getBean( PlexusSisuBridge.class ); + cleanupIndex( ); + } + + @PreDestroy + public void shutdown() + throws Exception + { + cleanupIndex( ); + } + + +} diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/repository-servlet-security-test/web.xml b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/repository-servlet-security-test/web.xml index 1897fd4be..698ca9719 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/repository-servlet-security-test/web.xml +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/repository-servlet-security-test/web.xml @@ -27,6 +27,9 @@ org.springframework.web.context.ContextLoaderListener + + org.apache.archiva.webdav.util.MavenIndexerCleaner + contextClass org.codehaus.redback.components.springutils.CachingWebApplicationContext diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/web.xml b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/web.xml index 3a737a0f4..756054353 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/web.xml +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/WEB-INF/web.xml @@ -27,6 +27,9 @@ org.springframework.web.context.ContextLoaderListener + + org.apache.archiva.webdav.util.MavenIndexerCleaner + contextClass org.codehaus.redback.components.springutils.CachingWebApplicationContext diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/repository-servlet-simple.xml b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/repository-servlet-simple.xml index 36fe55e73..033af17d9 100644 --- a/archiva-modules/archiva-web/archiva-webdav/src/test/resources/repository-servlet-simple.xml +++ b/archiva-modules/archiva-web/archiva-webdav/src/test/resources/repository-servlet-simple.xml @@ -25,7 +25,7 @@ http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" - default-lazy-init="true"> + default-lazy-init="false"> @@ -52,4 +52,7 @@ + + + \ No newline at end of file -- 2.39.5