View Javadoc
1   package org.apache.archiva.scheduler.repository;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import junit.framework.TestCase;
23  import org.apache.archiva.configuration.ArchivaConfiguration;
24  import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
25  import org.apache.archiva.metadata.repository.MetadataRepository;
26  import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
27  import org.apache.archiva.mock.MockRepositorySessionFactory;
28  import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutor;
29  import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
30  import org.codehaus.plexus.util.FileUtils;
31  import org.junit.After;
32  import org.junit.Before;
33  import org.junit.runner.RunWith;
34  import org.springframework.test.annotation.DirtiesContext;
35  import org.springframework.test.context.ContextConfiguration;
36  
37  import javax.inject.Inject;
38  import javax.inject.Named;
39  import java.io.File;
40  import java.util.Calendar;
41  import java.util.List;
42  
43  import static org.mockito.Mockito.mock;
44  
45  /**
46   * ArchivaRepositoryScanningTaskExecutorPhase1Test
47   */
48  @RunWith( ArchivaSpringJUnit4ClassRunner.class )
49  @ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
50  @DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD )
51  public abstract class ArchivaRepositoryScanningTaskExecutorAbstractTest
52      extends TestCase
53  {
54      @Inject
55      @Named( value = "taskExecutor#test-repository-scanning" )
56      protected TaskExecutor taskExecutor;
57  
58      @Inject
59      @Named( value = "archivaConfiguration#test-repository-scanning" )
60      protected ArchivaConfiguration archivaConfig;
61  
62      @Inject
63      @Named( value = "repositoryStatisticsManager#test" )
64      protected RepositoryStatisticsManager repositoryStatisticsManager;
65  
66      @Inject
67      @Named( value = "knownRepositoryContentConsumer#test-consumer" )
68      protected TestConsumer testConsumer;
69  
70      @Inject
71      @Named( value = "repositorySessionFactory#mock" )
72      private MockRepositorySessionFactory factory;
73  
74      protected File repoDir;
75  
76      protected static final String TEST_REPO_ID = "testRepo";
77  
78      protected MetadataRepository metadataRepository;
79  
80      @Before
81      @Override
82      public void setUp()
83          throws Exception
84      {
85          super.setUp();
86  
87          File sourceRepoDir = new File( "./src/test/repositories/default-repository" );
88          repoDir = new File( "./target/default-repository" );
89  
90          FileUtils.deleteDirectory( repoDir );
91          assertFalse( "Default Test Repository should not exist.", repoDir.exists() );
92  
93          repoDir.mkdir();
94  
95          FileUtils.copyDirectoryStructure( sourceRepoDir, repoDir );
96          // set the timestamps to a time well in the past
97          Calendar cal = Calendar.getInstance();
98          cal.add( Calendar.YEAR, -1 );
99          for ( File f : (List<File>) FileUtils.getFiles( repoDir, "**", null ) )
100         {
101             f.setLastModified( cal.getTimeInMillis() );
102         }
103         // TODO: test they are excluded instead
104         for ( String dir : (List<String>) FileUtils.getDirectoryNames( repoDir, "**/.svn", null, false ) )
105         {
106             FileUtils.deleteDirectory( new File( repoDir, dir ) );
107         }
108 
109         assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() );
110 
111         assertNotNull( archivaConfig );
112 
113         // Create it
114         ManagedRepositoryConfiguration repositoryConfiguration = new ManagedRepositoryConfiguration();
115         repositoryConfiguration.setId( TEST_REPO_ID );
116         repositoryConfiguration.setName( "Test Repository" );
117         repositoryConfiguration.setLocation( repoDir.getAbsolutePath() );
118         archivaConfig.getConfiguration().getManagedRepositories().clear();
119         archivaConfig.getConfiguration().addManagedRepository( repositoryConfiguration );
120 
121         metadataRepository = mock( MetadataRepository.class );
122 
123         factory.setRepository( metadataRepository );
124     }
125 
126     @After
127     @Override
128     public void tearDown()
129         throws Exception
130     {
131         FileUtils.deleteDirectory( repoDir );
132 
133         assertFalse( repoDir.exists() );
134 
135         super.tearDown();
136     }
137 
138 }