mirror of https://github.com/apache/archiva.git
[MRM-1293] adjust the EditManagedRepositoryAction to delete statistics when the repository location changes.
git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/MRM-1025@888185 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
7c7fffc71c
commit
1dad23aaf3
|
@ -118,4 +118,9 @@ public class TestMetadataRepository
|
||||||
{
|
{
|
||||||
//To change body of implemented methods use File | Settings | File Templates.
|
//To change body of implemented methods use File | Settings | File Templates.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void removeMetadataFacets( String repositoryId, String facetId )
|
||||||
|
{
|
||||||
|
//To change body of implemented methods use File | Settings | File Templates.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,11 @@ public class TestRepositoryStatisticsManager
|
||||||
stats.add( repositoryStatistics );
|
stats.add( repositoryStatistics );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteStatistics( String repositoryId )
|
||||||
|
{
|
||||||
|
repoStats.remove( repositoryId );
|
||||||
|
}
|
||||||
|
|
||||||
private List<RepositoryStatistics> getStatsList( String repositoryId )
|
private List<RepositoryStatistics> getStatsList( String repositoryId )
|
||||||
{
|
{
|
||||||
List<RepositoryStatistics> stats = repoStats.get( repositoryId );
|
List<RepositoryStatistics> stats = repoStats.get( repositoryId );
|
||||||
|
|
|
@ -21,19 +21,13 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.opensymphony.xwork2.Preparable;
|
import com.opensymphony.xwork2.Preparable;
|
||||||
import com.opensymphony.xwork2.Validateable;
|
import com.opensymphony.xwork2.Validateable;
|
||||||
|
import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.maven.archiva.configuration.Configuration;
|
import org.apache.maven.archiva.configuration.Configuration;
|
||||||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
||||||
import org.apache.maven.archiva.database.ArchivaDAO;
|
|
||||||
import org.apache.maven.archiva.database.ArchivaDatabaseException;
|
|
||||||
import org.apache.maven.archiva.database.ObjectNotFoundException;
|
|
||||||
import org.apache.maven.archiva.database.RepositoryContentStatisticsDAO;
|
|
||||||
import org.apache.maven.archiva.database.constraints.RepositoryContentStatisticsByRepositoryConstraint;
|
|
||||||
import org.apache.maven.archiva.model.RepositoryContentStatistics;
|
|
||||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||||
import org.codehaus.plexus.redback.role.RoleManagerException;
|
import org.codehaus.plexus.redback.role.RoleManagerException;
|
||||||
import org.codehaus.plexus.scheduler.CronExpressionValidator;
|
import org.codehaus.plexus.scheduler.CronExpressionValidator;
|
||||||
|
@ -58,9 +52,9 @@ public class EditManagedRepositoryAction
|
||||||
private final String action = "editRepository";
|
private final String action = "editRepository";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @plexus.requirement role-hint="jdo"
|
* @plexus.requirement
|
||||||
*/
|
*/
|
||||||
private ArchivaDAO archivaDAO;
|
private RepositoryStatisticsManager repositoryStatisticsManager;
|
||||||
|
|
||||||
public void prepare()
|
public void prepare()
|
||||||
{
|
{
|
||||||
|
@ -145,16 +139,6 @@ public class EditManagedRepositoryAction
|
||||||
addActionError( "Role Manager Exception: " + e.getMessage() );
|
addActionError( "Role Manager Exception: " + e.getMessage() );
|
||||||
result = ERROR;
|
result = ERROR;
|
||||||
}
|
}
|
||||||
catch ( ObjectNotFoundException e )
|
|
||||||
{
|
|
||||||
addActionError( e.getMessage() );
|
|
||||||
result = ERROR;
|
|
||||||
}
|
|
||||||
catch ( ArchivaDatabaseException e )
|
|
||||||
{
|
|
||||||
addActionError( e.getMessage() );
|
|
||||||
result = ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -171,20 +155,8 @@ public class EditManagedRepositoryAction
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetStatistics()
|
private void resetStatistics()
|
||||||
throws ObjectNotFoundException, ArchivaDatabaseException
|
|
||||||
{
|
{
|
||||||
RepositoryContentStatisticsDAO repoContentStatsDao = archivaDAO.getRepositoryContentStatisticsDAO();
|
repositoryStatisticsManager.deleteStatistics( repository.getId() );
|
||||||
|
|
||||||
List<RepositoryContentStatistics> contentStats = repoContentStatsDao.queryRepositoryContentStatistics(
|
|
||||||
new RepositoryContentStatisticsByRepositoryConstraint( repository.getId() ) );
|
|
||||||
|
|
||||||
if ( contentStats != null )
|
|
||||||
{
|
|
||||||
for ( RepositoryContentStatistics stats : contentStats )
|
|
||||||
{
|
|
||||||
repoContentStatsDao.deleteRepositoryContentStatistics( stats );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRepoid()
|
public String getRepoid()
|
||||||
|
@ -212,10 +184,8 @@ public class EditManagedRepositoryAction
|
||||||
return action;
|
return action;
|
||||||
}
|
}
|
||||||
|
|
||||||
// for testing
|
public void setRepositoryStatisticsManager( RepositoryStatisticsManager repositoryStatisticsManager )
|
||||||
|
|
||||||
public void setArchivaDAO( ArchivaDAO archivaDao )
|
|
||||||
{
|
{
|
||||||
this.archivaDAO = archivaDao;
|
this.repositoryStatisticsManager = repositoryStatisticsManager;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,28 +19,22 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
import com.opensymphony.xwork2.Action;
|
import com.opensymphony.xwork2.Action;
|
||||||
|
import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
|
||||||
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
||||||
import org.apache.maven.archiva.configuration.Configuration;
|
import org.apache.maven.archiva.configuration.Configuration;
|
||||||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
||||||
import org.apache.maven.archiva.database.ArchivaDAO;
|
|
||||||
import org.apache.maven.archiva.database.RepositoryContentStatisticsDAO;
|
|
||||||
import org.apache.maven.archiva.database.constraints.RepositoryContentStatisticsByRepositoryConstraint;
|
|
||||||
import org.apache.maven.archiva.model.RepositoryContentStatistics;
|
|
||||||
import org.apache.maven.archiva.security.ArchivaRoleConstants;
|
import org.apache.maven.archiva.security.ArchivaRoleConstants;
|
||||||
import org.codehaus.plexus.redback.role.RoleManager;
|
import org.codehaus.plexus.redback.role.RoleManager;
|
||||||
|
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
|
||||||
import org.codehaus.redback.integration.interceptor.SecureActionBundle;
|
import org.codehaus.redback.integration.interceptor.SecureActionBundle;
|
||||||
import org.codehaus.redback.integration.interceptor.SecureActionException;
|
import org.codehaus.redback.integration.interceptor.SecureActionException;
|
||||||
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
|
|
||||||
import org.easymock.MockControl;
|
import org.easymock.MockControl;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EditManagedRepositoryActionTest
|
* EditManagedRepositoryActionTest
|
||||||
*
|
*
|
||||||
|
@ -59,14 +53,6 @@ public class EditManagedRepositoryActionTest
|
||||||
|
|
||||||
private ArchivaConfiguration archivaConfiguration;
|
private ArchivaConfiguration archivaConfiguration;
|
||||||
|
|
||||||
private MockControl archivaDaoControl;
|
|
||||||
|
|
||||||
private ArchivaDAO archivaDao;
|
|
||||||
|
|
||||||
private MockControl repoContentStatsDaoControl;
|
|
||||||
|
|
||||||
private RepositoryContentStatisticsDAO repoContentStatsDao;
|
|
||||||
|
|
||||||
private static final String REPO_ID = "repo-ident";
|
private static final String REPO_ID = "repo-ident";
|
||||||
|
|
||||||
private File location;
|
private File location;
|
||||||
|
@ -92,13 +78,6 @@ public class EditManagedRepositoryActionTest
|
||||||
roleManager = (RoleManager) roleManagerControl.getMock();
|
roleManager = (RoleManager) roleManagerControl.getMock();
|
||||||
action.setRoleManager( roleManager );
|
action.setRoleManager( roleManager );
|
||||||
location = getTestFile( "target/test/location" );
|
location = getTestFile( "target/test/location" );
|
||||||
|
|
||||||
archivaDaoControl = MockControl.createControl( ArchivaDAO.class );
|
|
||||||
archivaDao = (ArchivaDAO) archivaDaoControl.getMock();
|
|
||||||
action.setArchivaDAO( archivaDao );
|
|
||||||
|
|
||||||
repoContentStatsDaoControl = MockControl.createControl( RepositoryContentStatisticsDAO.class );
|
|
||||||
repoContentStatsDao = (RepositoryContentStatisticsDAO) repoContentStatsDaoControl.getMock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSecureActionBundle()
|
public void testSecureActionBundle()
|
||||||
|
@ -204,24 +183,15 @@ public class EditManagedRepositoryActionTest
|
||||||
|
|
||||||
archivaConfigurationControl.replay();
|
archivaConfigurationControl.replay();
|
||||||
|
|
||||||
archivaDaoControl.expectAndReturn( archivaDao.getRepositoryContentStatisticsDAO(), repoContentStatsDao );
|
MockControl repositoryStatisticsManagerControl = MockControl.createControl( RepositoryStatisticsManager.class );
|
||||||
|
RepositoryStatisticsManager repositoryStatisticsManager =
|
||||||
|
(RepositoryStatisticsManager) repositoryStatisticsManagerControl.getMock();
|
||||||
|
action.setRepositoryStatisticsManager( repositoryStatisticsManager );
|
||||||
|
|
||||||
archivaDaoControl.replay();
|
repositoryStatisticsManager.deleteStatistics( REPO_ID );
|
||||||
|
|
||||||
repoContentStatsDao.queryRepositoryContentStatistics(
|
repositoryStatisticsManagerControl.replay();
|
||||||
new RepositoryContentStatisticsByRepositoryConstraint( REPO_ID ) );
|
|
||||||
repoContentStatsDaoControl.setMatcher( MockControl.ALWAYS_MATCHER );
|
|
||||||
|
|
||||||
List<RepositoryContentStatistics> repoStats = createRepositoryContentStatisticsList();
|
|
||||||
repoContentStatsDaoControl.setReturnValue( repoStats );
|
|
||||||
|
|
||||||
repoContentStatsDao.deleteRepositoryContentStatistics( repoStats.get( 0 ) );
|
|
||||||
repoContentStatsDaoControl.setVoidCallable();
|
|
||||||
repoContentStatsDao.deleteRepositoryContentStatistics( repoStats.get( 1 ) );
|
|
||||||
repoContentStatsDaoControl.setVoidCallable();
|
|
||||||
|
|
||||||
repoContentStatsDaoControl.replay();
|
|
||||||
|
|
||||||
action.setRepoid( REPO_ID );
|
action.setRepoid( REPO_ID );
|
||||||
action.prepare();
|
action.prepare();
|
||||||
assertEquals( REPO_ID, action.getRepoid() );
|
assertEquals( REPO_ID, action.getRepoid() );
|
||||||
|
@ -236,8 +206,7 @@ public class EditManagedRepositoryActionTest
|
||||||
|
|
||||||
roleManagerControl.verify();
|
roleManagerControl.verify();
|
||||||
archivaConfigurationControl.verify();
|
archivaConfigurationControl.verify();
|
||||||
archivaDaoControl.verify();
|
repositoryStatisticsManagerControl.verify();
|
||||||
repoContentStatsDaoControl.verify();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertRepositoryEquals( ManagedRepositoryConfiguration expectedRepository,
|
private void assertRepositoryEquals( ManagedRepositoryConfiguration expectedRepository,
|
||||||
|
@ -288,30 +257,4 @@ public class EditManagedRepositoryActionTest
|
||||||
repository.setScanned( false );
|
repository.setScanned( false );
|
||||||
repository.setDeleteReleasedSnapshots( true );
|
repository.setDeleteReleasedSnapshots( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<RepositoryContentStatistics> createRepositoryContentStatisticsList()
|
|
||||||
{
|
|
||||||
List<RepositoryContentStatistics> repoStatsList = new ArrayList<RepositoryContentStatistics>();
|
|
||||||
|
|
||||||
repoStatsList.add( createRepositoryContentStatistics() );
|
|
||||||
repoStatsList.add( createRepositoryContentStatistics() );
|
|
||||||
|
|
||||||
return repoStatsList;
|
|
||||||
}
|
|
||||||
|
|
||||||
private RepositoryContentStatistics createRepositoryContentStatistics()
|
|
||||||
{
|
|
||||||
RepositoryContentStatistics repoStats = new RepositoryContentStatistics();
|
|
||||||
repoStats.setRepositoryId( REPO_ID );
|
|
||||||
repoStats.setDuration( 1000 );
|
|
||||||
repoStats.setTotalArtifactCount( 100 );
|
|
||||||
repoStats.setTotalSize( 10 );
|
|
||||||
repoStats.setTotalFileCount( 10 );
|
|
||||||
repoStats.setTotalProjectCount( 2 );
|
|
||||||
repoStats.setTotalGroupCount( 1 );
|
|
||||||
repoStats.setNewFileCount( 3 );
|
|
||||||
repoStats.setWhenGathered( new Date( System.currentTimeMillis() ) );
|
|
||||||
|
|
||||||
return repoStats;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,4 +118,9 @@ public class TestMetadataRepository
|
||||||
{
|
{
|
||||||
//To change body of implemented methods use File | Settings | File Templates.
|
//To change body of implemented methods use File | Settings | File Templates.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void removeMetadataFacets( String repositoryId, String facetId )
|
||||||
|
{
|
||||||
|
//To change body of implemented methods use File | Settings | File Templates.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,4 +54,6 @@ public interface MetadataRepository
|
||||||
MetadataFacet getMetadataFacet( String repositoryId, String facetId, String name );
|
MetadataFacet getMetadataFacet( String repositoryId, String facetId, String name );
|
||||||
|
|
||||||
void addMetadataFacet( String repositoryId, String facetId, String name, MetadataFacet metadataFacet );
|
void addMetadataFacet( String repositoryId, String facetId, String name, MetadataFacet metadataFacet );
|
||||||
|
|
||||||
|
void removeMetadataFacets( String repositoryId, String facetId );
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,6 +49,7 @@ import org.apache.archiva.metadata.model.ProjectVersionMetadata;
|
||||||
import org.apache.archiva.metadata.model.ProjectVersionReference;
|
import org.apache.archiva.metadata.model.ProjectVersionReference;
|
||||||
import org.apache.archiva.metadata.model.Scm;
|
import org.apache.archiva.metadata.model.Scm;
|
||||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -296,6 +297,19 @@ public class FileMetadataRepository
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void removeMetadataFacets( String repositoryId, String facetId )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
FileUtils.deleteDirectory( getMetadataDirectory( repositoryId, facetId ) );
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
// TODO!
|
||||||
|
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private File getMetadataDirectory( String repositoryId, String facetId )
|
private File getMetadataDirectory( String repositoryId, String facetId )
|
||||||
{
|
{
|
||||||
return new File( this.directory, repositoryId + "/.meta/" + facetId );
|
return new File( this.directory, repositoryId + "/.meta/" + facetId );
|
||||||
|
|
|
@ -160,6 +160,35 @@ public class FileMetadataRepositoryTest
|
||||||
assertTrue( facets.isEmpty() );
|
assertTrue( facets.isEmpty() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testRemoveFacets()
|
||||||
|
{
|
||||||
|
List<String> facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
|
||||||
|
assertTrue( facets.isEmpty() );
|
||||||
|
|
||||||
|
repository.removeMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
|
||||||
|
|
||||||
|
facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
|
||||||
|
assertTrue( facets.isEmpty() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRemoveFacetsWhenEmpty()
|
||||||
|
{
|
||||||
|
repository.addMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME, new TestMetadataFacet( TEST_VALUE ) );
|
||||||
|
|
||||||
|
List<String> facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
|
||||||
|
assertFalse( facets.isEmpty() );
|
||||||
|
|
||||||
|
repository.removeMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
|
||||||
|
|
||||||
|
facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
|
||||||
|
assertTrue( facets.isEmpty() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRemoveFacetsWhenUnknown()
|
||||||
|
{
|
||||||
|
repository.removeMetadataFacets( TEST_REPO_ID, UNKNOWN );
|
||||||
|
}
|
||||||
|
|
||||||
private static class TestMetadataFacet
|
private static class TestMetadataFacet
|
||||||
implements MetadataFacet
|
implements MetadataFacet
|
||||||
{
|
{
|
||||||
|
|
|
@ -73,6 +73,11 @@ public class DefaultRepositoryStatisticsManager
|
||||||
repositoryStatistics );
|
repositoryStatistics );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteStatistics( String repositoryId )
|
||||||
|
{
|
||||||
|
metadataRepository.removeMetadataFacets( repositoryId, RepositoryStatistics.FACET_ID );
|
||||||
|
}
|
||||||
|
|
||||||
public void setMetadataRepository( MetadataRepository metadataRepository )
|
public void setMetadataRepository( MetadataRepository metadataRepository )
|
||||||
{
|
{
|
||||||
this.metadataRepository = metadataRepository;
|
this.metadataRepository = metadataRepository;
|
||||||
|
|
|
@ -24,4 +24,6 @@ public interface RepositoryStatisticsManager
|
||||||
RepositoryStatistics getLastStatistics( String repositoryId );
|
RepositoryStatistics getLastStatistics( String repositoryId );
|
||||||
|
|
||||||
void addStatisticsAfterScan( String repositoryId, RepositoryStatistics repositoryStatistics );
|
void addStatisticsAfterScan( String repositoryId, RepositoryStatistics repositoryStatistics );
|
||||||
|
|
||||||
|
void deleteStatistics( String repositoryId );
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,24 +113,17 @@ public class RepositoryStatisticsManagerTest
|
||||||
Date current = new Date();
|
Date current = new Date();
|
||||||
Date startTime = new Date( current.getTime() - 12345 );
|
Date startTime = new Date( current.getTime() - 12345 );
|
||||||
|
|
||||||
RepositoryStatistics stats = new RepositoryStatistics();
|
RepositoryStatistics stats1 = createTestStats( startTime, current );
|
||||||
stats.setScanStartTime( startTime );
|
|
||||||
stats.setScanEndTime( current );
|
|
||||||
stats.setTotalArtifactFileSize( 1400032000L );
|
|
||||||
stats.setNewFileCount( 45 );
|
|
||||||
stats.setTotalArtifactCount( 10412 );
|
|
||||||
stats.setTotalProjectCount( 2036 );
|
|
||||||
stats.setTotalGroupCount( 531 );
|
|
||||||
stats.setTotalFileCount( 56345 );
|
|
||||||
|
|
||||||
String startTimeAsString = DefaultRepositoryStatisticsManager.SCAN_TIMESTAMP.format( startTime );
|
String startTimeAsString = DefaultRepositoryStatisticsManager.SCAN_TIMESTAMP.format( startTime );
|
||||||
metadataRepository.addMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, startTimeAsString, stats );
|
metadataRepository.addMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, startTimeAsString, stats1 );
|
||||||
metadataRepositoryControl.expectAndReturn(
|
metadataRepositoryControl.expectAndReturn(
|
||||||
metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
|
metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
|
||||||
Arrays.asList( startTimeAsString ) );
|
Arrays.asList( startTimeAsString ) );
|
||||||
metadataRepositoryControl.expectAndReturn(
|
metadataRepositoryControl.expectAndReturn(
|
||||||
metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, startTimeAsString ),
|
metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, startTimeAsString ),
|
||||||
stats );
|
stats1 );
|
||||||
|
RepositoryStatistics stats = stats1;
|
||||||
|
|
||||||
metadataRepositoryControl.replay();
|
metadataRepositoryControl.replay();
|
||||||
|
|
||||||
|
@ -149,4 +142,77 @@ public class RepositoryStatisticsManagerTest
|
||||||
|
|
||||||
metadataRepositoryControl.verify();
|
metadataRepositoryControl.verify();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testDeleteStats()
|
||||||
|
{
|
||||||
|
Date current = new Date();
|
||||||
|
|
||||||
|
Date startTime1 = new Date( current.getTime() - 12345 );
|
||||||
|
RepositoryStatistics stats1 = createTestStats( startTime1, new Date( current.getTime() - 6000 ) );
|
||||||
|
String startTimeAsString1 = DefaultRepositoryStatisticsManager.SCAN_TIMESTAMP.format( startTime1 );
|
||||||
|
metadataRepository.addMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, startTimeAsString1, stats1 );
|
||||||
|
|
||||||
|
Date startTime2 = new Date( current.getTime() - 3000 );
|
||||||
|
RepositoryStatistics stats2 = createTestStats( startTime2, current );
|
||||||
|
String startTimeAsString2 = DefaultRepositoryStatisticsManager.SCAN_TIMESTAMP.format( startTime2 );
|
||||||
|
metadataRepository.addMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, startTimeAsString2, stats2 );
|
||||||
|
|
||||||
|
metadataRepositoryControl.expectAndReturn(
|
||||||
|
metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
|
||||||
|
Arrays.asList( startTimeAsString1, startTimeAsString2 ) );
|
||||||
|
metadataRepositoryControl.expectAndReturn(
|
||||||
|
metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryStatistics.FACET_ID, startTimeAsString2 ),
|
||||||
|
stats2 );
|
||||||
|
|
||||||
|
metadataRepository.removeMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID );
|
||||||
|
|
||||||
|
metadataRepositoryControl.expectAndReturn(
|
||||||
|
metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
|
||||||
|
Collections.emptyList() );
|
||||||
|
|
||||||
|
metadataRepositoryControl.replay();
|
||||||
|
|
||||||
|
repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, stats1 );
|
||||||
|
repositoryStatisticsManager.addStatisticsAfterScan( TEST_REPO_ID, stats2 );
|
||||||
|
|
||||||
|
assertNotNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
repositoryStatisticsManager.deleteStatistics( TEST_REPO_ID );
|
||||||
|
|
||||||
|
assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
metadataRepositoryControl.verify();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDeleteStatsWhenEmpty()
|
||||||
|
{
|
||||||
|
metadataRepositoryControl.expectAndReturn(
|
||||||
|
metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID ),
|
||||||
|
Collections.emptyList(), 2 );
|
||||||
|
metadataRepository.removeMetadataFacets( TEST_REPO_ID, RepositoryStatistics.FACET_ID );
|
||||||
|
|
||||||
|
metadataRepositoryControl.replay();
|
||||||
|
|
||||||
|
assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
repositoryStatisticsManager.deleteStatistics( TEST_REPO_ID );
|
||||||
|
|
||||||
|
assertNull( repositoryStatisticsManager.getLastStatistics( TEST_REPO_ID ) );
|
||||||
|
|
||||||
|
metadataRepositoryControl.verify();
|
||||||
|
}
|
||||||
|
|
||||||
|
private RepositoryStatistics createTestStats( Date startTime, Date endTime )
|
||||||
|
{
|
||||||
|
RepositoryStatistics stats = new RepositoryStatistics();
|
||||||
|
stats.setScanStartTime( startTime );
|
||||||
|
stats.setScanEndTime( endTime );
|
||||||
|
stats.setTotalArtifactFileSize( 1400032000L );
|
||||||
|
stats.setNewFileCount( 45 );
|
||||||
|
stats.setTotalArtifactCount( 10412 );
|
||||||
|
stats.setTotalProjectCount( 2036 );
|
||||||
|
stats.setTotalGroupCount( 531 );
|
||||||
|
stats.setTotalFileCount( 56345 );
|
||||||
|
return stats;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue