You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RepositoryStatisticsManagerTest.java 29KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. package org.apache.archiva.metadata.repository.stats;
  2. /*
  3. * Licensed to the Apache Software Foundation (ASF) under one
  4. * or more contributor license agreements. See the NOTICE file
  5. * distributed with this work for additional information
  6. * regarding copyright ownership. The ASF licenses this file
  7. * to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance
  9. * with the License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing,
  14. * software distributed under the License is distributed on an
  15. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  16. * KIND, either express or implied. See the License for the
  17. * specific language governing permissions and limitations
  18. * under the License.
  19. */
  20. import org.apache.archiva.maven.metadata.model.MavenArtifactFacet;
  21. import org.apache.archiva.metadata.model.ArtifactMetadata;
  22. import org.apache.archiva.metadata.repository.MetadataRepository;
  23. import org.apache.archiva.metadata.repository.RepositorySession;
  24. import org.apache.archiva.metadata.repository.RepositorySessionFactory;
  25. import org.apache.archiva.metadata.repository.stats.model.DefaultRepositoryStatistics;
  26. import org.apache.archiva.metadata.repository.stats.model.RepositoryStatistics;
  27. import org.junit.jupiter.api.BeforeEach;
  28. import org.junit.jupiter.api.Test;
  29. import org.mockito.Mockito;
  30. import java.text.SimpleDateFormat;
  31. import java.util.ArrayList;
  32. import java.util.Arrays;
  33. import java.util.Collections;
  34. import java.util.Date;
  35. import java.util.LinkedHashMap;
  36. import java.util.List;
  37. import java.util.Map;
  38. import java.util.TimeZone;
  39. import static org.junit.jupiter.api.Assertions.*;
  40. import static org.mockito.Mockito.*;
  41. public class RepositoryStatisticsManagerTest
  42. {
  43. private DefaultRepositoryStatisticsManager repositoryStatisticsManager;
  44. private static final String TEST_REPO_ID = "test-repo";
  45. private MetadataRepository metadataRepository;
  46. private static final String FIRST_TEST_SCAN = "2009/12/01/123456.789";
  47. private static final String SECOND_TEST_SCAN = "2009/12/02/012345.678";
  48. private Map<String, RepositoryStatistics> statsCreated = new LinkedHashMap<String, RepositoryStatistics>();
  49. private static final SimpleDateFormat TIMESTAMP_FORMAT = createTimestampFormat();
  50. private RepositorySessionFactory repositorySessionFactory;
  51. private RepositorySession session;
  52. private static SimpleDateFormat createTimestampFormat()
  53. {
  54. SimpleDateFormat fmt = new SimpleDateFormat( DefaultRepositoryStatistics.SCAN_TIMESTAMP_FORMAT );
  55. fmt.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
  56. return fmt;
  57. }
  58. @BeforeEach
  59. public void setUp()
  60. throws Exception
  61. {
  62. repositoryStatisticsManager = new DefaultRepositoryStatisticsManager();
  63. metadataRepository = mock( MetadataRepository.class );
  64. repositorySessionFactory = mock(RepositorySessionFactory.class);
  65. repositoryStatisticsManager.setRepositorySessionFactory( repositorySessionFactory );
  66. session = mock( RepositorySession.class );
  67. }
  68. @Test
  69. public void testGetLatestStats()
  70. throws Exception
  71. {
  72. Date startTime = TIMESTAMP_FORMAT.parse( SECOND_TEST_SCAN );
  73. Date endTime = new Date( startTime.getTime() + 60000 );
  74. DefaultRepositoryStatistics defStats = new DefaultRepositoryStatistics();
  75. defStats.setScanStartTime( startTime );
  76. defStats.setScanEndTime( endTime );
  77. RepositoryStatistics stats = defStats;
  78. stats.setTotalArtifactFileSize( 1314527915L );
  79. stats.setNewFileCount( 123 );
  80. stats.setTotalArtifactCount( 10386 );
  81. stats.setTotalProjectCount( 2031 );
  82. stats.setTotalGroupCount( 529 );
  83. stats.setTotalFileCount( 56229 );
  84. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  85. when( session.getRepository() ).thenReturn( metadataRepository );
  86. session.close();
  87. when(metadataRepository.getMetadataFacets(session, TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID)).thenReturn(
  88. Arrays.asList(FIRST_TEST_SCAN, SECOND_TEST_SCAN));
  89. when(metadataRepository.getMetadataFacet(session, TEST_REPO_ID,
  90. DefaultRepositoryStatistics.FACET_ID, SECOND_TEST_SCAN)).thenReturn(stats);
  91. stats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
  92. assertNotNull( stats );
  93. assertEquals( 1314527915L, stats.getTotalArtifactFileSize() );
  94. assertEquals( 123, stats.getNewFileCount() );
  95. assertEquals( 10386, stats.getTotalArtifactCount() );
  96. assertEquals( 2031, stats.getTotalProjectCount() );
  97. assertEquals( 529, stats.getTotalGroupCount() );
  98. assertEquals( 56229, stats.getTotalFileCount() );
  99. assertEquals( SECOND_TEST_SCAN, TIMESTAMP_FORMAT.format( stats.getScanStartTime() ) );
  100. assertEquals( SECOND_TEST_SCAN, stats.getName() );
  101. assertEquals( endTime, stats.getScanEndTime() );
  102. }
  103. @Test
  104. public void testGetLatestStatsWhenEmpty()
  105. throws Exception
  106. {
  107. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  108. when( session.getRepository() ).thenReturn( metadataRepository );
  109. session.close();
  110. when( metadataRepository.getMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn(
  111. Collections.<String>emptyList() );
  112. RepositoryStatistics stats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
  113. assertNull( stats );
  114. }
  115. @Test
  116. public void testAddNewStats()
  117. throws Exception
  118. {
  119. Date current = new Date();
  120. Date startTime = new Date( current.getTime() - 12345 );
  121. RepositoryStatistics stats = createTestStats( startTime, current );
  122. walkRepository( 1 );
  123. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  124. when( session.getRepository() ).thenReturn( metadataRepository );
  125. session.close();
  126. metadataRepository.addMetadataFacet(session , TEST_REPO_ID, stats );
  127. when( metadataRepository.getMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn(
  128. Arrays.asList( stats.getName() ) );
  129. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID,
  130. DefaultRepositoryStatistics.FACET_ID, stats.getName() ) ).thenReturn( stats );
  131. repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, startTime, current, 56345,
  132. 45 );
  133. stats = repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID );
  134. assertNotNull( stats );
  135. assertEquals( 246900, stats.getTotalArtifactFileSize() );
  136. assertEquals( 45, stats.getNewFileCount() );
  137. assertEquals( 20, stats.getTotalArtifactCount() );
  138. assertEquals( 5, stats.getTotalProjectCount() );
  139. assertEquals( 4, stats.getTotalGroupCount() );
  140. assertEquals( 56345, stats.getTotalFileCount() );
  141. assertEquals( current.getTime() - 12345, stats.getScanStartTime().getTime() );
  142. assertEquals( current, stats.getScanEndTime() );
  143. }
  144. @Test
  145. public void testDeleteStats()
  146. throws Exception
  147. {
  148. walkRepository( 2 );
  149. Date current = new Date();
  150. Date startTime1 = new Date( current.getTime() - 12345 );
  151. DefaultRepositoryStatistics stats1 = createTestStats( startTime1, new Date( current.getTime() - 6000 ) );
  152. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  153. when( session.getRepository() ).thenReturn( metadataRepository );
  154. session.close();
  155. metadataRepository.addMetadataFacet(session , TEST_REPO_ID, stats1 );
  156. Date startTime2 = new Date( current.getTime() - 3000 );
  157. DefaultRepositoryStatistics stats2 = createTestStats( startTime2, current );
  158. metadataRepository.addMetadataFacet(session , TEST_REPO_ID, stats2 );
  159. when( metadataRepository.getMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn(
  160. Arrays.asList( stats1.getName(), stats2.getName() ) ).thenReturn( Collections.emptyList() );
  161. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID,
  162. DefaultRepositoryStatistics.FACET_ID, stats2.getName() ) ).thenReturn( stats2 );
  163. metadataRepository.removeMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID );
  164. repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, startTime1,
  165. stats1.getScanEndTime(), 56345, 45 );
  166. repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, startTime2,
  167. stats2.getScanEndTime(), 56345, 45 );
  168. assertNotNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
  169. repositoryStatisticsManager.deleteStatistics( TEST_REPO_ID );
  170. assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
  171. }
  172. @Test
  173. public void testDeleteStatsWhenEmpty()
  174. throws Exception
  175. {
  176. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  177. when( session.getRepository() ).thenReturn( metadataRepository );
  178. session.close();
  179. when( metadataRepository.getMetadataFacets( session, TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn(
  180. Collections.<String>emptyList( ) );
  181. metadataRepository.removeMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID );
  182. assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
  183. repositoryStatisticsManager.deleteStatistics( TEST_REPO_ID );
  184. assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
  185. verify( metadataRepository, times( 2 ) ).getMetadataFacets( session, TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID );
  186. }
  187. @Test
  188. public void testGetStatsRangeInside()
  189. throws Exception
  190. {
  191. walkRepository( 3 );
  192. Date current = new Date();
  193. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  194. when( session.getRepository() ).thenReturn( metadataRepository );
  195. session.close();
  196. addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
  197. addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
  198. addStats( new Date( current.getTime() - 1000 ), current );
  199. ArrayList<String> keys = new ArrayList<>( statsCreated.keySet() );
  200. when( metadataRepository.getMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn( keys );
  201. // only match the middle one
  202. String key = keys.get( 1 );
  203. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID, key ) ).thenReturn(
  204. statsCreated.get( key ) );
  205. for ( RepositoryStatistics stats : statsCreated.values() )
  206. {
  207. repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID,
  208. stats.getScanStartTime(), stats.getScanEndTime(), 56345,
  209. 45 );
  210. }
  211. List<RepositoryStatistics> list =
  212. repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID,
  213. new Date( current.getTime() - 4000 ),
  214. new Date( current.getTime() - 2000 ) );
  215. assertEquals( 1, list.size() );
  216. assertEquals( new Date( current.getTime() - 3000 ), list.get( 0 ).getScanStartTime() );
  217. }
  218. @Test
  219. public void testGetStatsRangeUpperOutside()
  220. throws Exception
  221. {
  222. walkRepository( 3 );
  223. Date current = new Date();
  224. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  225. when( session.getRepository() ).thenReturn( metadataRepository );
  226. session.close();
  227. addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
  228. addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
  229. addStats( new Date( current.getTime() - 1000 ), current );
  230. List<String> keys = new ArrayList<>( statsCreated.keySet() );
  231. when( metadataRepository.getMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn( keys );
  232. String key = keys.get( 1 );
  233. when( metadataRepository.getMetadataFacet(session, TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID, key ) ).thenReturn(
  234. statsCreated.get( key ) );
  235. key = keys.get( 2 );
  236. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID, key ) ).thenReturn(
  237. statsCreated.get( key ) );
  238. for ( RepositoryStatistics stats : statsCreated.values() )
  239. {
  240. repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID,
  241. stats.getScanStartTime(), stats.getScanEndTime(), 56345,
  242. 45 );
  243. }
  244. List<RepositoryStatistics> list =
  245. repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID,
  246. new Date( current.getTime() - 4000 ), current );
  247. assertEquals( 2, list.size() );
  248. assertEquals( new Date( current.getTime() - 3000 ), list.get( 1 ).getScanStartTime() );
  249. assertEquals( new Date( current.getTime() - 1000 ), list.get( 0 ).getScanStartTime() );
  250. }
  251. @Test
  252. public void testGetStatsRangeLowerOutside()
  253. throws Exception
  254. {
  255. walkRepository( 3 );
  256. Date current = new Date();
  257. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  258. when( session.getRepository() ).thenReturn( metadataRepository );
  259. session.close();
  260. addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
  261. addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
  262. addStats( new Date( current.getTime() - 1000 ), current );
  263. List<String> keys = new ArrayList<>( statsCreated.keySet() );
  264. when( metadataRepository.getMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn( keys );
  265. String key = keys.get( 0 );
  266. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID, key ) ).thenReturn(
  267. statsCreated.get( key ) );
  268. key = keys.get( 1 );
  269. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID, key ) ).thenReturn(
  270. statsCreated.get( key ) );
  271. for ( RepositoryStatistics stats : statsCreated.values() )
  272. {
  273. repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID,
  274. stats.getScanStartTime(), stats.getScanEndTime(), 56345,
  275. 45 );
  276. }
  277. List<RepositoryStatistics> list =
  278. repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID,
  279. new Date( current.getTime() - 20000 ),
  280. new Date( current.getTime() - 2000 ) );
  281. assertEquals( 2, list.size() );
  282. assertEquals( new Date( current.getTime() - 12345 ), list.get( 1 ).getScanStartTime() );
  283. assertEquals( new Date( current.getTime() - 3000 ), list.get( 0 ).getScanStartTime() );
  284. }
  285. @Test
  286. public void testGetStatsRangeLowerAndUpperOutside()
  287. throws Exception
  288. {
  289. walkRepository( 3 );
  290. Date current = new Date();
  291. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  292. when( session.getRepository() ).thenReturn( metadataRepository );
  293. session.close();
  294. addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
  295. addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
  296. addStats( new Date( current.getTime() - 1000 ), current );
  297. ArrayList<String> keys = new ArrayList<>( statsCreated.keySet() );
  298. when( metadataRepository.getMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn( keys );
  299. String key = keys.get( 0 );
  300. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID, key ) ).thenReturn(
  301. statsCreated.get( key ) );
  302. key = keys.get( 1 );
  303. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID, key ) ).thenReturn(
  304. statsCreated.get( key ) );
  305. key = keys.get( 2 );
  306. when( metadataRepository.getMetadataFacet(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID, key ) ).thenReturn(
  307. statsCreated.get( key ) );
  308. for ( RepositoryStatistics stats : statsCreated.values() )
  309. {
  310. repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID,
  311. stats.getScanStartTime(), stats.getScanEndTime(), 56345,
  312. 45 );
  313. }
  314. List<RepositoryStatistics> list =
  315. repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID,
  316. new Date( current.getTime() - 20000 ), current );
  317. assertEquals( 3, list.size() );
  318. assertEquals( new Date( current.getTime() - 12345 ), list.get( 2 ).getScanStartTime() );
  319. assertEquals( new Date( current.getTime() - 3000 ), list.get( 1 ).getScanStartTime() );
  320. assertEquals( new Date( current.getTime() - 1000 ), list.get( 0 ).getScanStartTime() );
  321. }
  322. @Test
  323. public void testGetStatsRangeNotInside()
  324. throws Exception
  325. {
  326. walkRepository( 3 );
  327. Date current = new Date();
  328. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  329. when( session.getRepository() ).thenReturn( metadataRepository );
  330. session.close();
  331. addStats( new Date( current.getTime() - 12345 ), new Date( current.getTime() - 6000 ) );
  332. addStats( new Date( current.getTime() - 3000 ), new Date( current.getTime() - 2000 ) );
  333. addStats( new Date( current.getTime() - 1000 ), current );
  334. ArrayList<String> keys = new ArrayList<>( statsCreated.keySet() );
  335. when( metadataRepository.getMetadataFacets(session , TEST_REPO_ID, DefaultRepositoryStatistics.FACET_ID ) ).thenReturn( keys );
  336. for ( RepositoryStatistics stats : statsCreated.values() )
  337. {
  338. repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID,
  339. stats.getScanStartTime(), stats.getScanEndTime(), 56345,
  340. 45 );
  341. }
  342. List<RepositoryStatistics> list =
  343. repositoryStatisticsManager.getStatisticsInRange( TEST_REPO_ID,
  344. new Date( current.getTime() - 20000 ),
  345. new Date( current.getTime() - 16000 ) );
  346. assertEquals( 0, list.size() );
  347. }
  348. private void addStats( Date startTime, Date endTime )
  349. throws Exception
  350. {
  351. RepositorySession session = repositorySessionFactory.createSession();
  352. DefaultRepositoryStatistics stats = createTestStats( startTime, endTime );
  353. metadataRepository.addMetadataFacet(session , TEST_REPO_ID, stats );
  354. statsCreated.put( stats.getName(), stats );
  355. }
  356. private ArtifactMetadata createArtifact( String namespace, String projectId, String projectVersion, String type )
  357. {
  358. ArtifactMetadata metadata = new ArtifactMetadata();
  359. metadata.setRepositoryId( TEST_REPO_ID );
  360. metadata.setId( projectId + "-" + projectVersion + "." + type );
  361. metadata.setProject( projectId );
  362. metadata.setSize( 12345L );
  363. metadata.setProjectVersion( projectVersion );
  364. metadata.setVersion( projectVersion );
  365. metadata.setNamespace( namespace );
  366. MavenArtifactFacet facet = new MavenArtifactFacet();
  367. facet.setType( type );
  368. metadata.addFacet( facet );
  369. return metadata;
  370. }
  371. private DefaultRepositoryStatistics createTestStats( Date startTime, Date endTime )
  372. {
  373. DefaultRepositoryStatistics stats = new DefaultRepositoryStatistics();
  374. stats.setRepositoryId( TEST_REPO_ID );
  375. stats.setScanStartTime( startTime );
  376. stats.setScanEndTime( endTime );
  377. stats.setTotalArtifactFileSize( 20 * 12345L );
  378. stats.setNewFileCount( 45 );
  379. stats.setTotalArtifactCount( 20 );
  380. stats.setTotalProjectCount( 5 );
  381. stats.setTotalGroupCount( 4 );
  382. stats.setTotalFileCount( 56345 );
  383. stats.setTotalCountForType( "jar", 10 );
  384. stats.setTotalCountForType( "pom", 10 );
  385. return stats;
  386. }
  387. private void walkRepository( int count )
  388. throws Exception
  389. {
  390. when( repositorySessionFactory.createSession( ) ).thenReturn( session );
  391. for ( int i = 0; i < count; i++ )
  392. {
  393. when( metadataRepository.getRootNamespaces(session , TEST_REPO_ID ) ).thenReturn( Arrays.asList( "com", "org" ) );
  394. when( metadataRepository.getProjects(session , TEST_REPO_ID, "com" ) ).thenReturn( Arrays.<String>asList() );
  395. when( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "com" ) ).thenReturn( Arrays.asList( "example" ) );
  396. when( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "com.example" ) ).thenReturn(
  397. Arrays.<String>asList() );
  398. when( metadataRepository.getProjects(session , TEST_REPO_ID, "com.example" ) ).thenReturn(
  399. Arrays.asList( "example-project" ) );
  400. when( metadataRepository.getProjectVersions(session , TEST_REPO_ID, "com.example", "example-project" ) ).thenReturn(
  401. Arrays.asList( "1.0", "1.1" ) );
  402. when(
  403. metadataRepository.getArtifacts(session , TEST_REPO_ID, "com.example", "example-project", "1.0" ) ).thenReturn(
  404. Arrays.asList( createArtifact( "com.example", "example-project", "1.0", "jar" ),
  405. createArtifact( "com.example", "example-project", "1.0", "pom" ) ) );
  406. when(
  407. metadataRepository.getArtifacts(session , TEST_REPO_ID, "com.example", "example-project", "1.1" ) ).thenReturn(
  408. Arrays.asList( createArtifact( "com.example", "example-project", "1.1", "jar" ),
  409. createArtifact( "com.example", "example-project", "1.1", "pom" ) ) );
  410. when( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org" ) ).thenReturn( Arrays.asList( "apache", "codehaus" ) );
  411. when( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.apache" ) ).thenReturn( Arrays.asList( "archiva", "maven" ) );
  412. when( metadataRepository.getProjects(session , TEST_REPO_ID, "org.apache" ) ).thenReturn( Arrays.<String>asList() );
  413. when( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.apache.archiva" ) ).thenReturn( Arrays.<String>asList() );
  414. when( metadataRepository.getProjects(session , TEST_REPO_ID, "org.apache.archiva" ) ).thenReturn( Arrays.asList( "metadata-repository-api", "metadata-model" ) );
  415. when( metadataRepository.getProjectVersions(session , TEST_REPO_ID, "org.apache.archiva", "metadata-repository-api" ) )
  416. .thenReturn( Arrays.asList( "1.3-SNAPSHOT", "1.3" ) );
  417. when( metadataRepository.getArtifacts(session , TEST_REPO_ID, "org.apache.archiva", "metadata-repository-api", "1.3-SNAPSHOT" ) )
  418. .thenReturn( Arrays.asList( createArtifact( "org.apache.archiva", "metadata-repository-api", "1.3-SNAPSHOT", "jar" ),
  419. createArtifact( "org.apache.archiva", "metadata-repository-api", "1.3-SNAPSHOT",
  420. "pom" ) ) );
  421. when( metadataRepository.getArtifacts(session , TEST_REPO_ID, "org.apache.archiva", "metadata-repository-api", "1.3" ) )
  422. .thenReturn( Arrays.asList( createArtifact( "org.apache.archiva", "metadata-repository-api", "1.3", "jar" ),
  423. createArtifact( "org.apache.archiva", "metadata-repository-api", "1.3", "pom" ) ) );
  424. when( metadataRepository.getProjectVersions(session , TEST_REPO_ID, "org.apache.archiva", "metadata-model" ) )
  425. .thenReturn( Arrays.asList( "1.3-SNAPSHOT", "1.3" ) );
  426. when( metadataRepository.getArtifacts(session , TEST_REPO_ID, "org.apache.archiva", "metadata-model", "1.3-SNAPSHOT" ) )
  427. .thenReturn( Arrays.asList( createArtifact( "org.apache.archiva", "metadata-model", "1.3-SNAPSHOT", "jar" ),
  428. createArtifact( "org.apache.archiva", "metadata-model", "1.3-SNAPSHOT", "pom" ) ) );
  429. when( metadataRepository.getArtifacts(session , TEST_REPO_ID, "org.apache.archiva", "metadata-model", "1.3" ) )
  430. .thenReturn( Arrays.asList( createArtifact( "org.apache.archiva", "metadata-model", "1.3", "jar" ),
  431. createArtifact( "org.apache.archiva", "metadata-model", "1.3", "pom" ) ) );
  432. when( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.apache.maven" ) ).thenReturn( Arrays.<String>asList() );
  433. when( metadataRepository.getProjects(session , TEST_REPO_ID, "org.apache.maven" ) )
  434. .thenReturn( Arrays.asList( "maven-model" ) );
  435. when( metadataRepository.getProjectVersions(session , TEST_REPO_ID, "org.apache.maven", "maven-model" ) )
  436. .thenReturn( Arrays.asList( "2.2.1" ) );
  437. when( metadataRepository.getArtifacts(session , TEST_REPO_ID, "org.apache.maven", "maven-model", "2.2.1" ) )
  438. .thenReturn( Arrays.asList( createArtifact( "org.apache.archiva", "maven-model", "2.2.1", "jar" ),
  439. createArtifact( "org.apache.archiva", "maven-model", "2.2.1", "pom" ) ) );
  440. when( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.codehaus" ) ).thenReturn( Arrays.asList( "plexus" ) );
  441. when( metadataRepository.getProjects(session , TEST_REPO_ID, "org" ) ).thenReturn( Arrays.<String>asList( ) );
  442. when( metadataRepository.getProjects(session , TEST_REPO_ID, "org.codehaus" ) )
  443. .thenReturn( Arrays.<String>asList( ) );
  444. when( metadataRepository.getChildNamespaces(session , TEST_REPO_ID, "org.codehaus.plexus" ) )
  445. .thenReturn( Arrays.<String>asList( ) );
  446. when( metadataRepository.getProjects(session , TEST_REPO_ID, "org.codehaus.plexus" ) )
  447. .thenReturn( Arrays.asList( "plexus-spring" ) );
  448. when( metadataRepository.getProjectVersions(session, TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring" ) )
  449. .thenReturn( Arrays.asList( "1.0", "1.1", "1.2" ) );
  450. when( metadataRepository.getArtifacts(session , TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.0" ) )
  451. .thenReturn( Arrays.asList( createArtifact( "org.codehaus.plexus", "plexus-spring", "1.0", "jar" ),
  452. createArtifact( "org.codehaus.plexus", "plexus-spring", "1.0", "pom" ) ) );
  453. when( metadataRepository.getArtifacts(session, TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.1" ) )
  454. .thenReturn( Arrays.asList( createArtifact( "org.codehaus.plexus", "plexus-spring", "1.1", "jar" ),
  455. createArtifact( "org.codehaus.plexus", "plexus-spring", "1.1", "pom" ) ) );
  456. when( metadataRepository.getArtifacts(session , TEST_REPO_ID, "org.codehaus.plexus", "plexus-spring", "1.2" ) )
  457. .thenReturn( Arrays.asList( createArtifact( "org.codehaus.plexus", "plexus-spring", "1.2", "jar" ),
  458. createArtifact( "org.codehaus.plexus", "plexus-spring", "1.2", "pom" ) ) );
  459. }
  460. }
  461. }