You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2014/08/01 04:55:39 UTC

[2/3] git commit: refactor service tests

refactor service tests

Split out scan call to be explicit to make it easier to refactor duplicate
sections, then move repeated configuration to before/after methods.

Make sure scanning has finished before operations that might concurrently try
to modify the metadata. This also means we can now verify the deletion of the
repository is successful


Project: http://git-wip-us.apache.org/repos/asf/archiva/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/8b1e1ffa
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/8b1e1ffa
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/8b1e1ffa

Branch: refs/heads/master
Commit: 8b1e1ffa7120b6da1cef6e357d99c290014d9d37
Parents: 2b8f78a
Author: Brett Porter <br...@apache.org>
Authored: Fri Aug 1 09:50:00 2014 +1000
Committer: Brett Porter <br...@apache.org>
Committed: Fri Aug 1 12:51:12 2014 +1000

----------------------------------------------------------------------
 .../services/DefaultRepositoriesService.java    |   8 +
 .../rest/services/AbstractArchivaRestTest.java  |  52 +--
 .../rest/services/BrowseServiceTest.java        | 323 +++++--------------
 .../services/MergeRepositoriesServiceTest.java  | 104 +++---
 .../rest/services/SearchServiceTest.java        | 156 ++-------
 5 files changed, 181 insertions(+), 462 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/archiva/blob/8b1e1ffa/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
index 6c3aaa7..f69d566 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
@@ -64,6 +64,7 @@ import org.apache.archiva.repository.metadata.RepositoryMetadataWriter;
 import org.apache.archiva.repository.scanner.RepositoryScanStatistics;
 import org.apache.archiva.repository.scanner.RepositoryScanner;
 import org.apache.archiva.repository.scanner.RepositoryScannerException;
+import org.apache.archiva.repository.scanner.RepositoryScannerInstance;
 import org.apache.archiva.rest.api.model.ArtifactTransferRequest;
 import org.apache.archiva.rest.api.model.StringList;
 import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
@@ -169,6 +170,13 @@ public class DefaultRepositoriesService
     @Override
     public Boolean alreadyScanning( String repositoryId )
     {
+        for ( RepositoryScannerInstance scan : repoScanner.getInProgressScans() )
+        {
+            if ( scan.getRepository().getId().equals( repositoryId ) )
+            {
+                return true;
+            }
+        }
         return repositoryTaskScheduler.isProcessingRepositoryTask( repositoryId );
     }
 

http://git-wip-us.apache.org/repos/asf/archiva/blob/8b1e1ffa/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
index 470fe7d..3104480 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
@@ -22,8 +22,10 @@ package org.apache.archiva.rest.services;
 import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import org.apache.archiva.admin.model.beans.ManagedRepository;
 import org.apache.archiva.common.utils.FileUtil;
+import org.apache.archiva.redback.rest.api.services.RedbackServiceException;
 import org.apache.archiva.redback.rest.services.AbstractRestServicesTest;
 import org.apache.archiva.rest.api.services.ArchivaAdministrationService;
+import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
 import org.apache.archiva.rest.api.services.RedbackRuntimeConfigurationService;
 import org.apache.archiva.rest.api.services.BrowseService;
 import org.apache.archiva.rest.api.services.CommonServices;
@@ -51,6 +53,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.ws.rs.core.MediaType;
 import java.io.File;
+import java.io.IOException;
 import java.util.Collections;
 import java.util.Date;
 import org.apache.archiva.rest.api.services.PluginsService;
@@ -417,14 +420,8 @@ public abstract class AbstractArchivaRestTest
 
     }
 
