You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ep...@apache.org on 2005/12/08 01:20:12 UTC

svn commit: r354916 - in /maven/repository-manager/trunk/maven-repository-reports-standard/src: main/java/org/apache/maven/repository/reporting/ test/java/org/apache/maven/repository/reporting/ test/repository/

Author: epunzalan
Date: Wed Dec  7 16:19:59 2005
New Revision: 354916

URL: http://svn.apache.org/viewcvs?rev=354916&view=rev
Log:
PR: MRM-17
Submitted by: Maria Odea Ching

Patch is for testing checksum of artifact and metadata files located in remote repository

Added:
    maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/maven-metadata-repository.xml   (with props)
Removed:
    maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/maven-metadata.xml
Modified:
    maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java
    maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java
    maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java

Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java?rev=354916&r1=354915&r2=354916&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java (original)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/main/java/org/apache/maven/repository/reporting/ChecksumArtifactReporter.java Wed Dec  7 16:19:59 2005
@@ -23,6 +23,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.net.URL;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 
@@ -47,6 +48,8 @@
 
     protected InputStream sha1InputStream;
 
+    private boolean isLocal = true;
+
     /**
      * Validate the checksum of the specified artifact.
      * @param model
@@ -60,13 +63,23 @@
         System.out.println( " " );
         System.out
             .println( "===================================== +++++  PROCESS ARTIFACT +++++ ====================================" );
-        
+
         String artifactUrl = "";
-        String repositoryUrl = repository.getUrl();
+        String repositoryUrl = "";
+
+        if ( !repository.getProtocol().equals( "file" ) )
+        {
+            isLocal = false;
+            repositoryUrl = repository.getUrl();
+        }
+        else
+        {
+            repositoryUrl = repository.getBasedir();
+        }
+
         artifactUrl = repositoryUrl + artifact.getGroupId() + "/" + artifact.getArtifactId() + "/"
             + artifact.getBaseVersion() + "/" + artifact.getArtifactId() + "-" + artifact.getBaseVersion() + "."
             + artifact.getType();
-        //System.out.println("ARTIFACT URL ------->>>> " + artifactUrl);
 
         //check if checksum files exist
         boolean md5Exists = getMD5File( artifactUrl );
@@ -107,9 +120,18 @@
         System.out
             .println( "====================================== +++++  PROCESS METADATA +++++ ==============================" );
 
-        String metadataUrl = "";
-        String repositoryUrl = repository.getUrl();
-        String filename = metadata.getRemoteFilename();
+        String metadataUrl = "", repositoryUrl = "", filename = "";
+        if ( !repository.getProtocol().equals( "file" ) )
+        {
+            isLocal = false;
+            repositoryUrl = repository.getUrl();
+            filename = metadata.getRemoteFilename();
+        }
+        else
+        {
+            repositoryUrl = repository.getBasedir();
+            filename = metadata.getLocalFilename( repository );
+        }
 
         //version metadata
         if ( metadata.storedInArtifactVersionDirectory() == true && metadata.storedInGroupDirectory() == false )
@@ -130,7 +152,6 @@
 
         //add the file name of the metadata
         metadataUrl = metadataUrl + filename;
-        //System.out.println( "METADATA URL -------> " + metadataUrl );
 
         //check if checksum files exist
         boolean md5Exists = getMD5File( metadataUrl );
@@ -171,7 +192,16 @@
     {
         try
         {
-            md5InputStream = new FileInputStream( filename + ".md5" );
+            if ( isLocal )
+            {
+                md5InputStream = new FileInputStream( filename + ".md5" );
+            }
+            else
+            {
+                URL url = new URL( filename );
+                md5InputStream = url.openStream();
+            }
+
             md5InputStream.close();
         }
         catch ( Exception e )
@@ -190,7 +220,15 @@
     {
         try
         {
-            sha1InputStream = new FileInputStream( filename + ".sha1" );
+            if ( isLocal )
+            {
+                sha1InputStream = new FileInputStream( filename + ".sha1" );
+            }
+            else
+            {
+                URL url = new URL( filename );
+                sha1InputStream = url.openStream();
+            }
             sha1InputStream.close();
         }
         catch ( Exception e )
@@ -223,9 +261,20 @@
 
                 //read the md5 file
                 chk2 = new byte[chk1.length];
-
                 File f = new File( fileUrl + ext );
-                InputStream is = new FileInputStream( f );
+                InputStream is = null;
+
+                //check whether the file is located locally or remotely
+                if ( isLocal )
+                {
+                    is = new FileInputStream( f );
+                }
+                else
+                {
+                    URL url = new URL( fileUrl + ext );
+                    is = url.openStream();
+                }
+
                 char[] chars = new char[is.available()];
                 InputStreamReader isr = new InputStreamReader( is );
                 isr.read( chars );
@@ -237,7 +286,7 @@
                 System.out.println( "-----" + algo + " Checksum value (CHK2 - content of CHECKSUM file) ::::: "
                     + chk2Str );
 
-                if ( chk2Str.equals( byteArrayToHexStr( chk1 ) ) )
+                if ( chk2Str.toUpperCase().equals( byteArrayToHexStr( chk1 ).toUpperCase() ) )
                 {
                     valid = true;
                 }
@@ -269,8 +318,19 @@
         throws FileNotFoundException, NoSuchAlgorithmException, IOException
     {
 
-        InputStream fis = new FileInputStream( filename );
+        InputStream fis = null;
         byte[] buffer = new byte[1024];
+
+        //check whether file is located locally or remotely
+        if ( isLocal )
+        {
+            fis = new FileInputStream( filename );
+        }
+        else
+        {
+            URL url = new URL( filename );
+            fis = url.openStream();
+        }
 
         MessageDigest complete = MessageDigest.getInstance( algo );
         int numRead;

Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java?rev=354916&r1=354915&r2=354916&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java (original)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/AbstractChecksumArtifactReporterTest.java Wed Dec  7 16:19:59 2005
@@ -48,7 +48,7 @@
 
     protected static final String[] invalidArtifactChecksumJars = { "invalidArtifact-1.0" };
 
-    protected static final String metadataChecksumFilename = "maven-metadata";
+    protected static final String metadataChecksumFilename = "maven-metadata-repository";
 
     public AbstractChecksumArtifactReporterTest()
     {
@@ -228,17 +228,10 @@
         {
             //create checksum for the metadata file..
             String repoUrl = repository.getBasedir();
-            //System.out.println("repoUrl ---->>> " + repoUrl);
-
-            System.out.println( "REPO URL :::: " + repoUrl );
-           // String[] split1 = repoUrl.split( "file:/" );
-           // split1[1] = split1[1] + "/";
-
             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 ) );
-            //System.out.println( "META FILE COPIED ---->>> " + copied );
 
             //Create md5 and sha-1 checksum files..
             byte[] md5chk = createChecksum( repoUrl + relativePath + filename + "." + type, "MD5" );

Modified: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java?rev=354916&r1=354915&r2=354916&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java (original)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/test/java/org/apache/maven/repository/reporting/ChecksumArtifactReporterTest.java Wed Dec  7 16:19:59 2005
@@ -47,6 +47,20 @@
 
     private MetadataReportProcessor metadataReportProcessor;
 
+    private static final String remoteRepoUrl = "http://public.planetmirror.com/pub/maven2/";
+
+    private static final String remoteArtifactGroup = "HTTPClient";
+
+    private static final String remoteArtifactId = "HTTPClient";
+
+    private static final String remoteArtifactVersion = "0.3-3";
+
+    private static final String remoteArtifactScope = "compile";
+
+    private static final String remoteArtifactType = "jar";
+
+    private static final String remoteRepoId = "remote-repo";
+
     public ChecksumArtifactReporterTest()
     {
 
@@ -75,7 +89,6 @@
 
     /**
      * Test creation of artifact with checksum files.
-     *
      */
     public void testCreateChecksumFile()
     {
@@ -89,7 +102,6 @@
         assertTrue( createMetadataFile( "INVALID" ) );
     }
 
