/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 = ""
|
||||
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]
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
# under the License.
|
||||
|
||||
import errno
|
||||
import re
|
||||
|
||||
import eventlet
|
||||
import mock
|
||||
|
@ -706,3 +707,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))
|
||||
|
|
Loading…
Reference in New Issue