-    protected void createAndIndexRepo( String testRepoId, String repoPath, boolean scan )
-        throws Exception
-    {
-        createAndIndexRepo( testRepoId, repoPath, scan, false );
-    }
-
-    protected void createAndIndexRepo( String testRepoId, String repoPath, boolean scan, boolean stageNeeded )
-        throws Exception
+    protected void createAndIndexRepo( String testRepoId, String repoPath, boolean stageNeeded )
+        throws ArchivaRestServiceException, IOException, RedbackServiceException
     {
         if ( getManagedRepositoriesService( authorizationHeader ).getManagedRepository( testRepoId ) != null )
         {
@@ -464,23 +461,30 @@ public abstract class AbstractArchivaRestTest
 
         getRoleManagementService( authorizationHeader ).assignTemplatedRole(
             ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, testRepoId, "guest" );
-        if ( scan )
-        {
-            getRepositoriesService( authorizationHeader ).scanRepositoryNow( testRepoId, true );
-        }
+    }
 
+    protected void scanRepo( String testRepoId )
+        throws ArchivaRestServiceException
+    {
+        getRepositoriesService( authorizationHeader ).scanRepositoryNow( testRepoId, true );
     }
 
     protected void createAndIndexRepo( String testRepoId, String repoPath )
         throws Exception
     {
-        createAndIndexRepo( testRepoId, repoPath, true, false );
+        createAndIndexRepo( testRepoId, repoPath, false );
+        scanRepo( testRepoId );
     }
 
     protected void createStagedNeededRepo( String testRepoId, String repoPath, boolean scan )
         throws Exception
     {
-        createAndIndexRepo( testRepoId, repoPath, scan, true );
+        createAndIndexRepo( testRepoId, repoPath, true );
+        if ( scan )
+        {
+            scanRepo( testRepoId );
+        }
+
         RepositoriesService repositoriesService = getRepositoriesService( authorizationHeader );
         repositoriesService.scanRepositoryDirectoriesNow( testRepoId );
         if ( scan )
@@ -494,16 +498,9 @@ public abstract class AbstractArchivaRestTest
     protected void deleteTestRepo( String id )
         throws Exception
     {
-        try
+        if ( getManagedRepositoriesService( authorizationHeader ).getManagedRepository( id ) != null )
         {
-            if ( getManagedRepositoriesService( authorizationHeader ).getManagedRepository( id ) != null )
-            {
-                getManagedRepositoriesService( authorizationHeader ).deleteManagedRepository( id, false );
-            }
-        }
-        catch ( Exception e )
-        {
-            log.warn( "skip error deleting repo {}", id, e );
+            getManagedRepositoriesService( authorizationHeader ).deleteManagedRepository( id, false );
         }
     }
 
@@ -511,4 +508,13 @@ public abstract class AbstractArchivaRestTest
     {
         return System.getProperty( "basedir" );
     }
+
+    protected void waitForScanToComplete( String repoId )
+        throws ArchivaRestServiceException, InterruptedException
+    {
+        while ( getRepositoriesService( authorizationHeader ).alreadyScanning( repoId ) ) {
+            // Would be better to cancel, if we had that capacity
+            Thread.sleep( 100 );
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/8b1e1ffa/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java
index cf28db7..9a1dbd6 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java
@@ -20,23 +20,27 @@ package org.apache.archiva.rest.services;
 
 import org.apache.archiva.maven2.model.Artifact;
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
+import org.apache.archiva.redback.rest.api.services.RedbackServiceException;
 import org.apache.archiva.rest.api.model.ArtifactContentEntry;
 import org.apache.archiva.rest.api.model.BrowseResult;
 import org.apache.archiva.rest.api.model.BrowseResultEntry;
 import org.apache.archiva.rest.api.model.Entry;
 import org.apache.archiva.rest.api.model.MetadataAddRequest;
 import org.apache.archiva.rest.api.model.VersionsList;
+import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
 import org.apache.archiva.rest.api.services.BrowseService;
 import org.apache.cxf.jaxrs.client.WebClient;
-
 import org.assertj.core.data.MapEntry;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 
-import javax.ws.rs.core.MediaType;
 import java.io.File;
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.ws.rs.core.MediaType;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -46,6 +50,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 public class BrowseServiceTest
     extends AbstractArchivaRestTest
 {
+    private static final String TEST_REPO_ID = "test-repo";
 
     Map<String, String> toMap( List<Entry> entries )
     {
@@ -64,31 +69,20 @@ public class BrowseServiceTest
     public void metadatagetthenadd()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath() );
+        scanRepo( TEST_REPO_ID );
 
         BrowseService browseService = getBrowseService( authorizationHeader, false );
 
         Map<String, String> metadatas =
-            toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", testRepoId ) );
+            toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", TEST_REPO_ID ) );
 
         assertThat( metadatas ).isNotNull().isEmpty();
 
-        browseService.addMetadata( "commons-cli", "commons-cli", "1.0", "wine", "bordeaux", testRepoId );
+        browseService.addMetadata( "commons-cli", "commons-cli", "1.0", "wine", "bordeaux", TEST_REPO_ID );
 
-        metadatas = toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", testRepoId ) );
+        metadatas = toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", TEST_REPO_ID ) );
 
         assertThat( metadatas ).isNotNull().isNotEmpty().contains( MapEntry.entry( "wine", "bordeaux" ) );
-
-        deleteTestRepo( testRepoId );
-
     }
 
 
@@ -96,89 +90,52 @@ public class BrowseServiceTest
     public void metadatagetthenaddthendelete()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath() );
+        scanRepo( TEST_REPO_ID );
 
         BrowseService browseService = getBrowseService( authorizationHeader, false );
 
         Map<String, String> metadatas =
-            toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", testRepoId ) );
+            toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", TEST_REPO_ID ) );
 
         assertThat( metadatas ).isNotNull().isEmpty();
 
-        browseService.addMetadata( "commons-cli", "commons-cli", "1.0", "wine", "bordeaux", testRepoId );
+        browseService.addMetadata( "commons-cli", "commons-cli", "1.0", "wine", "bordeaux", TEST_REPO_ID );
 
-        metadatas = toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", testRepoId ) );
+        metadatas = toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", TEST_REPO_ID ) );
 
         assertThat( metadatas ).isNotNull().isNotEmpty().contains( MapEntry.entry( "wine", "bordeaux" ) );
 
-        browseService.deleteMetadata( "commons-cli", "commons-cli", "1.0", "wine", testRepoId );
+        browseService.deleteMetadata( "commons-cli", "commons-cli", "1.0", "wine", TEST_REPO_ID );
 
-        metadatas = toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", testRepoId ) );
+        metadatas = toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", TEST_REPO_ID ) );
 
         assertThat( metadatas ).isNotNull().isEmpty();
-
-        deleteTestRepo( testRepoId );
-
     }
 
     @Test
     public void browserootGroups()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, false );
 
-        BrowseResult browseResult = browseService.getRootGroups( testRepoId );
+        BrowseResult browseResult = browseService.getRootGroups( TEST_REPO_ID );
         assertThat( browseResult ).isNotNull();
         assertThat( browseResult.getBrowseResultEntries() ).isNotNull().isNotEmpty().hasSize( 3 ).contains(
             new BrowseResultEntry( "commons-cli", false ), new BrowseResultEntry( "commons-logging", false ),
             new BrowseResultEntry( "org.apache", false ) );
-
-        deleteTestRepo( testRepoId );
-
     }
 
     @Test
     public void browsegroupId()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, false );
 
