| #! /usr/bin/env python |
| |
| # Spot checks some published artifacts to be sure that they uploaded correctly |
| # to the release repository |
| |
| import requests |
| import sys |
| import sha |
| import os |
| |
| |
| from requests.auth import HTTPBasicAuth |
| |
| if len(sys.argv) != 4: |
| print "usage: check-uploaded-maven-artifact version buildRoot repoRoot" |
| sys.exit(1) |
| |
| version = sys.argv[1] |
| buildRoot = sys.argv[2] |
| repoRoot = sys.argv[3] |
| |
| def checkArtifact(localPath, remoteUrl): |
| |
| repoResponse = requests.head(remoteUrl) |
| |
| if repoResponse.status_code != 200: |
| print 'Cannot find jar file artifact' |
| print repoResponse.text |
| sys.exit(1) |
| |
| remoteSize = int(repoResponse.headers['content-length']) |
| etag = repoResponse.headers['etag'] |
| |
| localSize = os.path.getsize(localPath) |
| |
| localArtifact = open(localPath) |
| localArtifactSha = sha.new(localArtifact.read()) |
| expectedSha1 = localArtifactSha.hexdigest() |
| |
| if localSize != remoteSize: |
| print 'Size is wrong local ' + str(localSize) + ' but found remote ' + str(remoteSize) |
| sys.exit(1) |
| |
| sha1 = '' |
| if '{SHA1{' in etag: |
| # this is a sonatype style artifact |
| sha1 = etag[7:len(etag)-3] |
| else: |
| sha1 = repoResponse.headers['x-checksum-sha1'] |
| |
| if sha1 != expectedSha1: |
| print 'SHA1 hash is wrong expected ' + expectedSha1 + ' but found ' + sha1 |
| sys.exit(1) |
| |
| def checkArtifactsForComponent(version, name, component, buildRoot, repoRoot): |
| localArtifactRootPath = buildRoot + '/buck-out/gen/' + component |
| localArtifactJarPath = localArtifactRootPath + '/lib__' + name + '__output/' + name + '.jar' |
| localArtifactJavadocPath = localArtifactRootPath + '/' + name + '#javadoc,maven-sources.jar' |
| localArtifactSourcesPath = localArtifactRootPath + '/' + name + '#maven,src-sources.jar' |
| |
| remoteArtifactBaseUrl = repoRoot + '/org/onosproject/' + name + '/' + version + '/' + name + '-' + version |
| remoteArtifactJarUrl = remoteArtifactBaseUrl + '.jar' |
| remoteArtifactJavadocUrl = remoteArtifactBaseUrl + '-javadoc.jar' |
| remoteArtifactSourcesUrl = remoteArtifactBaseUrl + '-sources.jar' |
| |
| checkArtifact(localArtifactJarPath, remoteArtifactJarUrl) |
| checkArtifact(localArtifactJavadocPath, remoteArtifactJavadocUrl) |
| checkArtifact(localArtifactSourcesPath, remoteArtifactSourcesUrl) |
| |
| checkArtifactsForComponent(version, 'onos-api', 'core/api', buildRoot, repoRoot) |
| checkArtifactsForComponent(version, 'onos-protocols-openflow-api', 'protocols/openflow/api', buildRoot, repoRoot) |
| checkArtifactsForComponent(version, 'onos-drivers-ciena', 'drivers/ciena', buildRoot, repoRoot) |
| checkArtifactsForComponent(version, 'onos-providers-lldp', 'providers/lldp', buildRoot, repoRoot) |
| checkArtifactsForComponent(version, 'onos-apps-bgprouter', 'apps/bgprouter', buildRoot, repoRoot) |
| |