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.

RepositoryScannerTest.java 21KB

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