Re: [Autotest] [PATCH] Fixing sha/md5 deprecation messages from autotest

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Instead of wrapping all the calls in try-except blocks, maybe it would
make more sense to add a couple of utility functions to the common_lib
utils.py that do it for you? I'm just picturing something like:

def md5(bytes):
    try:
        import hashlib
        return hashlib.md5(bytes).hexdigest()
    except ImportError:
        import md5
        return md5.new(bytes).hexdigest()

and then something similar for sha1. This would keep all the
complexity in one place.

I'm just picturing a code review in the future where I have to explain
to someone that they have to wrap their import and digest in
try-excepts...it would be a lot easier to just tell them to use the
functions in utils.py instead. :)

-- John

On Thu, Jan 28, 2010 at 9:36 PM, Lucas Meneghel Rodrigues
<lmr@xxxxxxxxxx> wrote:
> When using python > 2.4, use the recommended hashlib.
> When using python 2.4, fall back to the md5 and sha
> modules.
>
> Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx>
> ---
>  tko/models.py                     |   12 ++++++++++--
>  tko/parsers/version_1_unittest.py |   16 +++++++++++++---
>  utils/build_externals.py          |   11 +++++++++--
>  3 files changed, 32 insertions(+), 7 deletions(-)
>
> diff --git a/tko/models.py b/tko/models.py
> index bc70074..2dc6724 100644
> --- a/tko/models.py
> +++ b/tko/models.py
> @@ -1,4 +1,8 @@
> -import os, md5
> +import os
> +try:
> +    import hashlib
> +except ImportError:
> +    import md5
>
>  from autotest_lib.client.common_lib import utils
>  from autotest_lib.tko import utils as tko_utils
> @@ -63,7 +67,11 @@ class kernel(object):
>     @staticmethod
>     def compute_hash(base, hashes):
>         key_string = ','.join([base] + hashes)
> -        return md5.new(key_string).hexdigest()
> +        try:
> +            hash = hashlib.md5(key_string).hexdigest()
> +        except NameError:
> +            hash = md5.new(key_string).hexdigest()
> +        return hash
>
>
>  class test(object):
> diff --git a/tko/parsers/version_1_unittest.py b/tko/parsers/version_1_unittest.py
> index 5110fe8..a6e87e4 100755
> --- a/tko/parsers/version_1_unittest.py
> +++ b/tko/parsers/version_1_unittest.py
> @@ -1,6 +1,10 @@
>  #!/usr/bin/python
>
> -import unittest, datetime, time, md5
> +import unittest, datetime, time
> +try:
> +    import hashlib
> +except ImportError:
> +    import md5
>
>  import common
>  from autotest_lib.tko.parsers import version_1
> @@ -163,7 +167,10 @@ 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()
> +        try:
> +            kernel_hash = hashlib.md5("2.6.24-rc40,0,0").hexdigest()
> +        except NameError:
> +            kernel_hash = md5.new("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 +185,10 @@ 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()
> +        try:
> +            kernel_hash = hashlib.md5("2.6.24-rc40,0").hexdigest()
> +        except:
> +            kernel_hash = md5.new("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..8993249 100755
> --- a/utils/build_externals.py
> +++ b/utils/build_externals.py
> @@ -12,7 +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
> +try:
> +    import hashlib
> +except ImportError:
> +    import sha
>  import subprocess, re
>  import common
>  from autotest_lib.client.common_lib import logging_config, logging_manager
> @@ -152,7 +156,10 @@ 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()
> +        try:
> +            hex_sum = hashlib.sha1(inputfile.read()).hexdigest()
> +        except NameError:
> +            hex_sum = sha.sha(inputfile.read()).hexdigest()
>     finally:
>         inputfile.close()
>     return hex_sum
> --
> 1.6.6
>
> _______________________________________________
> Autotest mailing list
> Autotest@xxxxxxxxxxxxxxx
> http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
>
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux