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 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
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
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
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 }