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