From patchwork Tue Feb 2 03:04:55 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Meneghel Rodrigues X-Patchwork-Id: 76208 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o1235MkZ010461 for ; Tue, 2 Feb 2010 03:05:22 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754105Ab0BBDFS (ORCPT ); Mon, 1 Feb 2010 22:05:18 -0500 Received: from mx1.redhat.com ([209.132.183.28]:59165 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753925Ab0BBDFK (ORCPT ); Mon, 1 Feb 2010 22:05:10 -0500 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o1235648005639 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 1 Feb 2010 22:05:07 -0500 Received: from localhost.localdomain (vpn-9-172.rdu.redhat.com [10.11.9.172]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o1234x9R002186; Mon, 1 Feb 2010 22:05:05 -0500 From: Lucas Meneghel Rodrigues To: autotest@test.kernel.org Cc: kvm@vger.kernel.org, jadmanski@google.com, Lucas Meneghel Rodrigues Subject: [PATCH 2/3] Autotest: Porting all hash operations to use utils.hash Date: Tue, 2 Feb 2010 01:04:55 -0200 Message-Id: <1265079896-5337-2-git-send-email-lmr@redhat.com> In-Reply-To: <1265079896-5337-1-git-send-email-lmr@redhat.com> References: <1265079896-5337-1-git-send-email-lmr@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Tue, 02 Feb 2010 03:05:22 +0000 (UTC) diff --git a/client/tests/kvm/kvm_utils.py b/client/tests/kvm/kvm_utils.py index f8089f7..da7c543 100644 --- a/client/tests/kvm/kvm_utils.py +++ b/client/tests/kvm/kvm_utils.py @@ -4,7 +4,7 @@ KVM test utility functions. @copyright: 2008-2009 Red Hat Inc. """ -import md5, sha, thread, subprocess, time, string, random, socket, os, signal +import thread, subprocess, time, string, random, socket, os, signal import select, re, logging, commands, cPickle, pty from autotest_lib.client.bin import utils from autotest_lib.client.common_lib import error @@ -788,13 +788,7 @@ def hash_file(filename, size=None, method="md5"): size = fsize f = open(filename, 'rb') - if method == "md5": - hash = md5.new() - elif method == "sha1": - hash = sha.new() - else: - logging.error("Unknown hash type %s, returning None" % method) - return None + hash = utils.hash(method) while size > 0: if chunksize > size: @@ -851,11 +845,7 @@ def unmap_url_cache(cachedir, url, expected_hash, method="md5"): failure_counter = 0 while not file_hash == expected_hash: if os.path.isfile(file_local_path): - if method == "md5": - file_hash = hash_file(file_local_path, method="md5") - elif method == "sha1": - file_hash = hash_file(file_local_path, method="sha1") - + file_hash = hash_file(file_local_path, method) if file_hash == expected_hash: # File is already at the expected position and ready to go src = file_from_url diff --git a/client/tests/kvm/ppm_utils.py b/client/tests/kvm/ppm_utils.py index 8ff31da..90ff46d 100644 --- a/client/tests/kvm/ppm_utils.py +++ b/client/tests/kvm/ppm_utils.py @@ -4,8 +4,8 @@ Utility functions to deal with ppm (qemu screendump format) files. @copyright: Red Hat 2008-2009 """ -import md5, os, struct, time, re - +import os, struct, time, re +from autotest_lib.client.bin import utils # Some directory/filename utils, for consistency @@ -120,9 +120,9 @@ def image_md5sum(width, height, data): @data: PPM file data """ header = "P6\n%d %d\n255\n" % (width, height) - md5obj = md5.new(header) - md5obj.update(data) - return md5obj.hexdigest() + hash = utils.hash('md5', header) + hash.update(data) + return hash.hexdigest() def get_region_md5sum(width, height, data, x1, y1, dx, dy, diff --git a/client/tests/kvm/tests/steps.py b/client/tests/kvm/tests/steps.py index 456fb44..8ebe7c1 100644 --- a/client/tests/kvm/tests/steps.py +++ b/client/tests/kvm/tests/steps.py @@ -4,7 +4,7 @@ Utilities to perform automatic guest installation using step files. @copyright: Red Hat 2008-2009 """ -import os, time, md5, re, shutil, logging +import os, time, re, shutil, logging from autotest_lib.client.common_lib import utils, error import kvm_utils, ppm_utils, kvm_subprocess try: diff --git a/frontend/afe/rpc_utils.py b/frontend/afe/rpc_utils.py index 8b993a8..91b796d 100644 --- a/frontend/afe/rpc_utils.py +++ b/frontend/afe/rpc_utils.py @@ -624,18 +624,3 @@ def interleave_entries(queue_entries, special_tasks): return interleaved_entries - -def get_sha1_hash(source): - """Gets the SHA-1 hash of the source string - - @param source The string to hash - """ - if sys.version_info < (2,5): - import sha - digest = sha.new() - else: - import hashlib - digest = hashlib.sha1() - - digest.update(source) - return digest.hexdigest() diff --git a/frontend/planner/models.py b/frontend/planner/models.py index c4d8988..7f62471 100644 --- a/frontend/planner/models.py +++ b/frontend/planner/models.py @@ -3,7 +3,7 @@ import common from autotest_lib.frontend.afe import models as afe_models from autotest_lib.frontend.afe import model_logic, rpc_utils from autotest_lib.frontend.tko import models as tko_models -from autotest_lib.client.common_lib import enum +from autotest_lib.client.common_lib import enum, utils class Plan(dbmodels.Model): @@ -102,7 +102,7 @@ class ControlFile(model_logic.ModelWithHash): @classmethod def _compute_hash(cls, **kwargs): - return rpc_utils.get_sha1_hash(kwargs['contents']) + return utils.hash('sha1', kwargs['contents']).hexdigest() def __unicode__(self): @@ -322,8 +322,8 @@ class KeyVal(model_logic.ModelWithHash): @classmethod def _compute_hash(cls, **kwargs): - round1 = rpc_utils.get_sha1_hash(kwargs['key']) - return rpc_utils.get_sha1_hash(round1 + kwargs['value']) + round1 = utils.hash('sha1', kwargs['key']).hexdigest() + return utils.hash('sha1', round1 + kwargs['value']).hexdigest() def __unicode__(self): diff --git a/tko/models.py b/tko/models.py index bc70074..8f06049 100644 --- a/tko/models.py +++ b/tko/models.py @@ -1,4 +1,4 @@ -import os, md5 +import os from autotest_lib.client.common_lib import utils from autotest_lib.tko import utils as tko_utils @@ -63,7 +63,7 @@ class kernel(object): @staticmethod def compute_hash(base, hashes): key_string = ','.join([base] + hashes) - return md5.new(key_string).hexdigest() + return utils.hash('md5', key_string).hexdigest() class test(object): diff --git a/tko/parsers/version_1_unittest.py b/tko/parsers/version_1_unittest.py index 5110fe8..f0ccf55 100755 --- a/tko/parsers/version_1_unittest.py +++ b/tko/parsers/version_1_unittest.py @@ -1,8 +1,9 @@ #!/usr/bin/python -import unittest, datetime, time, md5 +import unittest, datetime, time import common +from autotest_lib.client.common_lib import utils from autotest_lib.tko.parsers import version_1 @@ -163,7 +164,7 @@ class test_status_line(unittest.TestCase): "patch0": "first_patch 0 0", "patch1": "another_patch 0 0"}) kern = line.get_kernel() - kernel_hash = md5.new("2.6.24-rc40,0,0").hexdigest() + kernel_hash = utils.hash("2.6.24-rc40,0,0").hexdigest() self.assertEquals(kern.base, "2.6.24-rc40") self.assertEquals(kern.patches[0].spec, "first_patch") self.assertEquals(kern.patches[1].spec, "another_patch") @@ -178,7 +179,7 @@ class test_status_line(unittest.TestCase): "patch0": "first_patch 0 0", "patch2": "another_patch 0 0"}) kern = line.get_kernel() - kernel_hash = md5.new("2.6.24-rc40,0").hexdigest() + kernel_hash = utils.hash("2.6.24-rc40,0").hexdigest() self.assertEquals(kern.base, "2.6.24-rc40") self.assertEquals(kern.patches[0].spec, "first_patch") self.assertEquals(len(kern.patches), 1) diff --git a/utils/build_externals.py b/utils/build_externals.py index d58975e..a5a797d 100755 --- a/utils/build_externals.py +++ b/utils/build_externals.py @@ -12,10 +12,11 @@ Usage? Just run it. utils/build_externals.py """ -import compileall, logging, os, sha, shutil, sys, tempfile, time, urllib2 +import compileall, logging, os, shutil, sys, tempfile, time, urllib2 import subprocess, re import common from autotest_lib.client.common_lib import logging_config, logging_manager +from autotest_lib.client.common_lib import utils # Where package source be fetched to relative to the top of the autotest tree. PACKAGE_DIR = 'ExternalSource' @@ -152,7 +153,7 @@ def _checksum_file(full_path): """@returns The hex checksum of a file given its pathname.""" inputfile = open(full_path, 'rb') try: - hex_sum = sha.sha(inputfile.read()).hexdigest() + hex_sum = utils.hash('sha1', inputfile.read()).hexdigest() finally: inputfile.close() return hex_sum @@ -532,7 +533,7 @@ class ExternalPackage(object): raise FetchError('%s from %s fails Content-Length %d ' 'sanity check.' % (self.name, url, data_length)) - checksum = sha.sha() + checksum = utils.hash('sha1') total_read = 0 output = open(local_path, 'wb') try: