]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
/common/utils.py py34 incompatibility
authorBogdan Tabor <bogdan.tabor@ericpol.com>
Wed, 23 Sep 2015 08:52:25 +0000 (10:52 +0200)
committerBogdan Tabor <bogdan.tabor@ericpol.com>
Fri, 2 Oct 2015 14:13:20 +0000 (16:13 +0200)
Fixes bug found during unit test of get_random_string() method.
For Python3 it is required to encode string as bytes object
before hashing.

Related-blueprint: neutron-python3
Closes-bug: #1502148
Change-Id: I93061a831b45fc8b3ede0211af665ce02f36f38a

neutron/common/utils.py
neutron/tests/unit/common/test_utils.py

index a8b79e99fb5db26815a9eb8f01face21b8c62a0a..4040d524cc6eb9fbaf8242854d683971aabe9ac4 100644 (file)
@@ -312,7 +312,8 @@ def get_random_string(length):
     rndstr = ""
     random.seed(datetime.datetime.now().microsecond)
     while len(rndstr) < length:
-        rndstr += hashlib.sha224(str(random.random())).hexdigest()
+        base_str = str(random.random()).encode('utf-8')
+        rndstr += hashlib.sha224(base_str).hexdigest()
 
     return rndstr[0:length]
 
index f6aee3da935b92e054f00bc96027caf8d152c170..be13c3c86fc9590aed34accfb8e513e44c5b8839 100644 (file)
@@ -13,6 +13,7 @@
 #    under the License.
 
 import errno
+import re
 
 import eventlet
 import mock
@@ -703,3 +704,12 @@ class TestRoundVal(base.BaseTestCase):
                                 (1, 1.49),
                                 (2, 1.5)):
             self.assertEqual(expected, utils.round_val(value))
+
+
+class TestGetRandomString(base.BaseTestCase):
+    def test_get_random_string(self):
+        length = 127
+        random_string = utils.get_random_string(length)
+        self.assertEqual(length, len(random_string))
+        regex = re.compile('^[0-9a-fA-F]+$')
+        self.assertIsNotNone(regex.match(random_string))