-        BrowseResult browseResult = browseService.browseGroupId( "org.apache", testRepoId );
+        BrowseResult browseResult = browseService.browseGroupId( "org.apache", TEST_REPO_ID );
         assertThat( browseResult ).isNotNull();
         assertThat( browseResult.getBrowseResultEntries() ).isNotNull().isNotEmpty().hasSize( 2 ).contains(
             new BrowseResultEntry( "org.apache.felix", false ),
             new BrowseResultEntry( "org.apache.karaf.features", false ) );
-
-        deleteTestRepo( testRepoId );
-
     }
 
 
@@ -186,183 +143,96 @@ public class BrowseServiceTest
     public void browsegroupIdWithReleaseStartNumber()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, false );
-        BrowseResult browseResult = browseService.browseGroupId( "commons-logging.commons-logging", testRepoId );
+        BrowseResult browseResult = browseService.browseGroupId( "commons-logging.commons-logging", TEST_REPO_ID );
         log.info( "browseResult: {}", browseResult );
-
-        deleteTestRepo( testRepoId );
-
     }
 
     @Test
     public void versionsList()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, false );
 
         VersionsList versions =
-            browseService.getVersionsList( "org.apache.karaf.features", "org.apache.karaf.features.core", testRepoId );
+            browseService.getVersionsList( "org.apache.karaf.features", "org.apache.karaf.features.core", TEST_REPO_ID );
         assertThat( versions ).isNotNull();
         assertThat( versions.getVersions() ).isNotNull().isNotEmpty().hasSize( 2 ).contains( "2.2.1", "2.2.2" );
-
-        deleteTestRepo( testRepoId );
-
     }
 
     @Test
     public void getProjectVersionMetadata()
         throws Exception
     {
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, true );
 
-        ProjectVersionMetadata metadata =
-            browseService.getProjectVersionMetadata( "org.apache.karaf.features", "org.apache.karaf.features.core",
-                                                     testRepoId );
+        ProjectVersionMetadata metadata = browseService.getProjectVersionMetadata( "org.apache.karaf.features",
+                                                                                   "org.apache.karaf.features.core",
+                                                                                   TEST_REPO_ID );
 
         assertThat( metadata ).isNotNull();
-
-        deleteTestRepo( testRepoId );
     }
 
     @Test
     public void readArtifactContentEntries()
         throws Exception
     {
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, true );
 
         List<ArtifactContentEntry> artifactContentEntries =
             browseService.getArtifactContentEntries( "commons-logging", "commons-logging", "1.1", null, null, null,
-                                                     testRepoId );
+                                                     TEST_REPO_ID );
 
         log.info( "artifactContentEntries: {}", artifactContentEntries );
 
