Skip to content

Commit

Permalink
use random.getrandbits instead of urandom
Browse files Browse the repository at this point in the history
  • Loading branch information
Ben Plotnick committed Jan 11, 2018
1 parent 209127f commit b06d25d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
7 changes: 3 additions & 4 deletions py_zipkin/util.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
import codecs
import os
import random
import struct


Expand All @@ -11,7 +10,7 @@ def generate_random_64bit_string():
:returns: random 16-character string
"""
return str(codecs.encode(os.urandom(8), 'hex_codec').decode('utf-8'))
return '{:016x}'.format(random.getrandbits(64))


def generate_random_128bit_string():
Expand All @@ -20,7 +19,7 @@ def generate_random_128bit_string():
:returns: random 32-character string
"""
return str(codecs.encode(os.urandom(16), 'hex_codec').decode('utf-8'))
return '{:032x}'.format(random.getrandbits(128))


def unsigned_hex_to_signed_int(hex_string):
Expand Down
8 changes: 4 additions & 4 deletions tests/util_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
from py_zipkin import util


@mock.patch('py_zipkin.util.codecs.encode', autospec=True)
@mock.patch('py_zipkin.util.random.getrandbits', autospec=True)
def test_generate_random_64bit_string(rand):
rand.return_value = b'17133d482ba4f605'
rand.return_value = 0x17133d482ba4f605
random_string = util.generate_random_64bit_string()
assert random_string == '17133d482ba4f605'
# This acts as a contract test of sorts. This should return a str
# in both py2 and py3. IOW, no unicode objects.
assert isinstance(random_string, str)


@mock.patch('py_zipkin.util.codecs.encode', autospec=True)
@mock.patch('py_zipkin.util.random.getrandbits', autospec=True)
def test_generate_random_128bit_string(rand):
rand.return_value = b'17133d482ba4f60517133d482ba4f605'
rand.return_value = 0x17133d482ba4f60517133d482ba4f605
random_string = util.generate_random_128bit_string()
assert random_string == '17133d482ba4f60517133d482ba4f605'
# This acts as a contract test of sorts. This should return a str
Expand Down

0 comments on commit b06d25d

Please sign in to comment.