-   
     /**
      * Test the ChecksumArtifactReporter when the checksum files are valid.
      */
@@ -101,18 +113,10 @@
             VersionRange version = VersionRange.createFromVersion( "1.0" );
             Artifact artifact = new DefaultArtifact( "checksumTest", "validArtifact", version, "compile", "jar", "",
                                                      handler );
-            ArtifactRepository repository = new DefaultArtifactRepository( "repository", System.getProperty( "basedir" )
-                + "/src/test/repository/", new DefaultRepositoryLayout() );
-
-            /*  VersionRange version = VersionRange.createFromVersion("0.3-3");
-             Artifact artifact = new DefaultArtifact("HTTPClient", "HTTPClient", version, "compile", "jar", "", 
-             handler);
-             ArtifactRepository repository = new DefaultArtifactRepository("remote-repo", "http://www.ibiblio.org/maven2/", 
-             new DefaultRepositoryLayout());
-             */
+            ArtifactRepository repository = new DefaultArtifactRepository( "repository", "file:/"
+                + System.getProperty( "basedir" ) + "/src/test/repository/", new DefaultRepositoryLayout() );
 
             artifactReportProcessor.processArtifact( null, artifact, reporter, repository );
-
             Iterator iter = reporter.getArtifactSuccessIterator();
             int ctr = 0;
             while ( iter.hasNext() )