-        assertThat( artifactContentEntries ).isNotNull().isNotEmpty().hasSize( 2 ).contains(
-            new ArtifactContentEntry( "org", false, 0, testRepoId ),
-            new ArtifactContentEntry( "META-INF", false, 0, testRepoId ) );
-        deleteTestRepo( testRepoId );
+        assertThat( artifactContentEntries ).isNotNull().isNotEmpty().hasSize( 2 ).contains( new ArtifactContentEntry(
+            "org", false, 0, TEST_REPO_ID ), new ArtifactContentEntry( "META-INF", false, 0, TEST_REPO_ID ) );
     }
 
     @Test
     public void readArtifactContentEntriesRootPath()
         throws Exception
     {
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, true );
 
         List<ArtifactContentEntry> artifactContentEntries =
             browseService.getArtifactContentEntries( "commons-logging", "commons-logging", "1.1", null, null, "org/",
-                                                     testRepoId );
+                                                     TEST_REPO_ID );
 
         log.info( "artifactContentEntries: {}", artifactContentEntries );
 
         assertThat( artifactContentEntries ).isNotNull().isNotEmpty().hasSize( 1 ).contains(
-            new ArtifactContentEntry( "org/apache", false, 1, testRepoId ) );
-        deleteTestRepo( testRepoId );
+            new ArtifactContentEntry( "org/apache", false, 1, TEST_REPO_ID ) );
     }
 
     @Test
     public void readArtifactContentEntriesFilesAndDirectories()
         throws Exception
     {
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, true );
 
         List<ArtifactContentEntry> artifactContentEntries =
             browseService.getArtifactContentEntries( "commons-logging", "commons-logging", "1.1", null, null,
-                                                     "org/apache/commons/logging/", testRepoId );
+                                                     "org/apache/commons/logging/", TEST_REPO_ID );
 
         log.info( "artifactContentEntries: {}", artifactContentEntries );
 
         assertThat( artifactContentEntries ).isNotNull().isNotEmpty().hasSize( 10 ).contains(
-            new ArtifactContentEntry( "org/apache/commons/logging/impl", false, 4, testRepoId ),
-            new ArtifactContentEntry( "org/apache/commons/logging/LogSource.class", true, 4, testRepoId ) );
-        deleteTestRepo( testRepoId );
+            new ArtifactContentEntry( "org/apache/commons/logging/impl", false, 4, TEST_REPO_ID ),
+            new ArtifactContentEntry( "org/apache/commons/logging/LogSource.class", true, 4, TEST_REPO_ID ) );
     }
 
     @Test
     public void getArtifactDownloadInfos()
         throws Exception
     {
-        try
-        {
-            String testRepoId = "test-repo";
-            // force guest user creation if not exists
-            if ( getUserService( authorizationHeader ).getGuestUser() == null )
-            {
-                assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-            }
-
-            createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(),
-                                false );
-
-            BrowseService browseService = getBrowseService( authorizationHeader, true );
+        BrowseService browseService = getBrowseService( authorizationHeader, true );
 
-            List<Artifact> artifactDownloadInfos =
-                browseService.getArtifactDownloadInfos( "commons-logging", "commons-logging", "1.1", testRepoId );
+        List<Artifact> artifactDownloadInfos =
+            browseService.getArtifactDownloadInfos( "commons-logging", "commons-logging", "1.1", TEST_REPO_ID );
 
-            log.info( "artifactDownloadInfos {}", artifactDownloadInfos );
-            assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 3 );
-            deleteTestRepo( testRepoId );
-        }
-        catch ( Exception e )
-        {
-            log.error( e.getMessage(), e );
-            throw e;
-        }
+        log.info( "artifactDownloadInfos {}", artifactDownloadInfos );
+        assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 3 );
     }
 
 
@@ -370,35 +240,18 @@ public class BrowseServiceTest
     public void readArtifactContentText()
         throws Exception
     {
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, true );
 
         WebClient.client( browseService ).accept( MediaType.TEXT_PLAIN );
 
-        try
-        {
-            String text =
-                browseService.getArtifactContentText( "commons-logging", "commons-logging", "1.1", "sources", null,
-                                                      "org/apache/commons/logging/LogSource.java",
-                                                      testRepoId ).getContent();
+        String text =
+            browseService.getArtifactContentText( "commons-logging", "commons-logging", "1.1", "sources", null,
+                                                  "org/apache/commons/logging/LogSource.java",
+                                                  TEST_REPO_ID ).getContent();
 
-            log.debug( "text: {}", text );
+        log.debug( "text: {}", text );
 
-            assertThat( text ).contains( "package org.apache.commons.logging;" ).contains( "public class LogSource {" );
-        }
-        catch ( Exception e )
-        {
-            log.error( e.getMessage(), e );
-            throw e;
-        }
+        assertThat( text ).contains( "package org.apache.commons.logging;" ).contains( "public class LogSource {" );
     }
 
 
