<version>${jettyVersion}</version>
<scope>runtime</scope>
</dependency>
-
+ <dependency>
+ <groupId>com.zaxxer</groupId>
+ <artifactId>HikariCP</artifactId>
+ <scope>runtime</scope>
+ </dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<artifactId>ant</artifactId>
<scope>runtime</scope>
</dependency>
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-jdbc</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-juli</artifactId>
- <scope>runtime</scope>
- </dependency>
</dependencies>
<build>
<plugins>
<New id="users" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/users</Arg>
<Arg>
- <New class="org.apache.tomcat.jdbc.pool.DataSource">
+ <New class="com.zaxxer.hikari.HikariDataSource">
<Set name="driverClassName">org.apache.derby.jdbc.EmbeddedDriver</Set>
- <Set name="url">jdbc:derby:<SystemProperty name="appserver.base" default=".."/>/data/databases/users;create=true</Set>
+ <Set name="jdbcUrl">jdbc:derby:<SystemProperty name="appserver.base" default=".."/>/data/databases/users;create=true</Set>
<Set name="username">sa</Set>
- <Set name="maxActive">20</Set>
- <Set name="removeAbandoned">true</Set>
- <Set name="logAbandoned">true</Set>
- <Set name="initialSize">5</Set>
- <Set name="testOnBorrow">true</Set>
+ <Set name="maximumPoolSize">20</Set>
+ <Set name="minimumIdle">5</Set>
<!-- very rigourous sql query validation -->
- <Set name="validationQuery">select 1</Set>
+ <!--Set name="connectionTestQuery">select 1</Set-->
</New>
</Arg>
</New>
+ <!--
<New id="usersShutdown" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/usersShutdown</Arg>
<Arg>
- <New class="org.apache.tomcat.jdbc.pool.DataSource">
+ <New class="com.zaxxer.hikari.HikariDataSource">
<Set name="driverClassName">org.apache.derby.jdbc.EmbeddedDriver</Set>
- <Set name="url">jdbc:derby:<SystemProperty name="appserver.base" default=".."/>/data/databases/users</Set>
+ <Set name="jdbcUrl">jdbc:derby:<SystemProperty name="appserver.base" default=".."/>/data/databases/users</Set>
<Set name="username">sa</Set>
</New>
</Arg>
</New>
-
+ -->
</Configure>
@Inject
private RepositoryContentConsumers repositoryContentConsumers;
- private Set<RepositoryScannerInstance> inProgressScans = new LinkedHashSet<RepositoryScannerInstance>();
+ private Set<RepositoryScannerInstance> inProgressScans = new LinkedHashSet<>();
@Override
public RepositoryScanStatistics scan( ManagedRepository repository, long changesSince )
--- /dev/null
+package org.apache.archiva.scheduler.repository;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.archiva.configuration.ArchivaConfiguration;
+import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
+import org.apache.archiva.mock.MockRepositorySessionFactory;
+import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutor;
+import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
+import org.apache.commons.lang.StringUtils;
+import org.codehaus.plexus.util.FileUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import java.io.File;
+import java.util.Calendar;
+import java.util.List;
+
+import static org.mockito.Mockito.mock;
+
+/**
+ * ArchivaRepositoryScanningTaskExecutorPhase1Test
+ */
+@RunWith( ArchivaSpringJUnit4ClassRunner.class )
+@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
+@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD )
+public abstract class AbstractArchivaRepositoryScanningTaskExecutorTest
+ extends TestCase
+{
+ @Inject
+ @Named( value = "taskExecutor#test-repository-scanning" )
+ protected TaskExecutor taskExecutor;
+
+ @Inject
+ @Named( value = "archivaConfiguration#test-repository-scanning" )
+ protected ArchivaConfiguration archivaConfig;
+
+ @Inject
+ @Named( value = "repositoryStatisticsManager#test" )
+ protected RepositoryStatisticsManager repositoryStatisticsManager;
+
+ @Inject
+ @Named( value = "knownRepositoryContentConsumer#test-consumer" )
+ protected TestConsumer testConsumer;
+
+ @Inject
+ @Named( value = "repositorySessionFactory#mock" )
+ private MockRepositorySessionFactory factory;
+
+ protected File repoDir;
+
+ protected static final String TEST_REPO_ID = "testRepo";
+
+ protected MetadataRepository metadataRepository;
+
+ @Before
+ @Override
+ public void setUp()
+ throws Exception
+ {
+ super.setUp();
+
+ File sourceRepoDir = new File( "./src/test/repositories/default-repository" );
+ repoDir = new File( "./target/default-repository" );
+
+ FileUtils.deleteDirectory( repoDir );
+ assertFalse( "Default Test Repository should not exist.", repoDir.exists() );
+
+ repoDir.mkdir();
+
+ FileUtils.copyDirectoryStructure( sourceRepoDir, repoDir );
+ // set the timestamps to a time well in the past
+ Calendar cal = Calendar.getInstance();
+ cal.add( Calendar.YEAR, -1 );
+ FileUtils.getFiles( repoDir, "**", null ) //
+ .stream().forEach( file -> file.setLastModified( cal.getTimeInMillis() ) );
+
+ // TODO: test they are excluded instead
+ for ( String dir : FileUtils.getDirectoryNames( repoDir, "**/.svn", null, false ) )
+ {
+ FileUtils.deleteDirectory( new File( repoDir, dir ) );
+ }
+
+ assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() );
+
+ assertNotNull( archivaConfig );
+
+ // Create it
+ ManagedRepositoryConfiguration repositoryConfiguration = new ManagedRepositoryConfiguration();
+ repositoryConfiguration.setId( TEST_REPO_ID );
+ repositoryConfiguration.setName( "Test Repository" );
+ repositoryConfiguration.setLocation( repoDir.getAbsolutePath() );
+ archivaConfig.getConfiguration().getManagedRepositories().clear();
+ archivaConfig.getConfiguration().addManagedRepository( repositoryConfiguration );
+
+ metadataRepository = mock( MetadataRepository.class );
+
+ factory.setRepository( metadataRepository );
+ }
+
+ @After
+ @Override
+ public void tearDown()
+ throws Exception
+ {
+ FileUtils.deleteDirectory( repoDir );
+
+ assertFalse( repoDir.exists() );
+
+ super.tearDown();
+ }
+
+}
+++ /dev/null
-package org.apache.archiva.scheduler.repository;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import junit.framework.TestCase;
-import org.apache.archiva.configuration.ArchivaConfiguration;
-import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
-import org.apache.archiva.metadata.repository.MetadataRepository;
-import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
-import org.apache.archiva.mock.MockRepositorySessionFactory;
-import org.apache.archiva.redback.components.taskqueue.execution.TaskExecutor;
-import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
-import org.codehaus.plexus.util.FileUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.runner.RunWith;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import java.io.File;
-import java.util.Calendar;
-import java.util.List;
-
-import static org.mockito.Mockito.mock;
-
-/**
- * ArchivaRepositoryScanningTaskExecutorPhase1Test
- */
-@RunWith( ArchivaSpringJUnit4ClassRunner.class )
-@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
-@DirtiesContext( classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD )
-public abstract class ArchivaRepositoryScanningTaskExecutorAbstractTest
- extends TestCase
-{
- @Inject
- @Named( value = "taskExecutor#test-repository-scanning" )
- protected TaskExecutor taskExecutor;
-
- @Inject
- @Named( value = "archivaConfiguration#test-repository-scanning" )
- protected ArchivaConfiguration archivaConfig;
-
- @Inject
- @Named( value = "repositoryStatisticsManager#test" )
- protected RepositoryStatisticsManager repositoryStatisticsManager;
-
- @Inject
- @Named( value = "knownRepositoryContentConsumer#test-consumer" )
- protected TestConsumer testConsumer;
-
- @Inject
- @Named( value = "repositorySessionFactory#mock" )
- private MockRepositorySessionFactory factory;
-
- protected File repoDir;
-
- protected static final String TEST_REPO_ID = "testRepo";
-
- protected MetadataRepository metadataRepository;
-
- @Before
- @Override
- public void setUp()
- throws Exception
- {
- super.setUp();
-
- File sourceRepoDir = new File( "./src/test/repositories/default-repository" );
- repoDir = new File( "./target/default-repository" );
-
- FileUtils.deleteDirectory( repoDir );
- assertFalse( "Default Test Repository should not exist.", repoDir.exists() );
-
- repoDir.mkdir();
-
- FileUtils.copyDirectoryStructure( sourceRepoDir, repoDir );
- // set the timestamps to a time well in the past
- Calendar cal = Calendar.getInstance();
- cal.add( Calendar.YEAR, -1 );
- for ( File f : (List<File>) FileUtils.getFiles( repoDir, "**", null ) )
- {
- f.setLastModified( cal.getTimeInMillis() );
- }
- // TODO: test they are excluded instead
- for ( String dir : (List<String>) FileUtils.getDirectoryNames( repoDir, "**/.svn", null, false ) )
- {
- FileUtils.deleteDirectory( new File( repoDir, dir ) );
- }
-
- assertTrue( "Default Test Repository should exist.", repoDir.exists() && repoDir.isDirectory() );
-
- assertNotNull( archivaConfig );
-
- // Create it
- ManagedRepositoryConfiguration repositoryConfiguration = new ManagedRepositoryConfiguration();
- repositoryConfiguration.setId( TEST_REPO_ID );
- repositoryConfiguration.setName( "Test Repository" );
- repositoryConfiguration.setLocation( repoDir.getAbsolutePath() );
- archivaConfig.getConfiguration().getManagedRepositories().clear();
- archivaConfig.getConfiguration().addManagedRepository( repositoryConfiguration );
-
- metadataRepository = mock( MetadataRepository.class );
-
- factory.setRepository( metadataRepository );
- }
-
- @After
- @Override
- public void tearDown()
- throws Exception
- {
- FileUtils.deleteDirectory( repoDir );
-
- assertFalse( repoDir.exists() );
-
- super.tearDown();
- }
-
-}
*/
@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
public class ArchivaRepositoryScanningTaskExecutorPhase1Test
- extends ArchivaRepositoryScanningTaskExecutorAbstractTest
+ extends AbstractArchivaRepositoryScanningTaskExecutorTest
{
// Split of ArchivaRepositoryScanningTaskExecutorTest should be executed first
// to avoid testConsumer in unknown state if member of Phase2 all ready executed
/**
* ArchivaRepositoryScanningTaskExecutorPhase2Test
- *
- *
*/
@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
public class ArchivaRepositoryScanningTaskExecutorPhase2Test
- extends ArchivaRepositoryScanningTaskExecutorAbstractTest
+ extends AbstractArchivaRepositoryScanningTaskExecutorTest
{
@Test
public void testExecutorScanOnlyNewArtifacts()
throws Exception
{
+ createAndSaveTestStats();
+
RepositoryTask repoTask = new RepositoryTask();
repoTask.setRepositoryId( TEST_REPO_ID );
repoTask.setScanAll( false );
-
- createAndSaveTestStats();
-
taskExecutor.executeTask( repoTask );
// check no artifacts processed
RepositoryStatistics newStats =
repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
assertEquals( 0, newStats.getNewFileCount() );
- assertEquals( 31, newStats.getTotalFileCount() );
+ assertEquals( 41, newStats.getTotalFileCount() );
// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// assertEquals( 8, newStats.getTotalArtifactCount() );
// assertEquals( 3, newStats.getTotalGroupCount() );
RepositoryStatistics updatedStats =
repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
assertEquals( 2, updatedStats.getNewFileCount() );
- assertEquals( 33, updatedStats.getTotalFileCount() );
+ assertEquals( 43, updatedStats.getTotalFileCount() );
// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// assertEquals( 8, newStats.getTotalArtifactCount() );
// assertEquals( 3, newStats.getTotalGroupCount() );
RepositoryStatistics newStats =
repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
assertEquals( 2, newStats.getNewFileCount() );
- assertEquals( 33, newStats.getTotalFileCount() );
+ assertEquals( 43, newStats.getTotalFileCount() );
// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// assertEquals( 8, newStats.getTotalArtifactCount() );
// assertEquals( 3, newStats.getTotalGroupCount() );
RepositoryStatistics newStats =
repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
assertEquals( 2, newStats.getNewFileCount() );
- assertEquals( 33, newStats.getTotalFileCount() );
+ assertEquals( 43, newStats.getTotalFileCount() );
// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation
// assertEquals( 8, newStats.getTotalArtifactCount() );
// assertEquals( 3, newStats.getTotalGroupCount() );
repoTask.setScanAll( true );
Date date = Calendar.getInstance().getTime();
- repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID,
- new Date( date.getTime() - 1234567 ), date, 8, 8 );
+ repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID, //
+ new Date( date.getTime() - 1234567 ), //
+ date, 8, 8 ); //
taskExecutor.executeTask( repoTask );
throws MetadataRepositoryException
{
Date date = Calendar.getInstance().getTime();
- RepositoryStatistics stats = new RepositoryStatistics();
- stats.setScanStartTime( new Date( date.getTime() - 1234567 ) );
- stats.setScanEndTime( date );
- stats.setNewFileCount( 31 );
- stats.setTotalArtifactCount( 8 );
- stats.setTotalFileCount( 31 );
- stats.setTotalGroupCount( 3 );
- stats.setTotalProjectCount( 5 );
- stats.setTotalArtifactFileSize( 38545 );
-
- repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID,
- new Date( date.getTime() - 1234567 ), date, 31, 31 );
+
+ repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID, //
+ new Date( date.getTime() - 1234567 ), date, //
+ 41, 41 );
}
}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+
+<configuration>
+ <appenders>
+ <Console name="console" target="SYSTEM_OUT">
+ <PatternLayout pattern="%d [%t] %-5p %c %x - %m%n"/>
+ </Console>
+ </appenders>
+ <loggers>
+
+ <logger name="org.springframework" level="error"/>
+ <logger name="org.apache.archiva" level="debug"/>
+ <root level="info">
+ <appender-ref ref="console"/>
+ </root>
+ </loggers>
+</configuration>
+
+
<jackrabbit.version>2.14.1</jackrabbit.version>
<cxf.version>3.0.3</cxf.version>
- <derbyVersion>10.10.1.1</derbyVersion>
+ <derbyVersion>10.13.1.1</derbyVersion>
<httpclient.version>4.5.2</httpclient.version>
<httpclient.core.version>4.4.4</httpclient.core.version>
<javaxMailVersion>1.4</javaxMailVersion>
<plexus-digest.version>1.1</plexus-digest.version>
<plexus-expression-evaluator.version>2.1</plexus-expression-evaluator.version>
<plexus-utils.version>3.0.15</plexus-utils.version>
- <tomcat7Version>7.0.54</tomcat7Version>
<htmlUnitVersion>2.27</htmlUnitVersion>
<release.preparationGoals>clean install</release.preparationGoals>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
- <version>3.2.1</version>
+ <version>3.3.6</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.zaxxer</groupId>
+ <artifactId>HikariCP</artifactId>
+ <version>2.6.3</version>
</dependency>
<!--
<artifactId>commons-lang</artifactId>
<version>${commons-lang.version}</version>
</dependency>
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-jdbc</artifactId>
- <version>${tomcat7Version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-juli</artifactId>
- <version>${tomcat7Version}</version>
- </dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>