Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

RepositoryScannerTest.java 21KB

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