@@ -406,36 +259,19 @@ public class BrowseServiceTest
     public void readArtifactContentTextPom()
         throws Exception
     {
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, true );
 
         WebClient.client( browseService ).accept( MediaType.TEXT_PLAIN );
 
-        try
-        {
-            String text =
-                browseService.getArtifactContentText( "commons-logging", "commons-logging", "1.1", null, "pom", null,
-                                                      testRepoId ).getContent();
+        String text =
+            browseService.getArtifactContentText( "commons-logging", "commons-logging", "1.1", null, "pom", null,
+                                                  TEST_REPO_ID ).getContent();
 
-            log.info( "text: {}", text );
+        log.info( "text: {}", text );
 
-            assertThat( text ).contains(
-                "<url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>" ).contains(
-                "<subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>" );
-        }
-        catch ( Exception e )
-        {
-            log.error( e.getMessage(), e );
-            throw e;
-        }
+        assertThat( text ).contains(
+            "<url>http://jakarta.apache.org/commons/${pom.artifactId.substring(8)}/</url>" ).contains(
+            "<subscribe>commons-dev-subscribe@jakarta.apache.org</subscribe>" );
     }
 
 
@@ -443,47 +279,22 @@ public class BrowseServiceTest
     public void artifactsNumber()
         throws Exception
     {
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
-
         BrowseService browseService = getBrowseService( authorizationHeader, true );
 
         //WebClient.client( browseService ).accept( MediaType.TEXT_PLAIN );
 
-        try
-        {
-            int number = browseService.getArtifacts( testRepoId ).size();
+        int number = browseService.getArtifacts( TEST_REPO_ID ).size();
 
-            log.info( "getArtifactsNumber: {}", number );
+        log.info( "getArtifactsNumber: {}", number );
 
-            assertTrue( number > 1 );
-        }
-        catch ( Exception e )
-        {
-            log.error( e.getMessage(), e );
-            throw e;
-        }
+        assertTrue( number > 1 );
     }
 
     @Test
     public void metadatainbatchmode()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath() );
+        scanRepo( TEST_REPO_ID );
 
         BrowseService browseService = getBrowseService( authorizationHeader, false );
 
@@ -497,15 +308,35 @@ public class BrowseServiceTest
         metadataAddRequest.setArtifactId( "commons-cli" );
         metadataAddRequest.setVersion( "1.0" );
         metadataAddRequest.setMetadatas( inputMetadata );
-        browseService.importMetadata( metadataAddRequest, testRepoId );
+        browseService.importMetadata( metadataAddRequest, TEST_REPO_ID );
 
         Map<String, String> metadatas =
-            toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", testRepoId ) );
+            toMap( browseService.getMetadatas( "commons-cli", "commons-cli", "1.0", TEST_REPO_ID ) );
 
         assertThat( metadatas ).isNotNull().isNotEmpty().contains( MapEntry.entry( "buildNumber", "1" ) ).contains(
             MapEntry.entry( "author", "alecharp" ) ).contains( MapEntry.entry( "jenkins_version", "1.486" ) );
+    }
+
+    @Before
+    public void initialiseTestRepo()
+        throws RedbackServiceException, ArchivaRestServiceException, IOException, InterruptedException
+    {
+        // force guest user creation if not exists
+        if ( getUserService( authorizationHeader ).getGuestUser() == null )
+        {
+            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
+        }
 
-        deleteTestRepo( testRepoId );
+        createAndIndexRepo( TEST_REPO_ID, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(),
+                            false );
+
+        waitForScanToComplete( TEST_REPO_ID );
     }
 
