/common/utils.py py34 incompatibility
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
(cherry picked from commit 3d54459c29
)
This commit is contained in:
parent
fa2b18c45a
commit
677687a3aa
|
@ -312,7 +312,8 @@ def get_random_string(length):
|
||||||
rndstr = ""
|
rndstr = ""
|
||||||
random.seed(datetime.datetime.now().microsecond)
|
random.seed(datetime.datetime.now().microsecond)
|
||||||
while len(rndstr) < length:
|
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]
|
return rndstr[0:length]
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import errno
|
import errno
|
||||||
|
import re
|
||||||
|
|
||||||
import eventlet
|
import eventlet
|
||||||
import mock
|
import mock
|
||||||
|
@ -706,3 +707,12 @@ class TestRoundVal(base.BaseTestCase):
|
||||||
(1, 1.49),
|
(1, 1.49),
|
||||||
(2, 1.5)):
|
(2, 1.5)):
|
||||||
self.assertEqual(expected, utils.round_val(value))
|
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))
|
||||||
|
|
Loading…
Reference in New Issue