@@ -141,8 +145,8 @@
             VersionRange version = VersionRange.createFromVersion( "1.0" );
             Artifact artifact = new DefaultArtifact( "checksumTest", "invalidArtifact", version, "compile", "jar", "",
                                                      handler );
-            ArtifactRepository repository = new DefaultArtifactRepository( "repository", System.getProperty( "basedir" )
-                + "/src/test/repository/", new DefaultRepositoryLayout() );
+            ArtifactRepository repository = new DefaultArtifactRepository( "repository", "file:/"
+                + System.getProperty( "basedir" ) + "/src/test/repository/", new DefaultRepositoryLayout() );
 
             artifactReportProcessor.processArtifact( null, artifact, reporter, repository );
 
@@ -162,14 +166,18 @@
         }
     }
 
+    /**
+     * Test the valid checksum of a metadata file. 
+     * The reporter should report 2 success validation.
+     */
     public void testChecksumMetadataReporterSuccess()
     {
 
         try
         {
             ArtifactHandler handler = new DefaultArtifactHandler( "jar" );
-            ArtifactRepository repository = new DefaultArtifactRepository( "repository", System.getProperty( "basedir" )
-                + "/src/test/repository/", new DefaultRepositoryLayout() );
+            ArtifactRepository repository = new DefaultArtifactRepository( "repository", "file:/"
+                + System.getProperty( "basedir" ) + "/src/test/repository/", new DefaultRepositoryLayout() );
             VersionRange version = VersionRange.createFromVersion( "1.0" );
             Artifact artifact = new DefaultArtifact( "checksumTest", "validArtifact", version, "compile", "jar", "",
                                                      handler );
@@ -193,14 +201,18 @@
         }
     }
 
+    /**
+     * Test the corrupted checksum of a metadata file. 
+     * The reporter must report 2 failures.
+     */
     public void testChecksumMetadataReporterFailure()
     {
 
         try
         {
             ArtifactHandler handler = new DefaultArtifactHandler( "jar" );
-            ArtifactRepository repository = new DefaultArtifactRepository( "repository", System.getProperty( "basedir" )
-                + "/src/test/repository/", new DefaultRepositoryLayout() );
+            ArtifactRepository repository = new DefaultArtifactRepository( "repository", "file:/"
+                + System.getProperty( "basedir" ) + "/src/test/repository/", new DefaultRepositoryLayout() );
             VersionRange version = VersionRange.createFromVersion( "1.0" );
             Artifact artifact = new DefaultArtifact( "checksumTest", "invalidArtifact", version, "compile", "jar", "",
                                                      handler );
@@ -223,11 +235,70 @@
             e.printStackTrace();
         }
     }
