From d193ee2ea0434be5bbf672386ce59be74f8dbb61 Mon Sep 17 00:00:00 2001 From: "Edwin L. Punzalan" Date: Fri, 9 Dec 2005 02:18:36 +0000 Subject: [PATCH] PR: MRM-17 Submitted by: Maria Odea Ching Additional unit tests git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@355319 13f79535-47bb-0310-9956-ffa450edef68 --- .../reporting/ChecksumArtifactReporter.java | 49 +++++--- .../AbstractChecksumArtifactReporterTest.java | 70 +++++++++--- .../ChecksumArtifactReporterTest.java | 106 ++++++++++++++---- 3 files changed, 169 insertions(+), 56 deletions(-) diff --git a/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java b/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java index d236531e6..8127ce6ce 100644 --- a/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java +++ b/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java @@ -34,10 +34,7 @@ import org.apache.maven.artifact.repository.*; /** * This class reports invalid and mismatched checksums of artifacts and metadata files. - * It validates MD5 and SHA-1 chacksums. - * - * @TODO - * - Validate using remote repository. + * It validates MD5 and SHA-1 checksums. */ public class ChecksumArtifactReporter implements ArtifactReportProcessor, MetadataReportProcessor @@ -60,9 +57,9 @@ public class ChecksumArtifactReporter public void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter, ArtifactRepository repository ) { - System.out.println( " " ); - System.out - .println( "===================================== +++++ PROCESS ARTIFACT +++++ ====================================" ); + //System.out.println( " " ); + //System.out + // .println( "===================================== +++++ PROCESS ARTIFACT +++++ ====================================" ); String artifactUrl = ""; String repositoryUrl = ""; @@ -96,6 +93,10 @@ public class ChecksumArtifactReporter reporter.addFailure( artifact, "MD5 checksum does not match." ); } } + else + { + reporter.addFailure( artifact, "MD5 checksum file does not exist." ); + } if ( sha1Exists ) { @@ -108,6 +109,10 @@ public class ChecksumArtifactReporter reporter.addFailure( artifact, "SHA-1 checksum does not match." ); } } + else + { + reporter.addFailure( artifact, "SHA-1 checksum file does not exist." ); + } } /** @@ -116,9 +121,9 @@ public class ChecksumArtifactReporter */ public void processMetadata( RepositoryMetadata metadata, ArtifactRepository repository, ArtifactReporter reporter ) { - System.out.println( " " ); - System.out - .println( "====================================== +++++ PROCESS METADATA +++++ ==============================" ); + // System.out.println( " " ); + // System.out + // .println( "====================================== +++++ PROCESS METADATA +++++ ==============================" ); String metadataUrl = "", repositoryUrl = "", filename = ""; if ( !repository.getProtocol().equals( "file" ) ) @@ -133,20 +138,20 @@ public class ChecksumArtifactReporter filename = metadata.getLocalFilename( repository ); } - //version metadata if ( metadata.storedInArtifactVersionDirectory() == true && metadata.storedInGroupDirectory() == false ) { + //version metadata metadataUrl = repositoryUrl + metadata.getGroupId() + "/" + metadata.getArtifactId() + "/" + metadata.getBaseVersion() + "/"; - //group metadata } else if ( metadata.storedInArtifactVersionDirectory() == false && metadata.storedInGroupDirectory() == true ) { + //group metadata metadataUrl = repositoryUrl + metadata.getGroupId() + "/"; - //artifact metadata } else { + //artifact metadata metadataUrl = repositoryUrl + metadata.getGroupId() + "/" + metadata.getArtifactId() + "/"; } @@ -168,6 +173,10 @@ public class ChecksumArtifactReporter reporter.addFailure( metadata, "MD5 checksum does not match." ); } } + else + { + reporter.addFailure( metadata, "MD5 checksum file does not exist." ); + } if ( sha1Exists ) { @@ -180,6 +189,10 @@ public class ChecksumArtifactReporter reporter.addFailure( metadata, "SHA-1 checksum does not match." ); } } + else + { + reporter.addFailure( metadata, "SHA-1 checksum file does not exist." ); + } } @@ -281,10 +294,10 @@ public class ChecksumArtifactReporter isr.close(); String chk2Str = new String( chars ); - System.out.println( "-----" + algo + " Checksum value (CHK1 - created checksum for jar file) ::::: " - + byteArrayToHexStr( chk1 ) ); - System.out.println( "-----" + algo + " Checksum value (CHK2 - content of CHECKSUM file) ::::: " - + chk2Str ); + //System.out.println( "-----" + algo + " Checksum value (CHK1 - created checksum for jar file) ::::: " + // + byteArrayToHexStr( chk1 ) ); + // System.out.println( "-----" + algo + " Checksum value (CHK2 - content of CHECKSUM file) ::::: " + // + chk2Str ); if ( chk2Str.toUpperCase().equals( byteArrayToHexStr( chk1 ).toUpperCase() ) ) { @@ -300,7 +313,7 @@ public class ChecksumArtifactReporter } catch ( Exception e ) { - e.printStackTrace(); + //e.printStackTrace(); return valid; } } diff --git a/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java b/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java index 423192ff1..74c823bc8 100644 --- a/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java +++ b/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java @@ -35,9 +35,6 @@ import java.util.jar.JarOutputStream; import org.codehaus.plexus.util.FileUtils; /** - * @TODO - * - Create more valid and invalid artifacts & metadata files for further testing. - * * This class creates the artifact and metadata files used for testing the ChecksumArtifactReporter. * It is extended by ChecksumArtifactReporterTest class. */ @@ -115,6 +112,8 @@ public class AbstractChecksumArtifactReporterTest if ( type.equals( "VALID" ) ) { writeMetadataFile( "checksumTest/validArtifact/1.0/", metadataChecksumFilename, "xml", true ); + writeMetadataFile( "checksumTest/validArtifact/", metadataChecksumFilename, "xml", true ); + writeMetadataFile( "checksumTest/", metadataChecksumFilename, "xml", true ); } else if ( type.equals( "INVALID" ) ) @@ -135,8 +134,8 @@ public class AbstractChecksumArtifactReporterTest */ private boolean writeChecksumFile( String relativePath, String filename, String type, boolean isValid ) { - System.out.println( " " ); - System.out.println( "========================= ARTIFACT CHECKSUM ==================================" ); + //System.out.println( " " ); + //System.out.println( "========================= ARTIFACT CHECKSUM ==================================" ); //Initialize variables for creating jar files FileOutputStream f = null; @@ -145,9 +144,6 @@ public class AbstractChecksumArtifactReporterTest try { String dirs = filename.replace( '-', '/' ); - //String[] split1 = repoUrl.split( "file:/" ); - //split1[1] = split1[1] + "/"; - //create the group level directory of the artifact File dirFiles = new File( repoUrl + relativePath + dirs ); @@ -175,8 +171,8 @@ public class AbstractChecksumArtifactReporterTest //Create md5 and sha-1 checksum files.. byte[] md5chk = createChecksum( repoUrl + relativePath + dirs + "/" + filename + "." + type, "MD5" ); byte[] sha1chk = createChecksum( repoUrl + relativePath + dirs + "/" + filename + "." + type, "SHA-1" ); - System.out.println( "----- CREATED MD5 checksum ::: " + byteArrayToHexStr( md5chk ) ); - System.out.println( "----- CREATED SHA-1 checksum ::: " + byteArrayToHexStr( sha1chk ) ); + //System.out.println( "----- CREATED MD5 checksum ::: " + byteArrayToHexStr( md5chk ) ); + //System.out.println( "----- CREATED SHA-1 checksum ::: " + byteArrayToHexStr( sha1chk ) ); File file = null; @@ -222,22 +218,21 @@ public class AbstractChecksumArtifactReporterTest */ private boolean writeMetadataFile( String relativePath, String filename, String type, boolean isValid ) { - System.out.println( " " ); - System.out.println( "========================= METADATA CHECKSUM ==================================" ); + // System.out.println( " " ); + // System.out.println( "========================= METADATA CHECKSUM ==================================" ); try { //create checksum for the metadata file.. String repoUrl = repository.getBasedir(); String url = repository.getBasedir() + "/" + filename + "." + type; - //boolean copied = copyFile( url, repoUrl + relativePath + filename + "." + type ); FileUtils.copyFile( new File( url ), new File( repoUrl + relativePath + filename + "." + type ) ); //Create md5 and sha-1 checksum files.. byte[] md5chk = createChecksum( repoUrl + relativePath + filename + "." + type, "MD5" ); byte[] sha1chk = createChecksum( repoUrl + relativePath + filename + "." + type, "SHA-1" ); - System.out.println( "----- CREATED MD5 checksum ::: " + byteArrayToHexStr( md5chk ) ); - System.out.println( "----- CREATED SHA-1 checksum ::: " + byteArrayToHexStr( sha1chk ) ); + //System.out.println( "----- CREATED MD5 checksum ::: " + byteArrayToHexStr( md5chk ) ); + //System.out.println( "----- CREATED SHA-1 checksum ::: " + byteArrayToHexStr( sha1chk ) ); File file = null; @@ -375,4 +370,49 @@ public class AbstractChecksumArtifactReporterTest return b; } + private boolean deleteFile( String filename ) + { + File f = new File( filename ); + return f.delete(); + } + + /** + * + * @return + */ + protected boolean deleteChecksumFiles( String type ) + { + + boolean b = true; + + //delete valid checksum files of artifacts created + for ( int i = 0; i < validArtifactChecksumJars.length; i++ ) + { + b = deleteFile( repository.getBasedir() + "checksumTest/" + validArtifactChecksumJars[i].replace( '-', '/' ) + + "/" + validArtifactChecksumJars[i] + "." + type + ".md5" ); + if ( b == false ) + return b; + + b = deleteFile( repository.getBasedir() + "checksumTest/" + validArtifactChecksumJars[i].replace( '-', '/' ) + + "/" + validArtifactChecksumJars[i] + "." + type + ".sha1" ); + if ( b == false ) + return b; + } + + //delete valid checksum files of metadata file + for ( int i = 0; i < validArtifactChecksumJars.length; i++ ) + { + b = deleteFile( repository.getBasedir() + "checksumTest/" + validArtifactChecksumJars[i].replace( '-', '/' ) + + "/" + metadataChecksumFilename + ".xml.md5" ); + if ( b == false ) + return b; + + b = deleteFile( repository.getBasedir() + "checksumTest/" + validArtifactChecksumJars[i].replace( '-', '/' ) + + "/" + metadataChecksumFilename + ".xml.sha1" ); + if ( b == false ) + return b; + } + return b; + } + } diff --git a/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java b/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java index f5c40ecd7..b2662745b 100644 --- a/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java +++ b/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java @@ -26,15 +26,13 @@ import org.apache.maven.artifact.handler.DefaultArtifactHandler; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.DefaultArtifactRepository; import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; +import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata; +import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata; import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata; import org.apache.maven.artifact.versioning.VersionRange; -/** - * @TODO - * - Test with multiple success and multiple failures - * - Test using remote repository - * +/** * This class tests the ChecksumArtifactReporter. * It extends the AbstractChecksumArtifactReporterTest class. */ @@ -72,19 +70,12 @@ public class ChecksumArtifactReporterTest super.setUp(); artifactReportProcessor = (ArtifactReportProcessor) lookup( ArtifactReportProcessor.ROLE, "default" ); metadataReportProcessor = (MetadataReportProcessor) lookup( MetadataReportProcessor.ROLE, "checksum-metadata" ); - - // boolean b = createChecksumFile( "VALID" ); - // b = createChecksumFile( "INVALID" ); - // b = createMetadataFile( "VALID" ); - // b = createMetadataFile( "INVALID" ); } public void tearDown() throws Exception { super.tearDown(); - //String[] split = super.repository.getUrl().split("file:/"); - //boolean b = deleteTestDirectory(new File(split[1] + "checksumTest") ); } /** @@ -96,6 +87,9 @@ public class ChecksumArtifactReporterTest assertTrue( createChecksumFile( "INVALID" ) ); } + /** + * Test creation of metadata file together with its checksums. + */ public void testCreateMetadataFile() { assertTrue( createMetadataFile( "VALID" ) ); @@ -124,7 +118,7 @@ public class ChecksumArtifactReporterTest ArtifactResult result = (ArtifactResult) iter.next(); ctr++; } - System.out.println( "ARTIFACT Number of success --- " + ctr ); + //System.out.println( "ARTIFACT Number of success --- " + ctr ); } catch ( Exception e ) @@ -157,7 +151,7 @@ public class ChecksumArtifactReporterTest ArtifactResult result = (ArtifactResult) iter.next(); ctr++; } - System.out.println( "ARTIFACT Number of failures --- " + ctr ); + //System.out.println( "ARTIFACT Number of failures --- " + ctr ); } catch ( Exception e ) @@ -182,9 +176,19 @@ public class ChecksumArtifactReporterTest Artifact artifact = new DefaultArtifact( "checksumTest", "validArtifact", version, "compile", "jar", "", handler ); + //Version level metadata RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact ); + metadataReportProcessor.processMetadata( metadata, repository, reporter ); + + //Artifact level metadata + metadata = new ArtifactRepositoryMetadata( artifact ); metadataReportProcessor.processMetadata( metadata, repository, reporter ); + + + //Group level metadata + metadata = new GroupRepositoryMetadata( "checksumTest" ); + metadataReportProcessor.processMetadata( metadata, repository, reporter ); Iterator iter = reporter.getRepositoryMetadataSuccessIterator(); int ctr = 0; while ( iter.hasNext() ) @@ -192,8 +196,8 @@ public class ChecksumArtifactReporterTest RepositoryMetadataResult result = (RepositoryMetadataResult) iter.next(); ctr++; } - System.out.println( "REPORT METADATA Number of success --- " + ctr ); - + //System.out.println( "METADATA Number of success --- " + ctr ); + } catch ( Exception e ) { @@ -227,7 +231,7 @@ public class ChecksumArtifactReporterTest RepositoryMetadataResult result = (RepositoryMetadataResult) iter.next(); ctr++; } - System.out.println( "REPORT METADATA Number of failures --- " + ctr ); + //System.out.println( "METADATA Number of failures --- " + ctr ); } catch ( Exception e ) @@ -256,7 +260,7 @@ public class ChecksumArtifactReporterTest ArtifactResult result = (ArtifactResult) iter.next(); ctr++; } - System.out.println( "[REMOTE] ARTIFACT Number of success --- " + ctr ); + //System.out.println( "[REMOTE] ARTIFACT Number of success --- " + ctr ); } /** @@ -273,6 +277,7 @@ public class ChecksumArtifactReporterTest remoteArtifactScope, remoteArtifactType, "", handler ); ArtifactRepository repository = new DefaultArtifactRepository( remoteRepoId, remoteRepoUrl, new DefaultRepositoryLayout() ); + RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact ); metadataReportProcessor.processMetadata( metadata, repository, reporter ); @@ -283,8 +288,8 @@ public class ChecksumArtifactReporterTest RepositoryMetadataResult result = (RepositoryMetadataResult) iter.next(); ctr++; } - System.out.println( "[REMOTE] REPORT METADATA Number of sucess --- " + ctr ); - + //System.out.println( "[REMOTE] METADATA in version directory, Number of sucess --- " + ctr ); + } catch ( Exception e ) { @@ -295,10 +300,65 @@ public class ChecksumArtifactReporterTest /** * Test deletion of the test directories created. */ - public void testDeleteTestDirectory() + public void testDeleteChecksumFiles() { - String[] split = super.repository.getUrl().split( "file:/" ); - assertTrue( deleteTestDirectory( new File( split[1] + "checksumTest" ) ) ); + //System.out.println("TESTDELETE CHECKSUM FILES....." + deleteChecksumFiles("jar")); + + assertTrue( deleteChecksumFiles("jar")); + } + + /** + * Test deletion of the test directories created. + */ + public void testDeleteTestDirectory() + { + assertTrue( deleteTestDirectory( new File( repository.getBasedir() + "checksumTest" ) ) ); } + /** + * Test the conditional when the checksum files of the artifact & metadata do not exist. + */ + public void testChecksumFilesDoNotExist(){ + createChecksumFile("VALID"); + createMetadataFile("VALID"); + boolean b = deleteChecksumFiles("jar"); + + try + { + ArtifactHandler handler = new DefaultArtifactHandler( "jar" ); + VersionRange version = VersionRange.createFromVersion( "1.0" ); + Artifact artifact = new DefaultArtifact( "checksumTest", "validArtifact", version, "compile", "jar", "", + handler ); + ArtifactRepository repository = new DefaultArtifactRepository( "repository", "file:/" + + System.getProperty( "basedir" ) + "/src/test/repository/", new DefaultRepositoryLayout() ); + + artifactReportProcessor.processArtifact( null, artifact, reporter, repository ); + Iterator iter = reporter.getArtifactFailureIterator(); + int ctr = 0; + while ( iter.hasNext() ) + { + ArtifactResult result = (ArtifactResult) iter.next(); + ctr++; + } + //System.out.println( "[FILE DOES NOT EXIST] ARTIFACT Number of failures --- " + ctr ); + + RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact ); + metadataReportProcessor.processMetadata( metadata, repository, reporter ); + + iter = reporter.getRepositoryMetadataFailureIterator(); + ctr = 0; + while ( iter.hasNext() ) + { + RepositoryMetadataResult result = (RepositoryMetadataResult) iter.next(); + ctr++; + } + //System.out.println( "[FILE DOES NOT EXIST] METADATA Number of failures --- " + ctr ); + } + catch ( Exception e ) + { + e.printStackTrace(); + } + + b = deleteTestDirectory( new File( repository.getBasedir() + "checksumTest" ) ); + } } -- 2.39.5