+    @After
+    public void deleteTestRepo()
+        throws Exception
+    {
+        deleteTestRepo( TEST_REPO_ID );
+    }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/8b1e1ffa/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/MergeRepositoriesServiceTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/MergeRepositoriesServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/MergeRepositoriesServiceTest.java
index 5f866a4..7ec1ede 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/MergeRepositoriesServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/MergeRepositoriesServiceTest.java
@@ -36,98 +36,66 @@ public class MergeRepositoriesServiceTest
     extends AbstractArchivaRestTest
 {
 
+    private static final String TEST_REPOSITORY = "test-repository";
+
     private File repo = new File( System.getProperty( "builddir" ), "test-repository" );
 
     private File repoStage = new File( System.getProperty( "builddir" ), "test-repository-stage" );
 
-    @Override
-    @Before
-    public void startServer()
+    @Test
+    public void getMergeConflictedArtifacts()
         throws Exception
     {
+        MergeRepositoriesService service = getMergeRepositoriesService( authorizationHeader );
 
-        FileUtils.copyDirectory( new File( System.getProperty( "basedir" ), "src/test/repo-with-osgi" ), repo );
-        FileUtils.copyDirectory( new File( System.getProperty( "basedir" ), "src/test/repo-with-osgi-stage" ),
-                                 repoStage );
-        super.startServer();
+        List<Artifact> artifactMetadatas = service.getMergeConflictedArtifacts( TEST_REPOSITORY + "-stage",
+                                                                                TEST_REPOSITORY );
 
-    }
+        log.info( "conflicts: {}", artifactMetadatas );
 
-    @Override
-    @After
-    public void stopServer()
-        throws Exception
-    {
-        // TODO delete repositories
-        super.stopServer();
-        FileUtils.deleteDirectory( repo );
-        FileUtils.deleteDirectory( repoStage );
+        assertThat( artifactMetadatas ).isNotNull().isNotEmpty().hasSize( 8 );
     }
 
     @Test
-    public void getMergeConflictedArtifacts()
+    public void merge()
         throws Exception
     {
-        String testRepoId = "test-repository";
-        try
-        {
+        String mergedArtifactPath =
+            "org/apache/felix/org.apache.felix.bundlerepository/1.6.4/org.apache.felix.bundlerepository-1.6.4.jar";
+        String mergedArtifactPomPath =
+            "org/apache/felix/org.apache.felix.bundlerepository/1.6.4/org.apache.felix.bundlerepository-1.6.4.pom";
 
-            createStagedNeededRepo( testRepoId, repo.getAbsolutePath(), true );
+        assertTrue( new File( repoStage, mergedArtifactPath ).exists() );
+        assertTrue( new File( repoStage, mergedArtifactPomPath ).exists() );
 
-            MergeRepositoriesService service = getMergeRepositoriesService( authorizationHeader );
+        MergeRepositoriesService service = getMergeRepositoriesService( authorizationHeader );
 
-            List<Artifact> artifactMetadatas = service.getMergeConflictedArtifacts( testRepoId + "-stage", testRepoId );
+        service.mergeRepositories( TEST_REPOSITORY + "-stage", TEST_REPOSITORY, true );
 
-            log.info( "conflicts: {}", artifactMetadatas );
+        assertTrue( new File( repo, mergedArtifactPath ).exists() );
+        assertTrue( new File( repo, mergedArtifactPomPath ).exists() );
+    }
 
-            assertThat( artifactMetadatas ).isNotNull().isNotEmpty().hasSize( 8 );
+    @After
+    public void deleteStageRepo()
+        throws Exception
+    {
+        waitForScanToComplete( TEST_REPOSITORY );
 
+        deleteTestRepo( TEST_REPOSITORY );
 
-        }
-        catch ( Exception e )
-        {
-            log.error( e.getMessage(), e );
-            throw e;
-        }
-        finally
-        {
-            deleteTestRepo( testRepoId );
-        }
+        FileUtils.deleteDirectory( repo );
+        FileUtils.deleteDirectory( repoStage );
     }
 
-    @Test
-    public void merge()
+    @Before
+    public void createStageRepo()
         throws Exception
     {
-        String testRepoId = "test-repository";
-        try
-        {
-            createStagedNeededRepo( testRepoId, repo.getAbsolutePath(), true );
-
-            String mergedArtifactPath =
-                "org/apache/felix/org.apache.felix.bundlerepository/1.6.4/org.apache.felix.bundlerepository-1.6.4.jar";
-            String mergedArtifactPomPath =
-                "org/apache/felix/org.apache.felix.bundlerepository/1.6.4/org.apache.felix.bundlerepository-1.6.4.pom";
-
-            assertTrue( new File( repoStage, mergedArtifactPath ).exists() );
-            assertTrue( new File( repoStage, mergedArtifactPomPath ).exists() );
-
-            MergeRepositoriesService service = getMergeRepositoriesService( authorizationHeader );
-
-            service.mergeRepositories( testRepoId + "-stage", testRepoId, true );
-
-            assertTrue( new File( repo, mergedArtifactPath ).exists() );
-            assertTrue( new File( repo, mergedArtifactPomPath ).exists() );
-
-        }
-        catch ( Exception e )
-        {
-            log.error( e.getMessage(), e );
-            throw e;
-        }
-        finally
-        {
-            deleteTestRepo( testRepoId );
-        }
+        FileUtils.copyDirectory( new File( System.getProperty( "basedir" ), "src/test/repo-with-osgi" ), repo );
+        FileUtils.copyDirectory( new File( System.getProperty( "basedir" ), "src/test/repo-with-osgi-stage" ),
+                                 repoStage );
+
+        createStagedNeededRepo( TEST_REPOSITORY, repo.getAbsolutePath(), true );
     }
 }

