View Javadoc

1   package org.apache.continuum.purge;
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 org.apache.continuum.dao.DirectoryPurgeConfigurationDao;
23  import org.apache.continuum.dao.DistributedDirectoryPurgeConfigurationDao;
24  import org.apache.continuum.dao.LocalRepositoryDao;
25  import org.apache.continuum.dao.RepositoryPurgeConfigurationDao;
26  import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
27  import org.apache.continuum.model.repository.LocalRepository;
28  import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
29  import org.apache.maven.continuum.jdo.MemoryJdoFactory;
30  import org.codehaus.plexus.jdo.JdoFactory;
31  import org.codehaus.plexus.spring.PlexusInSpringTestCase;
32  import org.jpox.SchemaTool;
33  
34  import java.io.File;
35  import java.net.URL;
36  import java.util.Map;
37  import java.util.Properties;
38  import javax.jdo.PersistenceManager;
39  import javax.jdo.PersistenceManagerFactory;
40  
41  /**
42   * @author Maria Catherine Tan
43   */
44  public abstract class AbstractPurgeTest
45      extends PlexusInSpringTestCase
46  {
47      private static final String TEST_DEFAULT_REPO_DIR = "target/default-repository";
48  
49      private static final String TEST_DEFAULT_REPO_NAME = "defaultRepo";
50  
51      private static final String TEST_DEFAULT_RELEASES_DIR = "target/working-directory";
52  
53      private static final String TEST_DEFAULT_BUILDOUTPUT_DIR = "target/build-output-directory";
54  
55      protected static final String TEST_BUILD_AGENT_URL = "http://localhost:8181/continuum-buildagent/xmlrpc";
56  
57      protected static final int TEST_DAYS_OLDER = 30;
58  
59      protected static final int TEST_RETENTION_COUNT = 2;
60  
61      protected static final String TEST_RELEASES_DIRECTORY_TYPE = "releases";
62  
63      protected static final String TEST_BUILDOUTPUT_DIRECTORY_TYPE = "buildOutput";
64  
65      protected static final String TEST_WORKING_DIRECTORY_TYPE = "working";
66  
67      protected LocalRepositoryDao localRepositoryDao;
68  
69      protected DirectoryPurgeConfigurationDao directoryPurgeConfigurationDao;
70  
71      protected RepositoryPurgeConfigurationDao repositoryPurgeConfigurationDao;
72  
73      protected DistributedDirectoryPurgeConfigurationDao distributedDirectoryPurgeConfigurationDao;
74  
75      protected RepositoryPurgeConfiguration defaultRepoPurge;
76  
77      protected DirectoryPurgeConfiguration defaultReleasesDirPurge;
78  
79      protected DirectoryPurgeConfiguration defaultBuildOutputDirPurge;
80  
81      protected LocalRepository defaultRepository;
82  
83      @Override
84      protected void setUp()
85          throws Exception
86      {
87          super.setUp();
88  
89          init();
90  
91          localRepositoryDao = (LocalRepositoryDao) lookup( LocalRepositoryDao.class.getName() );
92  
93          repositoryPurgeConfigurationDao = (RepositoryPurgeConfigurationDao) lookup(
94              RepositoryPurgeConfigurationDao.class );
95  
96          directoryPurgeConfigurationDao = (DirectoryPurgeConfigurationDao) lookup(
97              DirectoryPurgeConfigurationDao.class );
98  
99          distributedDirectoryPurgeConfigurationDao = (DistributedDirectoryPurgeConfigurationDao) lookup(
100             DistributedDirectoryPurgeConfigurationDao.class );
101 
102         if ( localRepositoryDao.getAllLocalRepositories().size() == 0 )
103         {
104             createDefaultRepository();
105             assertEquals( "check # repository", 1, localRepositoryDao.getAllLocalRepositories().size() );
106             createDefaultRepoPurgeConfiguration();
107         }
108         else
109         {
110             assertEquals( "check # repository", 1, localRepositoryDao.getAllLocalRepositories().size() );
111             defaultRepository = localRepositoryDao.getLocalRepositoryByName( TEST_DEFAULT_REPO_NAME );
112             defaultRepoPurge = repositoryPurgeConfigurationDao.getRepositoryPurgeConfigurationsByLocalRepository(
113                 defaultRepository.getId() ).get( 0 );
114         }
115 
116         if ( directoryPurgeConfigurationDao.getDirectoryPurgeConfigurationsByType(
117             TEST_RELEASES_DIRECTORY_TYPE ).size() == 0 )
118         {
119             createDefaultReleasesDirPurgeConfiguration();
120         }
121         else
122         {
123             defaultReleasesDirPurge = directoryPurgeConfigurationDao.getDirectoryPurgeConfigurationsByType(
124                 TEST_RELEASES_DIRECTORY_TYPE ).get( 0 );
125         }
126 
127         if ( directoryPurgeConfigurationDao.getDirectoryPurgeConfigurationsByType(
128             TEST_BUILDOUTPUT_DIRECTORY_TYPE ).size() == 0 )
129         {
130             createDefaultBuildOutputDirPurgeConfiguration();
131         }
132         else
133         {
134             defaultBuildOutputDirPurge = directoryPurgeConfigurationDao.getDirectoryPurgeConfigurationsByType(
135                 TEST_BUILDOUTPUT_DIRECTORY_TYPE ).get( 0 );
136         }
137     }
138 
139     protected void init()
140         throws Exception
141     {
142         // ----------------------------------------------------------------------
143         // Set up the JDO factory
144         // ----------------------------------------------------------------------
145 
146         Object o = lookup( JdoFactory.ROLE, "continuum" );
147 
148         assertEquals( MemoryJdoFactory.class.getName(), o.getClass().getName() );
149 
150         MemoryJdoFactory jdoFactory = (MemoryJdoFactory) o;
151 
152         String url = "jdbc:hsqldb:mem:" + getClass().getName() + "." + getName();
153 
154         jdoFactory.setUrl( url );
155 
156         jdoFactory.reconfigure();
157 
158         // ----------------------------------------------------------------------
159         // Check the configuration
160         // ----------------------------------------------------------------------
161 
162         PersistenceManagerFactory pmf = jdoFactory.getPersistenceManagerFactory();
163 
164         assertNotNull( pmf );
165 
166         assertEquals( url, pmf.getConnectionURL() );
167 
168         PersistenceManager pm = pmf.getPersistenceManager();
169 
170         pm.close();
171 
172         // ----------------------------------------------------------------------
173         //
174         // ----------------------------------------------------------------------
175 
176         Properties properties = jdoFactory.getProperties();
177 
178         for ( Map.Entry entry : properties.entrySet() )
179         {
180             System.setProperty( (String) entry.getKey(), (String) entry.getValue() );
181         }
182 
183         SchemaTool.createSchemaTables( new URL[]{getClass().getResource( "/package.jdo" )}, new URL[]{}, null, false,
184                                        null );
185     }
186 
187     protected File getDefaultRepositoryLocation()
188     {
189         File repositoryLocation = getTestFile( TEST_DEFAULT_REPO_DIR );
190 
191         if ( !repositoryLocation.exists() )
192         {
193             repositoryLocation.mkdirs();
194         }
195 
196         return repositoryLocation;
197     }
198 
199     protected File getReleasesDirectoryLocation()
200     {
201         File releasesDirectory = getTestFile( TEST_DEFAULT_RELEASES_DIR );
202 
203         if ( !releasesDirectory.exists() )
204         {
205             releasesDirectory.mkdirs();
206         }
207 
208         return releasesDirectory;
209     }
210 
211     protected File getBuildOutputDirectoryLocation()
212     {
213         File buildOutputDir = getTestFile( TEST_DEFAULT_BUILDOUTPUT_DIR );
214 
215         if ( !buildOutputDir.exists() )
216         {
217             buildOutputDir.mkdirs();
218         }
219 
220         return buildOutputDir;
221     }
222 
223     private void createDefaultRepository()
224         throws Exception
225     {
226         defaultRepository = localRepositoryDao.getLocalRepositoryByName( TEST_DEFAULT_REPO_NAME );
227 
228         if ( defaultRepository == null )
229         {
230             LocalRepository repository = new LocalRepository();
231 
232             repository.setName( TEST_DEFAULT_REPO_NAME );
233             repository.setLocation( getDefaultRepositoryLocation().getAbsolutePath() );
234             defaultRepository = localRepositoryDao.addLocalRepository( repository );
235         }
236     }
237 
238     private void createDefaultRepoPurgeConfiguration()
239         throws Exception
240     {
241         RepositoryPurgeConfiguration repoPurge = new RepositoryPurgeConfiguration();
242 
243         repoPurge.setRepository( defaultRepository );
244         repoPurge.setDeleteAll( true );
245 
246         defaultRepoPurge = repositoryPurgeConfigurationDao.addRepositoryPurgeConfiguration( repoPurge );
247     }
248 
249     private void createDefaultReleasesDirPurgeConfiguration()
250         throws Exception
251     {
252         DirectoryPurgeConfiguration dirPurge = new DirectoryPurgeConfiguration();
253 
254         dirPurge.setLocation( getReleasesDirectoryLocation().getAbsolutePath() );
255         dirPurge.setDirectoryType( "releases" );
256         dirPurge.setDeleteAll( true );
257 
258         defaultReleasesDirPurge = directoryPurgeConfigurationDao.addDirectoryPurgeConfiguration( dirPurge );
259     }
260 
261     private void createDefaultBuildOutputDirPurgeConfiguration()
262         throws Exception
263     {
264         DirectoryPurgeConfiguration dirPurge = new DirectoryPurgeConfiguration();
265 
266         dirPurge.setLocation( getBuildOutputDirectoryLocation().getAbsolutePath() );
267         dirPurge.setDirectoryType( "buildOutput" );
268         dirPurge.setDeleteAll( true );
269 
270         defaultBuildOutputDirPurge = directoryPurgeConfigurationDao.addDirectoryPurgeConfiguration( dirPurge );
271     }
272 }