Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

RepositoryScannerTest.java 22KB

10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
10 anos atrás
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. package org.apache.archiva.repository.scanner;
  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 junit.framework.TestCase;
  21. import org.apache.archiva.common.filelock.DefaultFileLockManager;
  22. import org.apache.archiva.common.filelock.FileLockManager;
  23. import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
  24. import org.apache.archiva.consumers.KnownRepositoryContentConsumer;
  25. import org.apache.archiva.repository.base.managed.BasicManagedRepository;
  26. import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
  27. import org.apache.archiva.repository.EditableManagedRepository;
  28. import org.apache.archiva.repository.EditableRemoteRepository;
  29. import org.apache.archiva.repository.ManagedRepository;
  30. import org.apache.archiva.repository.storage.fs.FilesystemStorage;
  31. import org.apache.archiva.repository.scanner.mock.ManagedRepositoryContentMock;
  32. import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
  33. import org.apache.commons.io.FileUtils;
  34. import org.junit.Test;
  35. import org.junit.runner.RunWith;
  36. import org.springframework.context.ApplicationContext;
  37. import org.springframework.test.context.ContextConfiguration;
  38. import javax.inject.Inject;
  39. import java.io.IOException;
  40. import java.net.URI;
  41. import java.net.URISyntaxException;
  42. import java.nio.file.Files;
  43. import java.nio.file.Path;
  44. import java.nio.file.Paths;
  45. import java.nio.file.attribute.FileTime;
  46. import java.text.ParseException;
  47. import java.text.SimpleDateFormat;
  48. import java.util.ArrayList;
  49. import java.util.Arrays;
  50. import java.util.Comparator;
  51. import java.util.List;
  52. import java.util.Locale;
  53. import java.util.TimeZone;
  54. import static org.hamcrest.CoreMatchers.is;
  55. import static org.junit.Assert.assertThat;
  56. /**
  57. * RepositoryScannerTest
  58. */
  59. @RunWith(ArchivaSpringJUnit4ClassRunner.class)
  60. @ContextConfiguration(locations = { "classpath*:/META-INF/spring-context.xml" })
  61. public class RepositoryScannerTest
  62. extends TestCase
  63. {
  64. @Inject
  65. ApplicationContext applicationContext;
  66. Path repoBaseDir;
  67. private Path getRepoBaseDir() {
  68. if (repoBaseDir==null) {
  69. try
  70. {
  71. repoBaseDir =Paths.get(Thread.currentThread( ).getContextClassLoader( ).getResource( "repositories" ).toURI());
  72. }
  73. catch ( URISyntaxException e )
  74. {
  75. throw new RuntimeException( "Could not retrieve repository base directory" );
  76. }
  77. }
  78. return repoBaseDir;
  79. }
  80. protected EditableManagedRepository createRepository( String id, String name, Path location ) throws IOException {
  81. FileLockManager lockManager = new DefaultFileLockManager();
  82. FilesystemStorage storage = new FilesystemStorage(location.toAbsolutePath(), lockManager);
  83. BasicManagedRepository repo = new BasicManagedRepository(id, name, storage);
  84. repo.setLocation( location.toAbsolutePath().toUri());
  85. repo.setContent(new ManagedRepositoryContentMock(repo));
  86. return repo;
  87. }
  88. protected EditableRemoteRepository createRemoteRepository( String id, String name, String url ) throws URISyntaxException, IOException {
  89. BasicRemoteRepository repo = BasicRemoteRepository.newFilesystemInstance(id, name, Paths.get("remotes"));
  90. repo.setLocation( new URI( url ) );
  91. return repo;
  92. }
  93. private static final String[] ARTIFACT_PATTERNS =
  94. new String[]{ "**/*.jar", "**/*.pom", "**/*.rar", "**/*.zip", "**/*.war", "**/*.tar.gz" };
  95. private ManagedRepository createDefaultRepository() throws IOException, URISyntaxException
  96. {
  97. Path repoDir = getRepoBaseDir().resolve("default-repository" );
  98. assertTrue( "Default Test Repository should exist.", Files.exists(repoDir) && Files.isDirectory(repoDir) );
  99. return createRepository( "testDefaultRepo", "Test Default Repository", repoDir );
  100. }
  101. private ManagedRepository createSimpleRepository()
  102. throws IOException, ParseException
  103. {
  104. Path srcDir = getRepoBaseDir().resolve("simple-repository" );
  105. Path repoDir = Paths.get( System.getProperty( "basedir" ), "target/test-repos/simple-repository" );
  106. org.apache.archiva.common.utils.FileUtils.deleteDirectory( repoDir );
  107. FileUtils.copyDirectory( srcDir.toFile(), repoDir.toFile() );
  108. Path repoFile = repoDir.resolve(
  109. "groupId/snapshot-artifact/1.0-alpha-1-SNAPSHOT/snapshot-artifact-1.0-alpha-1-20050611.202024-1.pom" );
  110. Files.setLastModifiedTime(repoFile, FileTime.fromMillis(getTimestampAsMillis( "20050611.202024" ) ));
  111. assertTrue( "Simple Test Repository should exist.", Files.exists(repoDir) && Files.isDirectory(repoDir) );
  112. return createRepository( "testSimpleRepo", "Test Simple Repository", repoDir );
  113. }
  114. private static long getTimestampAsMillis( String timestamp )
  115. throws ParseException
  116. {
  117. SimpleDateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss", Locale.US );
  118. fmt.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
  119. return fmt.parse( timestamp ).getTime();
  120. }
  121. private ManagedRepository createLegacyRepository() throws IOException {
  122. Path repoDir = getRepoBaseDir().resolve("legacy-repository" );
  123. assertTrue( "Legacy Test Repository should exist.", Files.exists(repoDir) && Files.isDirectory(repoDir) );
  124. EditableManagedRepository repo = createRepository( "testLegacyRepo", "Test Legacy Repository", repoDir );
  125. repo.setLayout( "legacy" );
  126. return repo;
  127. }
  128. private void assertMinimumHits( String msg, int minimumHitCount, long actualCount )
  129. {
  130. if ( actualCount < minimumHitCount )
  131. {
  132. fail( "Minimum hit count on " + msg + " not satisfied. Expected more than <" + minimumHitCount
  133. + ">, but actually got <" + actualCount + ">." );
  134. }
  135. }
  136. private RepositoryScanner lookupRepositoryScanner()
  137. throws Exception
  138. {
  139. return applicationContext.getBean( RepositoryScanner.class );
  140. }
  141. private List<String> getIgnoreList()
  142. {
  143. List<String> ignores = new ArrayList<>();
  144. ignores.addAll( Arrays.asList( RepositoryScanner.IGNORABLE_CONTENT ) );
  145. return ignores;
  146. }
  147. @Test
  148. public void testTimestampRepositoryScanner()
  149. throws Exception
  150. {
  151. ManagedRepository repository = createSimpleRepository();
  152. List<KnownRepositoryContentConsumer> knownConsumers = new ArrayList<>();
  153. KnownScanConsumer consumer = new KnownScanConsumer();
  154. consumer.setIncludes( ARTIFACT_PATTERNS );
  155. knownConsumers.add( consumer );
  156. List<InvalidRepositoryContentConsumer> invalidConsumers = new ArrayList<>();
  157. InvalidScanConsumer badconsumer = new InvalidScanConsumer();
  158. invalidConsumers.add( badconsumer );
  159. RepositoryScanner scanner = lookupRepositoryScanner();
  160. RepositoryScanStatistics stats = scanner.scan( repository, knownConsumers, invalidConsumers, getIgnoreList(),
  161. getTimestampAsMillis( "20061101.000000" ) );
  162. assertNotNull( "Stats should not be null.", stats );
  163. assertEquals( "Stats.totalFileCount", 4, stats.getTotalFileCount() );
  164. assertEquals( "Stats.newFileCount", 3, stats.getNewFileCount() );
  165. assertEquals( "Processed Count", 2, consumer.getProcessCount() );
  166. assertEquals( "Processed Count (of invalid items)", 1, badconsumer.getProcessCount() );
  167. }
  168. @Test
  169. public void testTimestampRepositoryScannerFreshScan()
  170. throws Exception
  171. {
  172. ManagedRepository repository = createSimpleRepository();
  173. List<KnownRepositoryContentConsumer> knownConsumers = new ArrayList<>();
  174. KnownScanConsumer consumer = new KnownScanConsumer();
  175. consumer.setIncludes( ARTIFACT_PATTERNS );
  176. knownConsumers.add( consumer );
  177. List<InvalidRepositoryContentConsumer> invalidConsumers = new ArrayList<>();
  178. InvalidScanConsumer badconsumer = new InvalidScanConsumer();
  179. invalidConsumers.add( badconsumer );
  180. RepositoryScanner scanner = lookupRepositoryScanner();
  181. RepositoryScanStatistics stats =
  182. scanner.scan( repository, knownConsumers, invalidConsumers, getIgnoreList(), RepositoryScanner.FRESH_SCAN );
  183. assertNotNull( "Stats should not be null.", stats );
  184. assertEquals( "Stats.totalFileCount", 4, stats.getTotalFileCount() );
  185. assertEquals( "Stats.newFileCount", 4, stats.getNewFileCount() );
  186. assertEquals( "Processed Count", 3, consumer.getProcessCount() );
  187. assertEquals( "Processed Count (of invalid items)", 1, badconsumer.getProcessCount() );
  188. }
  189. @Test
  190. public void testTimestampRepositoryScannerProcessUnmodified()
  191. throws Exception
  192. {
  193. ManagedRepository repository = createSimpleRepository();
  194. List<KnownRepositoryContentConsumer> knownConsumers = new ArrayList<>();
  195. KnownScanConsumer consumer = new KnownScanConsumer();
  196. consumer.setProcessUnmodified( true );
  197. consumer.setIncludes( ARTIFACT_PATTERNS );
  198. knownConsumers.add( consumer );
  199. List<InvalidRepositoryContentConsumer> invalidConsumers = new ArrayList<>();
  200. InvalidScanConsumer badconsumer = new InvalidScanConsumer();
  201. invalidConsumers.add( badconsumer );
  202. RepositoryScanner scanner = lookupRepositoryScanner();
  203. RepositoryScanStatistics stats = scanner.scan( repository, knownConsumers, invalidConsumers, getIgnoreList(),
  204. getTimestampAsMillis( "20061101.000000" ) );
  205. assertNotNull( "Stats should not be null.", stats );
  206. assertEquals( "Stats.totalFileCount", 4, stats.getTotalFileCount() );
  207. assertEquals( "Stats.newFileCount", 3, stats.getNewFileCount() );
  208. assertEquals( "Processed Count", 3, consumer.getProcessCount() );
  209. assertEquals( "Processed Count (of invalid items)", 1, badconsumer.getProcessCount() );
  210. }
  211. @Test
  212. public void testDefaultRepositoryScanner()
  213. throws Exception
  214. {
  215. ManagedRepository repository = createDefaultRepository();
  216. List<KnownRepositoryContentConsumer> knownConsumers = new ArrayList<>();
  217. KnownScanConsumer consumer = new KnownScanConsumer();
  218. consumer.setIncludes(
  219. new String[]{ "**/*.jar", "**/*.war", "**/*.pom", "**/maven-metadata.xml", "**/*-site.xml", "**/*.zip",
  220. "**/*.tar.gz", "**/*.sha1", "**/*.md5" }
  221. );
  222. knownConsumers.add( consumer );
  223. List<InvalidRepositoryContentConsumer> invalidConsumers = new ArrayList<>();
  224. InvalidScanConsumer badconsumer = new InvalidScanConsumer();
  225. invalidConsumers.add( badconsumer );
  226. RepositoryScanner scanner = lookupRepositoryScanner();
  227. RepositoryScanStatistics stats =
  228. scanner.scan( repository, knownConsumers, invalidConsumers, getIgnoreList(), RepositoryScanner.FRESH_SCAN );
  229. assertNotNull( "Stats should not be null.", stats );
  230. assertMinimumHits( "Stats.totalFileCount", 17, stats.getTotalFileCount() );
  231. assertMinimumHits( "Processed Count", 17, consumer.getProcessCount() );
  232. assertEquals( "Processed Count (of invalid items):" + badconsumer.getPaths(), 6, badconsumer.getProcessCount() );
  233. List<String> paths = new ArrayList<>( badconsumer.getPaths() );
  234. paths.sort( Comparator.naturalOrder() );
  235. List<String> expected = Arrays.asList(
  236. "CVS/Root",
  237. "invalid/invalid/1/invalid-1",
  238. "javax/sql/jdbc/2.0/maven-metadata-repository.xml",
  239. "javax/sql/jdbc/maven-metadata-repository.xml",
  240. "javax/sql/maven-metadata-repository.xml",
  241. "org/apache/maven/maven-parent/4/maven-parent-4-site_en.xml");
  242. assertThat( paths, is( expected ) );
  243. }
  244. @Test
  245. public void testDefaultRepositoryArtifactScanner()
  246. throws Exception
  247. {
  248. List<String> actualArtifactPaths = new ArrayList<>();
  249. actualArtifactPaths.add( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar" );
  250. actualArtifactPaths.add( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar" );
  251. actualArtifactPaths.add( "invalid/invalid/1.0/invalid-1.0b.jar" );
  252. actualArtifactPaths.add( "invalid/invalid/1.0/invalid-2.0.jar" );
  253. actualArtifactPaths.add( "invalid/invalid-1.0.jar" );
  254. actualArtifactPaths.add( "org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar" );
  255. actualArtifactPaths.add( "org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1-javadoc.jar" );
  256. actualArtifactPaths.add( "org/apache/maven/test/1.0-SNAPSHOT/test-1.0-20050611.112233-1.jar" );
  257. actualArtifactPaths.add( "org/apache/maven/A/1.0/A-1.0.war" );
  258. actualArtifactPaths.add( "org/apache/maven/A/1.0/A-1.0.pom" );
  259. actualArtifactPaths.add( "org/apache/maven/B/2.0/B-2.0.pom" );
  260. actualArtifactPaths.add( "org/apache/maven/B/1.0/B-1.0.pom" );
  261. actualArtifactPaths.add( "org/apache/maven/some-ejb/1.0/some-ejb-1.0-client.jar" );
  262. actualArtifactPaths.add( "org/apache/maven/C/1.0/C-1.0.war" );
  263. actualArtifactPaths.add( "org/apache/maven/C/1.0/C-1.0.pom" );
  264. actualArtifactPaths.add( "org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.pom" );
  265. actualArtifactPaths.add( "org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.jar" );
  266. actualArtifactPaths.add( "org/apache/maven/update/test-updated/1.0/test-updated-1.0.pom" );
  267. actualArtifactPaths.add( "org/apache/maven/update/test-updated/1.0/test-updated-1.0.jar" );
  268. actualArtifactPaths.add( "org/apache/maven/discovery/1.0/discovery-1.0.pom" );
  269. actualArtifactPaths.add( "org/apache/maven/testing/1.0/testing-1.0-test-sources.jar" );
  270. actualArtifactPaths.add( "org/apache/maven/testing/1.0/testing-1.0.jar" );
  271. actualArtifactPaths.add( "org/apache/maven/testing/1.0/testing-1.0-sources.jar" );
  272. actualArtifactPaths.add( "org/apache/maven/testing/1.0/testing-1.0.zip" );
  273. actualArtifactPaths.add( "org/apache/maven/testing/1.0/testing-1.0.tar.gz" );
  274. actualArtifactPaths.add( "org/apache/maven/samplejar/2.0/samplejar-2.0.pom" );
  275. actualArtifactPaths.add( "org/apache/maven/samplejar/2.0/samplejar-2.0.jar" );
  276. actualArtifactPaths.add( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" );
  277. actualArtifactPaths.add( "org/apache/maven/samplejar/1.0/samplejar-1.0.jar" );
  278. actualArtifactPaths.add( "org/apache/testgroup/discovery/1.0/discovery-1.0.pom" );
  279. actualArtifactPaths.add( "javax/sql/jdbc/2.0/jdbc-2.0.jar" );
  280. ManagedRepository repository = createDefaultRepository();
  281. List<KnownRepositoryContentConsumer> knownConsumers = new ArrayList<>();
  282. KnownScanConsumer consumer = new KnownScanConsumer();
  283. consumer.setIncludes( ARTIFACT_PATTERNS );
  284. knownConsumers.add( consumer );
  285. List<InvalidRepositoryContentConsumer> invalidConsumers = new ArrayList<>();
  286. InvalidScanConsumer badconsumer = new InvalidScanConsumer();
  287. invalidConsumers.add( badconsumer );
  288. RepositoryScanner scanner = lookupRepositoryScanner();
  289. RepositoryScanStatistics stats =
  290. scanner.scan( repository, knownConsumers, invalidConsumers, getIgnoreList(), RepositoryScanner.FRESH_SCAN );
  291. assertNotNull( "Stats should not be null.", stats );
  292. assertMinimumHits( "Stats.totalFileCount", actualArtifactPaths.size(), stats.getTotalFileCount() );
  293. assertMinimumHits( "Processed Count", actualArtifactPaths.size(), consumer.getProcessCount() );
  294. }
  295. @Test
  296. public void testDefaultRepositoryMetadataScanner()
  297. throws Exception
  298. {
  299. List<String> actualMetadataPaths = new ArrayList<>();
  300. actualMetadataPaths.add( "org/apache/maven/some-ejb/1.0/maven-metadata.xml" );
  301. actualMetadataPaths.add( "org/apache/maven/update/test-not-updated/maven-metadata.xml" );
  302. actualMetadataPaths.add( "org/apache/maven/update/test-updated/maven-metadata.xml" );
  303. actualMetadataPaths.add( "org/apache/maven/maven-metadata.xml" );
  304. actualMetadataPaths.add( "org/apache/testgroup/discovery/1.0/maven-metadata.xml" );
  305. actualMetadataPaths.add( "org/apache/testgroup/discovery/maven-metadata.xml" );
  306. actualMetadataPaths.add( "javax/sql/jdbc/2.0/maven-metadata-repository.xml" );
  307. actualMetadataPaths.add( "javax/sql/jdbc/maven-metadata-repository.xml" );
  308. actualMetadataPaths.add( "javax/sql/maven-metadata-repository.xml" );
  309. actualMetadataPaths.add( "javax/maven-metadata.xml" );
  310. ManagedRepository repository = createDefaultRepository();
  311. List<KnownRepositoryContentConsumer> knownConsumers = new ArrayList<>();
  312. KnownScanConsumer knownConsumer = new KnownScanConsumer();
  313. knownConsumer.setIncludes( new String[]{ "**/maven-metadata*.xml" } );
  314. knownConsumers.add( knownConsumer );
  315. List<InvalidRepositoryContentConsumer> invalidConsumers = new ArrayList<>();
  316. InvalidScanConsumer badconsumer = new InvalidScanConsumer();
  317. invalidConsumers.add( badconsumer );
  318. RepositoryScanner scanner = lookupRepositoryScanner();
  319. RepositoryScanStatistics stats =
  320. scanner.scan( repository, knownConsumers, invalidConsumers, getIgnoreList(), RepositoryScanner.FRESH_SCAN );
  321. assertNotNull( "Stats should not be null.", stats );
  322. assertMinimumHits( "Stats.totalFileCount", actualMetadataPaths.size(), stats.getTotalFileCount() );
  323. assertMinimumHits( "Processed Count", actualMetadataPaths.size(), knownConsumer.getProcessCount() );
  324. }
  325. @Test
  326. public void testDefaultRepositoryProjectScanner()
  327. throws Exception
  328. {
  329. List<String> actualProjectPaths = new ArrayList<>();
  330. actualProjectPaths.add( "org/apache/maven/A/1.0/A-1.0.pom" );
  331. actualProjectPaths.add( "org/apache/maven/B/2.0/B-2.0.pom" );
  332. actualProjectPaths.add( "org/apache/maven/B/1.0/B-1.0.pom" );
  333. actualProjectPaths.add( "org/apache/maven/C/1.0/C-1.0.pom" );
  334. actualProjectPaths.add( "org/apache/maven/update/test-not-updated/1.0/test-not-updated-1.0.pom" );
  335. actualProjectPaths.add( "org/apache/maven/update/test-updated/1.0/test-updated-1.0.pom" );
  336. actualProjectPaths.add( "org/apache/maven/discovery/1.0/discovery-1.0.pom" );
  337. actualProjectPaths.add( "org/apache/maven/samplejar/2.0/samplejar-2.0.pom" );
  338. actualProjectPaths.add( "org/apache/maven/samplejar/1.0/samplejar-1.0.pom" );
  339. actualProjectPaths.add( "org/apache/testgroup/discovery/1.0/discovery-1.0.pom" );
  340. ManagedRepository repository = createDefaultRepository();
  341. List<KnownRepositoryContentConsumer> knownConsumers = new ArrayList<>();
  342. KnownScanConsumer consumer = new KnownScanConsumer();
  343. consumer.setIncludes( new String[]{ "**/*.pom" } );
  344. knownConsumers.add( consumer );
  345. List<InvalidRepositoryContentConsumer> invalidConsumers = new ArrayList<>();
  346. InvalidScanConsumer badconsumer = new InvalidScanConsumer();
  347. invalidConsumers.add( badconsumer );
  348. RepositoryScanner scanner = lookupRepositoryScanner();
  349. RepositoryScanStatistics stats =
  350. scanner.scan( repository, knownConsumers, invalidConsumers, getIgnoreList(), RepositoryScanner.FRESH_SCAN );
  351. assertNotNull( "Stats should not be null.", stats );
  352. assertMinimumHits( "Stats.totalFileCount", actualProjectPaths.size(), stats.getTotalFileCount() );
  353. assertMinimumHits( "Processed Count", actualProjectPaths.size(), consumer.getProcessCount() );
  354. }
  355. @Test
  356. public void testLegacyRepositoryArtifactScanner()
  357. throws Exception
  358. {
  359. List<String> actualArtifactPaths = new ArrayList<>();
  360. actualArtifactPaths.add( "invalid/jars/1.0/invalid-1.0.jar" );
  361. actualArtifactPaths.add( "invalid/jars/invalid-1.0.rar" );
  362. actualArtifactPaths.add( "invalid/jars/invalid.jar" );
  363. actualArtifactPaths.add( "invalid/invalid-1.0.jar" );
  364. actualArtifactPaths.add( "javax.sql/jars/jdbc-2.0.jar" );
  365. actualArtifactPaths.add( "org.apache.maven/jars/some-ejb-1.0-client.jar" );
  366. actualArtifactPaths.add( "org.apache.maven/jars/testing-1.0.jar" );
  367. actualArtifactPaths.add( "org.apache.maven/jars/testing-1.0-sources.jar" );
  368. actualArtifactPaths.add( "org.apache.maven/jars/testing-UNKNOWN.jar" );
  369. actualArtifactPaths.add( "org.apache.maven/jars/testing-1.0.zip" );
  370. actualArtifactPaths.add( "org.apache.maven/jars/testing-1.0-20050611.112233-1.jar" );
  371. actualArtifactPaths.add( "org.apache.maven/jars/testing-1.0.tar.gz" );
  372. actualArtifactPaths.add( "org.apache.maven.update/jars/test-not-updated-1.0.jar" );
  373. actualArtifactPaths.add( "org.apache.maven.update/jars/test-updated-1.0.jar" );
  374. ManagedRepository repository = createLegacyRepository();
  375. List<KnownRepositoryContentConsumer> knownConsumers = new ArrayList<>();
  376. KnownScanConsumer consumer = new KnownScanConsumer();
  377. consumer.setIncludes( ARTIFACT_PATTERNS );
  378. knownConsumers.add( consumer );
  379. List<InvalidRepositoryContentConsumer> invalidConsumers = new ArrayList<>();
  380. InvalidScanConsumer badconsumer = new InvalidScanConsumer();
  381. invalidConsumers.add( badconsumer );
  382. RepositoryScanner scanner = lookupRepositoryScanner();
  383. RepositoryScanStatistics stats =
  384. scanner.scan( repository, knownConsumers, invalidConsumers, getIgnoreList(), RepositoryScanner.FRESH_SCAN );
  385. assertNotNull( "Stats should not be null.", stats );
  386. assertMinimumHits( "Stats.totalFileCount", actualArtifactPaths.size(), stats.getTotalFileCount() );
  387. assertMinimumHits( "Processed Count", actualArtifactPaths.size(), consumer.getProcessCount() );
  388. }
  389. }