http://git-wip-us.apache.org/repos/asf/archiva/blob/8b1e1ffa/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
index a073b24..d9e751b 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
@@ -23,6 +23,8 @@ import org.apache.archiva.maven2.model.Artifact;
 import org.apache.archiva.rest.api.model.SearchRequest;
 import org.apache.archiva.rest.api.services.SearchService;
 import org.assertj.core.api.Assertions;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 
 import java.util.Arrays;
@@ -37,22 +39,12 @@ import static org.assertj.core.api.Assertions.assertThat;
 public class SearchServiceTest
     extends AbstractArchivaRestTest
 {
-
+    private static final String TEST_REPO = "test-repo";
 
     @Test
     public void quickSearchOnArtifactId()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
-
         SearchService searchService = getSearchService( authorizationHeader );
 
         // START SNIPPET: quick-search
@@ -65,8 +57,6 @@ public class SearchServiceTest
         assertTrue( " not 6 results for commons-logging search but " + artifacts.size() + ":" + artifacts,
                     artifacts.size() == 6 );
         log.info( "artifacts for commons-logging size {} search {}", artifacts.size(), artifacts );
-
-        deleteTestRepo( testRepoId );
     }
 
     /**
@@ -78,16 +68,6 @@ public class SearchServiceTest
     public void quickSearchOnArtifactIdGuest()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
-
         SearchService searchService = getSearchService( null );
 
         // START SNIPPET: quick-search
@@ -100,24 +80,12 @@ public class SearchServiceTest
         assertTrue( " not 6 results for commons-logging search but " + artifacts.size() + ":" + artifacts,
                     artifacts.size() == 6 );
         log.info( "artifacts for commons-logging size {} search {}", artifacts.size(), artifacts );
-
-        deleteTestRepo( testRepoId );
     }
 
     @Test
     public void searchArtifactVersions()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
-
         // START SNIPPET: searchservice-artifact-versions
         SearchService searchService = getSearchService( authorizationHeader );
 
@@ -138,24 +106,12 @@ public class SearchServiceTest
 
 
         }
-
-        deleteTestRepo( testRepoId );
     }
 
     @Test
     public void searchWithSearchRequestGroupIdAndArtifactIdAndClassifier()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
-
         SearchService searchService = getSearchService( authorizationHeader );
 
         // START SNIPPET: searchservice-with-classifier
@@ -171,24 +127,12 @@ public class SearchServiceTest
         assertTrue( " not 2 results for commons-logging search but " + artifacts.size() + ":" + artifacts,
                     artifacts.size() == 2 );
         log.info( "artifacts for commons-logging size {} search {}", artifacts.size(), artifacts );
-
-        deleteTestRepo( testRepoId );
     }
 
     @Test
     public void searchWithSearchRequestBundleSymbolicNameOneVersion()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
-
         SearchService searchService = getSearchService( authorizationHeader );
 
         // START SNIPPET: searchservice-with-osgi
@@ -203,25 +147,15 @@ public class SearchServiceTest
             " not 1 results for Bundle Symbolic Name org.apache.karaf.features.command but " + artifacts.size() + ":"
                 + artifacts, artifacts.size() == 1
         );
-
-        deleteTestRepo( testRepoId );
     }
 
     @Test
     public void searchWithSearchRequestBundleSymbolicNameTwoVersion()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
         UiConfiguration uiConfiguration = new UiConfiguration();
         uiConfiguration.setApplicationUrl( null );
         getArchivaAdministrationService().setUiConfiguration( uiConfiguration );
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
 
         SearchService searchService = getSearchService( authorizationHeader );
 
@@ -243,29 +177,17 @@ public class SearchServiceTest
 
 
         }
-
-        deleteTestRepo( testRepoId );
     }
 
     @Test
     public void searchWithSearchRequestExportPackageOneVersion()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, getBasedir() + "/src/test/repo-with-osgi" );
-
         SearchService searchService = getSearchService( authorizationHeader );
 
         SearchRequest searchRequest = new SearchRequest();
         searchRequest.setBundleExportPackage( "org.apache.karaf.features.command.completers" );
-        searchRequest.setRepositories( Arrays.asList( testRepoId ) );
+        searchRequest.setRepositories( Arrays.asList( TEST_REPO ) );
 
         List<Artifact> artifacts = searchService.searchArtifacts( searchRequest );
 
@@ -274,7 +196,6 @@ public class SearchServiceTest
                         + artifacts.size() + ":" + artifacts, artifacts.size() == 1 );
 
         log.info( "artifact url {}", artifacts.get( 0 ).getUrl() );
-        deleteTestRepo( testRepoId );
     }
 
     @Test
@@ -284,16 +205,6 @@ public class SearchServiceTest
     public void searchWithSearchUnknwownRepoId()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
-
         SearchService searchService = getSearchService( authorizationHeader );
 
         SearchRequest searchRequest = new SearchRequest();
@@ -303,10 +214,8 @@ public class SearchServiceTest
         List<Artifact> artifacts = searchService.searchArtifacts( searchRequest );
 
         assertNotNull( artifacts );
-        assertTrue( " not 0 results for Bundle ExportPackage org.apache.karaf.features.command.completers but "
-                        + artifacts.size() + ":" + artifacts, artifacts.size() == 0 );
-
-        deleteTestRepo( testRepoId );
+        assertTrue( " not 0 results for Bundle ExportPackage org.apache.karaf.features.command.completers but " +
+                        artifacts.size() + ":" + artifacts, artifacts.size() == 0 );
     }
 
     @Test
@@ -316,16 +225,6 @@ public class SearchServiceTest
     public void searchWithSearchNoRepos()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
-
         SearchService searchService = getSearchService( authorizationHeader );
 
         SearchRequest searchRequest = new SearchRequest();
@@ -338,31 +237,19 @@ public class SearchServiceTest
                         + artifacts.size() + ":" + artifacts, artifacts.size() == 1 );
 
         log.info( "artifact url {}", artifacts.get( 0 ).getUrl() );
-        deleteTestRepo( testRepoId );
     }
 
     @Test
     public void getAllGroupIds()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
-        // force guest user creation if not exists
-        if ( getUserService( authorizationHeader ).getGuestUser() == null )
-        {
-            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
-        }
-
-        createAndIndexRepo( testRepoId, "src/test/repo-with-osgi" );
-
         SearchService searchService = getSearchService( authorizationHeader );
 
-        Collection<String> groupIds = searchService.getAllGroupIds( Arrays.asList( testRepoId ) ).getGroupIds();
+        Collection<String> groupIds = searchService.getAllGroupIds( Arrays.asList( TEST_REPO ) ).getGroupIds();
         log.info( "groupIds  {}", groupIds );
         assertFalse( groupIds.isEmpty() );
         assertTrue( groupIds.contains( "commons-cli" ) );
         assertTrue( groupIds.contains( "org.apache.felix" ) );
-        deleteTestRepo( testRepoId );
     }
 
     @Test
@@ -372,25 +259,44 @@ public class SearchServiceTest
     public void getSearchArtifactsWithOnlyClassifier()
         throws Exception
     {
-
-        String testRepoId = "test-repo";
         // force guest user creation if not exists
         if ( getUserService( authorizationHeader ).getGuestUser() == null )
         {
             assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
         }
 
-        createAndIndexRepo( testRepoId, "src/test/repo-with-classifier-only" );
+        createAndIndexRepo( TEST_REPO, "src/test/repo-with-classifier-only" );
 
         SearchService searchService = getSearchService( authorizationHeader );
 
         SearchRequest searchRequest =
-            new SearchRequest( "org.foo", "studio-all-update-site", null, null, null, Arrays.asList( "test-repo" ) );
+            new SearchRequest( "org.foo", "studio-all-update-site", null, null, null, Arrays.asList( TEST_REPO ) );
 
         List<Artifact> artifacts = searchService.searchArtifacts( searchRequest );
         log.info( "artifacts: {}", artifacts );
         assertEquals( 1, artifacts.size() );
-        deleteTestRepo( testRepoId );
+    }
+
+    @Before
+    public void createRepo()
+        throws Exception
+    {
+        // force guest user creation if not exists
+        if ( getUserService( authorizationHeader ).getGuestUser() == null )
+        {
+            assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
+        }
+
+        createAndIndexRepo( TEST_REPO, "src/test/repo-with-osgi" );
+
+        waitForScanToComplete( TEST_REPO );
+    }
+
+    @After
+    public void deleteRepo()
+        throws Exception
+    {
+        deleteTestRepo( TEST_REPO );
     }
 
 }