-    
-   
-    public void testDeleteTestDirectory(){        
-        String[] split = super.repository.getUrl().split("file:/");
-        assertTrue(deleteTestDirectory(new File(split[1] + "checksumTest") ));
-    }    
+
+    /**
+     * Test the checksum of an artifact located in a remote location.
+     */
+    public void testChecksumArtifactRemote()
+    {
+        ArtifactHandler handler = new DefaultArtifactHandler( remoteArtifactType );
+        VersionRange version = VersionRange.createFromVersion( remoteArtifactVersion );
+        Artifact artifact = new DefaultArtifact( remoteArtifactGroup, remoteArtifactId, version, remoteArtifactScope,
+                                                 remoteArtifactType, "", handler );
+        ArtifactRepository repository = new DefaultArtifactRepository( remoteRepoId, remoteRepoUrl,
+                                                                       new DefaultRepositoryLayout() );
+
+        artifactReportProcessor.processArtifact( null, artifact, reporter, repository );
+        Iterator iter = reporter.getArtifactSuccessIterator();
+        int ctr = 0;
+        while ( iter.hasNext() )
+        {
+            ArtifactResult result = (ArtifactResult) iter.next();
+            ctr++;
+        }
+        System.out.println( "[REMOTE] ARTIFACT Number of success --- " + ctr );
+    }
+
+    /**
+     * Test the checksum of a metadata file located in a remote location.
+     */
+    public void testChecksumMetadataRemote()
+    {
+
+        try
+        {
+            ArtifactHandler handler = new DefaultArtifactHandler( remoteArtifactType );
+            VersionRange version = VersionRange.createFromVersion( remoteArtifactVersion );
+            Artifact artifact = new DefaultArtifact( remoteArtifactGroup, remoteArtifactId, version,
+                                                     remoteArtifactScope, remoteArtifactType, "", handler );
+            ArtifactRepository repository = new DefaultArtifactRepository( remoteRepoId, remoteRepoUrl,
+                                                                           new DefaultRepositoryLayout() );
+            RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact );
+
+            metadataReportProcessor.processMetadata( metadata, repository, reporter );
+            Iterator iter = reporter.getRepositoryMetadataFailureIterator();
+            int ctr = 0;
+            while ( iter.hasNext() )
+            {
+                RepositoryMetadataResult result = (RepositoryMetadataResult) iter.next();
+                ctr++;
+            }
+            System.out.println( "[REMOTE] REPORT METADATA Number of sucess --- " + ctr );
+
+        }
+        catch ( Exception e )
+        {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Test deletion of the test directories created.
+     */
+    public void testDeleteTestDirectory()
+    {
+        String[] split = super.repository.getUrl().split( "file:/" );
+        assertTrue( deleteTestDirectory( new File( split[1] + "checksumTest" ) ) );
+    }
 
 }

Added: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/maven-metadata-repository.xml
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/maven-metadata-repository.xml?rev=354916&view=auto
==============================================================================
--- maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/maven-metadata-repository.xml (added)
+++ maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/maven-metadata-repository.xml Wed Dec  7 16:19:59 2005
@@ -0,0 +1,5 @@
+<metadata>
+<groupId>checksumTest</groupId>
+<artifactId>invalidArtifact</artifactId>
+<version>1.0</version>
+</metadata>

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/maven-metadata-repository.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/repository-manager/trunk/maven-repository-reports-standard/src/test/repository/maven-metadata-repository.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"