]> source.dussan.org Git - archiva.git/blob
f1998971d3a20f0730d73844a6145eb158538f3c
[archiva.git] /
1 package org.apache.maven.archiva.proxy;
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.maven.archiva.model.ArtifactReference;
23 import org.apache.maven.archiva.policies.CachedFailuresPolicy;
24 import org.apache.maven.archiva.policies.ChecksumPolicy;
25 import org.apache.maven.archiva.policies.ReleasesPolicy;
26 import org.apache.maven.archiva.policies.SnapshotsPolicy;
27 import org.junit.Test;
28
29 import java.io.File;
30
31 /**
32  * SnapshotTransferTest 
33  *
34  * @version $Id$
35  */
36 public class SnapshotTransferTest
37     extends AbstractProxyTestCase
38 {
39     @Test
40     public void testSnapshotNonExistant()
41         throws Exception
42     {
43         String path = "org/apache/maven/test/does-not-exist/1.0-SNAPSHOT/does-not-exist-1.0-SNAPSHOT.jar";
44         setupTestableManagedRepository( path );
45         
46         File expectedFile = new File( managedDefaultDir, path );
47         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
48
49         expectedFile.delete();
50         assertFalse( expectedFile.exists() );
51
52         // Configure Connector (usually done within archiva.xml configuration)
53         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false);
54
55         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
56         assertNotDownloaded( downloadedFile );
57         assertNoTempFiles( expectedFile );
58     }
59
60     @Test
61     public void testTimestampDrivenSnapshotNotPresentAlready()
62         throws Exception
63     {
64         String path = "org/apache/maven/test/get-timestamped-snapshot/1.0-SNAPSHOT/get-timestamped-snapshot-1.0-SNAPSHOT.jar";
65         setupTestableManagedRepository( path );
66         
67         File expectedFile = new File( managedDefaultDir, path );
68         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
69
70         expectedFile.delete();
71         assertFalse( expectedFile.exists() );
72
73         // Configure Connector (usually done within archiva.xml configuration)
74         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false);
75
76         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
77
78         File proxiedFile = new File( REPOPATH_PROXIED1, path );
79         assertFileEquals( expectedFile, downloadedFile, proxiedFile );
80         assertNoTempFiles( expectedFile );
81     }
82
83     @Test
84     public void testNewerTimestampDrivenSnapshotOnFirstRepo()
85         throws Exception
86     {
87         String path = "org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar";
88         setupTestableManagedRepository( path );
89         
90         File expectedFile = new File( managedDefaultDir, path );
91         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
92
93         assertTrue( expectedFile.exists() );
94         expectedFile.setLastModified( getPastDate().getTime() );
95
96         // Configure Connector (usually done within archiva.xml configuration)
97         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false);
98
99         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
100
101         File proxiedFile = new File( REPOPATH_PROXIED1, path );
102         assertFileEquals( expectedFile, downloadedFile, proxiedFile );
103         assertNoTempFiles( expectedFile );
104     }
105
106     @Test
107     public void testOlderTimestampDrivenSnapshotOnFirstRepo()
108         throws Exception
109     {
110         String path = "org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar";
111         setupTestableManagedRepository( path );
112         
113         File expectedFile = new File( managedDefaultDir, path );
114         File remoteFile = new File( REPOPATH_PROXIED1, path );
115         
116         setManagedNewerThanRemote( expectedFile, remoteFile );
117         
118         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
119
120         // Configure Connector (usually done within archiva.xml configuration)
121         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false );
122
123         // Attempt to download.
124         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
125
126         // Should not have downloaded as managed is newer than remote.
127         assertNotDownloaded( downloadedFile );
128         assertNoTempFiles( expectedFile );
129     }
130
131     /**
132      * TODO: Has problems with wagon implementation not preserving timestamp.
133      */
134     /*
135     public void testNewerTimestampDrivenSnapshotOnSecondRepoThanFirstNotPresentAlready()
136         throws Exception
137     {
138         String path = "org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar";
139         setupTestableManagedRepository( path );
140         
141         File expectedFile = new File( managedDefaultDir, path );
142         ArtifactReference artifact = createArtifactReference( "default", path );
143
144         expectedFile.delete();
145         assertFalse( expectedFile.exists() );
146
147         // Create customized proxy / target repository
148         File targetProxyDir = saveTargetedRepositoryConfig( ID_PROXIED1_TARGET, REPOPATH_PROXIED1,
149                                                             REPOPATH_PROXIED1_TARGET, "default" );
150
151         new File( targetProxyDir, path ).setLastModified( getPastDate().getTime() );
152
153         // Configure Connector (usually done within archiva.xml configuration)
154         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1_TARGET, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
155                        SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
156         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
157                        SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
158
159         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
160
161         // Should have downloaded the content from proxy2, as proxy1 has an old (by file.lastModified check) version.
162         File proxiedFile = new File( REPOPATH_PROXIED2, path );
163         assertFileEquals( expectedFile, downloadedFile, proxiedFile );
164         assertNoTempFiles( expectedFile );
165     } 
166
167     public void testOlderTimestampDrivenSnapshotOnSecondRepoThanFirstNotPresentAlready()
168         throws Exception
169     {
170         String path = "org/apache/maven/test/get-timestamped-snapshot-in-both/1.0-SNAPSHOT/get-timestamped-snapshot-in-both-1.0-SNAPSHOT.jar";
171         setupTestableManagedRepository( path );
172         
173         File expectedFile = new File( managedDefaultDir, path );
174         ArtifactReference artifact = createArtifactReference( "default", path );
175
176         expectedFile.delete();
177         assertFalse( expectedFile.exists() );
178
179         // Create customized proxy / target repository
180         File targetProxyDir = saveTargetedRepositoryConfig( ID_PROXIED2_TARGET, REPOPATH_PROXIED2,
181                                                             REPOPATH_PROXIED2_TARGET, "default" );
182
183         new File( targetProxyDir, path ).setLastModified( getPastDate().getTime() );
184
185         // Configure Connector (usually done within archiva.xml configuration)
186         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
187                        SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
188         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2_TARGET, ChecksumPolicy.IGNORED, ReleasesPolicy.IGNORED,
189                        SnapshotsPolicy.IGNORED, CachedFailuresPolicy.IGNORED );
190
191         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
192
193         File proxiedFile = new File( REPOPATH_PROXIED1_TARGET, path );
194         assertFileEquals( expectedFile, downloadedFile, proxiedFile );
195         assertNoTempFiles( expectedFile );
196     } */
197
198     @Test
199     public void testTimestampDrivenSnapshotNotExpired()
200         throws Exception
201     {
202         String path = "org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar";
203         setupTestableManagedRepository( path );
204         
205         File expectedFile = new File( managedDefaultDir, path );
206         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
207
208         assertTrue( expectedFile.exists() );
209
210         File proxiedFile = new File( REPOPATH_PROXIED1, path );
211         proxiedFile.setLastModified( getFutureDate().getTime() );
212
213         // Configure Connector (usually done within archiva.xml configuration)
214         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false);
215
216         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
217
218         assertFileEquals( expectedFile, downloadedFile, proxiedFile );
219         assertNoTempFiles( expectedFile );
220     }
221
222     @Test
223     public void testTimestampDrivenSnapshotNotUpdated()
224         throws Exception
225     {
226         String path = "org/apache/maven/test/get-present-timestamped-snapshot/1.0-SNAPSHOT/get-present-timestamped-snapshot-1.0-SNAPSHOT.jar";
227         setupTestableManagedRepository( path );
228         
229         File expectedFile = new File( managedDefaultDir, path );
230         File remoteFile = new File( REPOPATH_PROXIED1, path );
231
232         setManagedNewerThanRemote( expectedFile, remoteFile, 12000000 );
233         long expectedTimestamp = expectedFile.lastModified(); 
234         
235         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
236
237         // Configure Connector (usually done within archiva.xml configuration)
238         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false);
239
240         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
241
242         assertNotDownloaded( downloadedFile );
243         assertNotModified( expectedFile, expectedTimestamp );
244         assertNoTempFiles( expectedFile );
245     }
246
247     @Test
248     public void testTimestampDrivenSnapshotNotPresentAlreadyExpiredCacheFailure()
249         throws Exception
250     {
251         String path = "org/apache/maven/test/get-timestamped-snapshot/1.0-SNAPSHOT/get-timestamped-snapshot-1.0-SNAPSHOT.jar";
252         setupTestableManagedRepository( path );
253         
254         File expectedFile = new File( managedDefaultDir, path );
255         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
256
257         expectedFile.delete();
258         assertFalse( expectedFile.exists() );
259
260         // Configure Connector (usually done within archiva.xml configuration)
261         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
262                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES , false);
263         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED2, ChecksumPolicy.IGNORE, ReleasesPolicy.ALWAYS,
264                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES , false);
265
266         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
267
268         File proxiedFile = new File( REPOPATH_PROXIED1, path );
269         assertFileEquals( expectedFile, downloadedFile, proxiedFile );
270         assertNoTempFiles( expectedFile );
271     }
272
273     @Test
274     public void testMetadataDrivenSnapshotNotPresentAlready()
275         throws Exception
276     {
277         String path = "org/apache/maven/test/get-metadata-snapshot/1.0-SNAPSHOT/get-metadata-snapshot-1.0-20050831.101112-1.jar";
278         setupTestableManagedRepository( path );
279         
280         File expectedFile = new File( managedDefaultDir, path );
281         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
282
283         expectedFile.delete();
284         assertFalse( expectedFile.exists() );
285
286         // Configure Connector (usually done within archiva.xml configuration)
287         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false);
288
289         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
290
291         File proxiedFile = new File( REPOPATH_PROXIED1, path );
292         assertFileEquals( expectedFile, downloadedFile, proxiedFile );
293         assertNoTempFiles( expectedFile );
294     }
295
296     @Test
297     public void testGetMetadataDrivenSnapshotRemoteUpdate()
298         throws Exception
299     {
300         // Metadata driven snapshots (using a full timestamp) are treated like a release. It is the timing of the
301         // updates to the metadata files that triggers which will be downloaded
302
303         String path = "org/apache/maven/test/get-present-metadata-snapshot/1.0-SNAPSHOT/get-present-metadata-snapshot-1.0-20050831.101112-1.jar";
304         setupTestableManagedRepository( path );
305         
306         File expectedFile = new File( managedDefaultDir, path );
307         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
308
309         assertTrue( expectedFile.exists() );
310
311         expectedFile.setLastModified( getPastDate().getTime() );
312
313         // Configure Connector (usually done within archiva.xml configuration)
314         saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, false);
315
316         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
317
318         File proxiedFile = new File( REPOPATH_PROXIED1, path );
319         assertFileEquals( expectedFile, downloadedFile, proxiedFile );
320         assertNoTempFiles( expectedFile );
321     }
322 }