]> source.dussan.org Git - archiva.git/blob
a5ce803135acb65cfc81e9b544831195f74f37a8
[archiva.git] /
1 package org.apache.archiva.metadata.repository.stats;
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.metadata.model.ArtifactMetadata;
24 import org.apache.archiva.metadata.repository.MetadataRepository;
25 import org.easymock.MockControl;
26
27 import java.text.ParseException;
28 import java.text.SimpleDateFormat;
29 import java.util.ArrayList;
30 import java.util.Arrays;
31 import java.util.Collections;
32 import java.util.Date;
33 import java.util.LinkedHashMap;
34 import java.util.List;
35 import java.util.Map;
36 import java.util.TimeZone;
37
38 public class RepositoryStatisticsManagerTest
39     extends TestCase
40 {
41     private DefaultRepositoryStatisticsManager repositoryStatisticsManager;
42
43     private static final String TEST_REPO_ID = "test-repo";
44
45     private MockControl metadataRepositoryControl;
46
47     private MetadataRepository metadataRepository;
48
49     private static final String FIRST_TEST_SCAN = "2009/12/01/123456.789";
50
51     private static final String SECOND_TEST_SCAN = "2009/12/02/012345.678";
52
53     private Map<String, RepositoryStatistics> statsCreated = new LinkedHashMap<String, RepositoryStatistics>();
54
55     private static final SimpleDateFormat TIMESTAMP_FORMAT = createTimestampFormat();
56
57     private static SimpleDateFormat createTimestampFormat()
58     {
59         SimpleDateFormat fmt = new SimpleDateFormat( RepositoryStatistics.SCAN_TIMESTAMP_FORMAT );
60         fmt.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
61         return fmt;
62     }
63
64     @Override
65     protected void setUp()
66         throws Exception
67     {
68         super.setUp();
69
70         repositoryStatisticsManager = new DefaultRepositoryStatisticsManager();
71
72         metadataRepositoryControl = MockControl.createControl( MetadataRepository.class );
73         metadataRepository = (MetadataRepository) metadataRepositoryControl.getMock();
74         repositoryStatisticsManager.setMetadataRepository( metadataRepository );
75     }
76
77     public void testGetLatestStats()
78         throws ParseException
79     {
80         Date startTime = TIMESTAMP_FORMAT.parse( SECOND_TEST_SCAN );
81         Date endTime = new Date( startTime.getTime() + 60000 );
82
83         RepositoryStatistics stats = new RepositoryStatistics();
84         stats.setScanStartTime( startTime );
85         stats.setScanEndTime( endTime );
86         stats.setTotalArtifactFileSize( 1314527915L );
87         stats.setNewFileCount( 123 );
88         stats.setTotalArtifactCount( 10386 );
89         stats.setTotalProjectCount( 2031 );
90         stats.setTotalGroupCount( 529 );
91         stats.setTotalFileCount( 56229 );
92
93         metadataRepositoryControl.expectAndReturn(
94             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
95             Arrays.asList( FIRST_TEST_SCAN, SECOND_TEST_SCAN ) );
96         metadataRepositoryControl.expectAndReturn(
97             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, SECOND_TEST_SCAN ),
98             stats );
99         metadataRepositoryControl.replay();
100
101         stats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
102         assertNotNull( stats );
103         assertEquals( 1314527915L, stats.getTotalArtifactFileSize() );
104         assertEquals( 123, stats.getNewFileCount() );
105         assertEquals( 10386, stats.getTotalArtifactCount() );
106         assertEquals( 2031, stats.getTotalProjectCount() );
107         assertEquals( 529, stats.getTotalGroupCount() );
108         assertEquals( 56229, stats.getTotalFileCount() );
109         assertEquals( SECOND_TEST_SCAN, TIMESTAMP_FORMAT.format( stats.getScanStartTime() ) );
110         assertEquals( SECOND_TEST_SCAN, stats.getName() );
111         assertEquals( endTime, stats.getScanEndTime() );
112
113         metadataRepositoryControl.verify();
114     }
115
116     public void testGetLatestStatsWhenEmpty()
117     {
118         metadataRepositoryControl.expectAndReturn(
119             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
120             Collections.emptyList() );
121         metadataRepositoryControl.replay();
122
123         RepositoryStatistics stats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
124         assertNull( stats );
125
126         metadataRepositoryControl.verify();
127     }
128
129     public void testAddNewStats()
130     {
131         Date current = new Date();
132         Date startTime = new Date( current.getTime() - 12345 );
133
134         RepositoryStatistics stats = createTestStats( startTime, current );
135
136         walkRepository( 1 );
137
138         metadataRepository.addMetadataFacet( TEST_REPO_ID, stats );
139         metadataRepositoryControl.expectAndReturn(
140             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
141             Arrays.asList( stats.getName() ) );
142         metadataRepositoryControl.expectAndReturn(
143             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, stats.getName() ),
144             stats );
145
146         metadataRepositoryControl.replay();
147
148         repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, startTime, current, 56345, 45 );
149
150         stats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
151         assertNotNull( stats );
152         assertEquals( 246900, stats.getTotalArtifactFileSize() );
153         assertEquals( 45, stats.getNewFileCount() );
154         assertEquals( 20, stats.getTotalArtifactCount() );
155         assertEquals( 5, stats.getTotalProjectCount() );
156         assertEquals( 4, stats.getTotalGroupCount() );
157         assertEquals( 56345, stats.getTotalFileCount() );
158         assertEquals( current.getTime() - 12345, stats.getScanStartTime().getTime() );
159         assertEquals( current, stats.getScanEndTime() );
160
161         metadataRepositoryControl.verify();
162     }
163
164     public void testDeleteStats()
165     {
166         walkRepository( 2 );
167
168         Date current = new Date();
169
170         Date startTime1 = new Date( current.getTime() - 12345 );
171         RepositoryStatistics stats1 = createTestStats( startTime1, new Date( current.getTime() - 6000 ) );
172         metadataRepository.addMetadataFacet( TEST_REPO_ID, stats1 );
173
174         Date startTime2 = new Date( current.getTime() - 3000 );
175         RepositoryStatistics stats2 = createTestStats( startTime2, current );
176         metadataRepository.addMetadataFacet( TEST_REPO_ID, stats2 );
177
178         metadataRepositoryControl.expectAndReturn(
179             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
180             Arrays.asList( stats1.getName(), stats2.getName() ) );
181         metadataRepositoryControl.expectAndReturn(
182             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, stats2.getName() ),
183             stats2 );
184
185         metadataRepository.removeMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID );
186
187         metadataRepositoryControl.expectAndReturn(
188             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
189             Collections.emptyList() );
190
191         metadataRepositoryControl.replay();
192
193         repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, startTime1, stats1.getScanEndTime(), 56345,
194                                                             45 );
195         repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, startTime2, stats2.getScanEndTime(), 56345,
196                                                             45 );
197
198         assertNotNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
199
200         repositoryStatisticsManager.deleteStatistics( TEST_REPO_ID );
201
202         assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
203
204         metadataRepositoryControl.verify();
205     }
206
207     public void testDeleteStatsWhenEmpty()
208     {
209         metadataRepositoryControl.expectAndReturn(
210             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
211             Collections.emptyList(), 2 );
212         metadataRepository.removeMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID );
213
214         metadataRepositoryControl.replay();
215
216         assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
217
218         repositoryStatisticsManager.deleteStatistics( TEST_REPO_ID );
219
220         assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
221
222         metadataRepositoryControl.verify();
223     }
224
225     public void testGetStatsRangeInside()
226     {
227         walkRepository( 3 );
228
229         Date current = new Date();
230
231         addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
232         addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
233         addStats( new Date( current.getTime() - 1000 ), current );
234
235         ArrayList<String> keys = new ArrayList<String>( statsCreated.keySet() );
236         metadataRepositoryControl.expectAndReturn(
237             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ), keys );
238
239         // only match the middle one
240         String key = keys.get( 1 );
241         metadataRepositoryControl.expectAndReturn(
242             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, key ),
243             statsCreated.get( key ) );
244
245         metadataRepositoryControl.replay();
246
247         for ( RepositoryStatistics stats : statsCreated.values() )
248         {
249             repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, stats.getScanStartTime(),
250                                                                 stats.getScanEndTime(), 56345, 45 );
251         }
252
253         List<RepositoryStatistics> list =
254             repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID, new Date( current.getTime() - 4000 ),
255                                                               new Date( current.getTime() - 2000 ) );
256
257         assertEquals( 1, list.size() );
258         assertEquals( new Date( current.getTime() - 3000 ), list.get( 0 ).getScanStartTime() );
259
260         metadataRepositoryControl.verify();
261     }
262
263     public void testGetStatsRangeUpperOutside()
264     {
265         walkRepository( 3 );
266
267         Date current = new Date();
268
269         addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
270         addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
271         addStats( new Date( current.getTime() - 1000 ), current );
272
273         ArrayList<String> keys = new ArrayList<String>( statsCreated.keySet() );
274         metadataRepositoryControl.expectAndReturn(
275             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ), keys );
276
277         String key = keys.get( 1 );
278         metadataRepositoryControl.expectAndReturn(
279             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, key ),
280             statsCreated.get( key ) );
281         key = keys.get( 2 );
282         metadataRepositoryControl.expectAndReturn(
283             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, key ),
284             statsCreated.get( key ) );
285
286         metadataRepositoryControl.replay();
287
288         for ( RepositoryStatistics stats : statsCreated.values() )
289         {
290             repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, stats.getScanStartTime(),
291                                                                 stats.getScanEndTime(), 56345, 45 );
292         }
293
294         List<RepositoryStatistics> list =
295             repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID, new Date( current.getTime() - 4000 ),
296                                                               current );
297
298         assertEquals( 2, list.size() );
299         assertEquals( new Date( current.getTime() - 3000 ), list.get( 1 ).getScanStartTime() );
300         assertEquals( new Date( current.getTime() - 1000 ), list.get( 0 ).getScanStartTime() );
301
302         metadataRepositoryControl.verify();
303     }
304
305     public void testGetStatsRangeLowerOutside()
306     {
307         walkRepository( 3 );
308
309         Date current = new Date();
310
311         addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
312         addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
313         addStats( new Date( current.getTime() - 1000 ), current );
314
315         ArrayList<String> keys = new ArrayList<String>( statsCreated.keySet() );
316         metadataRepositoryControl.expectAndReturn(
317             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ), keys );
318
319         String key = keys.get( 0 );
320         metadataRepositoryControl.expectAndReturn(
321             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, key ),
322             statsCreated.get( key ) );
323         key = keys.get( 1 );
324         metadataRepositoryControl.expectAndReturn(
325             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, key ),
326             statsCreated.get( key ) );
327
328         metadataRepositoryControl.replay();
329
330         for ( RepositoryStatistics stats : statsCreated.values() )
331         {
332             repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, stats.getScanStartTime(),
333                                                                 stats.getScanEndTime(), 56345, 45 );
334         }
335
336         List<RepositoryStatistics> list =
337             repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID, new Date( current.getTime() - 20000 ),
338                                                               new Date( current.getTime() - 2000 ) );
339
340         assertEquals( 2, list.size() );
341         assertEquals( new Date( current.getTime() - 12345 ), list.get( 1 ).getScanStartTime() );
342         assertEquals( new Date( current.getTime() - 3000 ), list.get( 0 ).getScanStartTime() );
343
344         metadataRepositoryControl.verify();
345     }
346
347     public void testGetStatsRangeLowerAndUpperOutside()
348     {
349         walkRepository( 3 );
350
351         Date current = new Date();
352
353         addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
354         addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
355         addStats( new Date( current.getTime() - 1000 ), current );
356
357         ArrayList<String> keys = new ArrayList<String>( statsCreated.keySet() );
358         metadataRepositoryControl.expectAndReturn(
359             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ), keys );
360
361         String key = keys.get( 0 );
362         metadataRepositoryControl.expectAndReturn(
363             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, key ),
364             statsCreated.get( key ) );
365         key = keys.get( 1 );
366         metadataRepositoryControl.expectAndReturn(
367             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, key ),
368             statsCreated.get( key ) );
369         key = keys.get( 2 );
370         metadataRepositoryControl.expectAndReturn(
371             metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, key ),
372             statsCreated.get( key ) );
373
374         metadataRepositoryControl.replay();
375
376         for ( RepositoryStatistics stats : statsCreated.values() )
377         {
378             repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, stats.getScanStartTime(),
379                                                                 stats.getScanEndTime(), 56345, 45 );
380         }
381
382         List<RepositoryStatistics> list =
383             repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID, new Date( current.getTime() - 20000 ),
384                                                               current );
385
386         assertEquals( 3, list.size() );
387         assertEquals( new Date( current.getTime() - 12345 ), list.get( 2 ).getScanStartTime() );
388         assertEquals( new Date( current.getTime() - 3000 ), list.get( 1 ).getScanStartTime() );
389         assertEquals( new Date( current.getTime() - 1000 ), list.get( 0 ).getScanStartTime() );
390
391         metadataRepositoryControl.verify();
392     }
393
394     public void testGetStatsRangeNotInside()
395     {
396         walkRepository( 3 );
397
398         Date current = new Date();
399
400         addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
401         addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
402         addStats( new Date( current.getTime() - 1000 ), current );
403
404         ArrayList<String> keys = new ArrayList<String>( statsCreated.keySet() );
405         metadataRepositoryControl.expectAndReturn(
406             metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ), keys );
407
408         metadataRepositoryControl.replay();
409
410         for ( RepositoryStatistics stats : statsCreated.values() )
411         {
412             repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, stats.getScanStartTime(),
413                                                                 stats.getScanEndTime(), 56345, 45 );
414         }
415
416         List<RepositoryStatistics> list =
417             repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID, new Date( current.getTime() - 20000 ),
418                                                               new Date( current.getTime() - 16000 ) );
419
420         assertEquals( 0, list.size() );
421
422         metadataRepositoryControl.verify();
423     }
424
425     private void addStats( Date startTime, Date endTime )
426     {
427         RepositoryStatistics stats = createTestStats( startTime, endTime );
428         metadataRepository.addMetadataFacet( TEST_REPO_ID, stats );
429         statsCreated.put( stats.getName(), stats );
430     }
431
432     private ArtifactMetadata createArtifact( String namespace, String projectId, String projectVersion, String type )
433     {
434         ArtifactMetadata metadata = new ArtifactMetadata();
435         metadata.setRepositoryId( TEST_REPO_ID );
436         metadata.setId( projectId + "-" + projectVersion + "." + type );
437         metadata.setProject( projectId );
438         metadata.setSize( 12345L );
439         metadata.setVersion( projectVersion );
440         metadata.setNamespace( namespace );
441         return metadata;
442     }
443
444     private RepositoryStatistics createTestStats( Date startTime, Date endTime )
445     {
446         RepositoryStatistics stats = new RepositoryStatistics();
447         stats.setScanStartTime( startTime );
448         stats.setScanEndTime( endTime );
449         stats.setTotalArtifactFileSize( 20 * 12345L );
450         stats.setNewFileCount( 45 );
451         stats.setTotalArtifactCount( 20 );
452         stats.setTotalProjectCount( 5 );
453         stats.setTotalGroupCount( 4 );
454         stats.setTotalFileCount( 56345 );
455         stats.setTotalCountForType( "jar", 10 );
456         stats.setTotalCountForType( "pom", 10 );
457         return stats;
458     }
459
460     private void walkRepository( int count )
461     {
462         for ( int i = 0; i < count; i++ )
463         {
464             metadataRepositoryControl.expectAndReturn( metadataRepository.getRootNamespaces( TEST_REPO_ID ),
465                                                        Arrays.asList( "com", "org" ) );
466             metadataRepositoryControl.expectAndReturn( metadataRepository.getProjects( TEST_REPO_ID, "com" ),
467                                                        Arrays.asList() );
468             metadataRepositoryControl.expectAndReturn( metadataRepository.getNamespaces( TEST_REPO_ID, "com" ),
469                                                        Arrays.asList( "example" ) );
470             metadataRepositoryControl.expectAndReturn( metadataRepository.getNamespaces( TEST_REPO_ID, "com.example" ),
471                                                        Arrays.asList() );
472             metadataRepositoryControl.expectAndReturn( metadataRepository.getProjects( TEST_REPO_ID, "com.example" ),
473                                                        Arrays.asList( "example-project" ) );
474             metadataRepositoryControl.expectAndReturn(
475                 metadataRepository.getProjectVersions( TEST_REPO_ID, "com.example", "example-project" ),
476                 Arrays.asList( "1.0", "1.1" ) );
477             metadataRepositoryControl.expectAndReturn(
478                 metadataRepository.getArtifacts( TEST_REPO_ID, "com.example", "example-project", "1.0" ),
479                 Arrays.asList( createArtifact( "com.example", "example-project", "1.0", "jar" ),
480                                createArtifact( "com.example", "example-project", "1.0", "pom" ) ) );
481             metadataRepositoryControl.expectAndReturn(
482                 metadataRepository.getArtifacts( TEST_REPO_ID, "com.example", "example-project", "1.1" ),
483                 Arrays.asList( createArtifact( "com.example", "example-project", "1.1", "jar" ),
484                                createArtifact( "com.example", "example-project", "1.1", "pom" ) ) );
485             metadataRepositoryControl.expectAndReturn( metadataRepository.getNamespaces( TEST_REPO_ID, "org" ),
486                                                        Arrays.asList( "apache", "codehaus" ) );
487             metadataRepositoryControl.expectAndReturn( metadataRepository.getNamespaces( TEST_REPO_ID, "org.apache" ),
488                                                        Arrays.asList( "archiva", "maven" ) );
489             metadataRepositoryControl.expectAndReturn( metadataRepository.getProjects( TEST_REPO_ID, "org.apache" ),
490                                                        Arrays.asList() );
491             metadataRepositoryControl.expectAndReturn(
492                 metadataRepository.getNamespaces( TEST_REPO_ID, "org.apache.archiva" ), Arrays.asList() );
493             metadataRepositoryControl.expectAndReturn(
494                 metadataRepository.getProjects( TEST_REPO_ID, "org.apache.archiva" ),
495                 Arrays.asList( "metadata-repository-api", "metadata-model" ) );
496             metadataRepositoryControl.expectAndReturn(
497                 metadataRepository.getProjectVersions( TEST_REPO_ID, "org.apache.archiva", "metadata-repository-api" ),
498                 Arrays.asList( "1.3-SNAPSHOT", "1.3" ) );
499             metadataRepositoryControl.expectAndReturn(
500                 metadataRepository.getArtifacts( TEST_REPO_ID, "org.apache.archiva", "metadata-repository-api",
501                                                  "1.3-SNAPSHOT" ),
502                 Arrays.asList( createArtifact( "org.apache.archiva", "metadata-repository-api", "1.3-SNAPSHOT", "jar" ),
503                                createArtifact( "org.apache.archiva", "metadata-repository-api", "1.3-SNAPSHOT",
504                                                "pom" ) ) );
505             metadataRepositoryControl.expectAndReturn(
506                 metadataRepository.getArtifacts( TEST_REPO_ID, "org.apache.archiva", "metadata-repository-api", "1.3" ),
507                 Arrays.asList( createArtifact( "org.apache.archiva", "metadata-repository-api", "1.3", "jar" ),
508                                createArtifact( "org.apache.archiva", "metadata-repository-api", "1.3", "pom" ) ) );
509             metadataRepositoryControl.expectAndReturn(
510                 metadataRepository.getProjectVersions( TEST_REPO_ID, "org.apache.archiva", "metadata-model" ),
511                 Arrays.asList( "1.3-SNAPSHOT", "1.3" ) );
512             metadataRepositoryControl.expectAndReturn(
513                 metadataRepository.getArtifacts( TEST_REPO_ID, "org.apache.archiva", "metadata-model", "1.3-SNAPSHOT" ),
514                 Arrays.asList( createArtifact( "org.apache.archiva", "metadata-model", "1.3-SNAPSHOT", "jar" ),
515                                createArtifact( "org.apache.archiva", "metadata-model", "1.3-SNAPSHOT", "pom" ) ) );
516             metadataRepositoryControl.expectAndReturn(
517                 metadataRepository.getArtifacts( TEST_REPO_ID, "org.apache.archiva", "metadata-model", "1.3" ),
518                 Arrays.asList( createArtifact( "org.apache.archiva", "metadata-model", "1.3", "jar" ),
519                                createArtifact( "org.apache.archiva", "metadata-model", "1.3", "pom" ) ) );
520             metadataRepositoryControl.expectAndReturn(
521                 metadataRepository.getNamespaces( TEST_REPO_ID, "org.apache.maven" ), Arrays.asList() );
522             metadataRepositoryControl.expectAndReturn(
523                 metadataRepository.getProjects( TEST_REPO_ID, "org.apache.maven" ), Arrays.asList( "maven-model" ) );
524             metadataRepositoryControl.expectAndReturn(
525                 metadataRepository.getProjectVersions( TEST_REPO_ID, "org.apache.maven", "maven-model" ),
526                 Arrays.asList( "2.2.1" ) );
527             metadataRepositoryControl.expectAndReturn(
528                 metadataRepository.getArtifacts( TEST_REPO_ID, "org.apache.maven", "maven-model", "2.2.1" ),
529                 Arrays.asList( createArtifact( "org.apache.archiva", "maven-model", "2.2.1", "jar" ),
530                                createArtifact( "org.apache.archiva", "maven-model", "2.2.1", "pom" ) ) );
531             metadataRepositoryControl.expectAndReturn( metadataRepository.getNamespaces( TEST_REPO_ID, "org.codehaus" ),
532                                                        Arrays.asList( "plexus" ) );
533             metadataRepositoryControl.expectAndReturn( metadataRepository.getProjects( TEST_REPO_ID, "org" ),
534                                                        Arrays.asList() );
535             metadataRepositoryControl.expectAndReturn( metadataRepository.getProjects( TEST_REPO_ID, "org.codehaus" ),
536                                                        Arrays.asList() );
537             metadataRepositoryControl.expectAndReturn(
538                 metadataRepository.getNamespaces( TEST_REPO_ID, "org.codehaus.plexus" ), Arrays.asList() );
539             metadataRepositoryControl.expectAndReturn(
540                 metadataRepository.getProjects( TEST_REPO_ID, "org.codehaus.plexus" ),
541                 Arrays.asList( "plexus-spring" ) );
542             metadataRepositoryControl.expectAndReturn(
543                 metadataRepository.getProjectVersions( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring" ),
544                 Arrays.asList( "1.0", "1.1", "1.2" ) );
545             metadataRepositoryControl.expectAndReturn(
546                 metadataRepository.getArtifacts( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.0" ),
547                 Arrays.asList( createArtifact( "org.codehaus.plexus", "plexus-spring", "1.0", "jar" ),
548                                createArtifact( "org.codehaus.plexus", "plexus-spring", "1.0", "pom" ) ) );
549             metadataRepositoryControl.expectAndReturn(
550                 metadataRepository.getArtifacts( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.1" ),
551                 Arrays.asList( createArtifact( "org.codehaus.plexus", "plexus-spring", "1.1", "jar" ),
552                                createArtifact( "org.codehaus.plexus", "plexus-spring", "1.1", "pom" ) ) );
553             metadataRepositoryControl.expectAndReturn(
554                 metadataRepository.getArtifacts( TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2" ),
555                 Arrays.asList( createArtifact( "org.codehaus.plexus", "plexus-spring", "1.2", "jar" ),
556                                createArtifact( "org.codehaus.plexus", "plexus-spring", "1.2", "pom" ) ) );
557         }
558     }
559 }