Make random_bytes() enforce sane size limits

This makes random_bytes() refuse to generate more than 1MiB of data
at a time. This should almost never be necessary, and we have chased
actual gate OOM failures related to sloppy handling of even
moderately-sized test buffers.

Change-Id: I9cebe778a9309a0f4f5d78be97d062864e1849f1
This commit is contained in:
Dan Smith 2021-01-14 12:43:29 -08:00
parent 8dfefcebee
commit 8663655afa
2 changed files with 11 additions and 0 deletions

View File

@ -0,0 +1,9 @@
---
upgrade:
- |
The ``tempest.lib.common.utils.data_utils.random_bytes()`` helper
function will no longer allow a ``size`` of more than 1MiB. Tests
generally do not need to generate and use large payloads for
feature verification and it is easy to lose track of and duplicate
large buffers. The sum total of such errors can become problematic
in paralllelized and constrained CI environments.

View File

@ -169,6 +169,8 @@ def random_bytes(size=1024):
:return: size randomly bytes
:rtype: string
"""
if size > 1 << 20:
raise RuntimeError('Size should be less than 1MiB')
return b''.join([six.int2byte(random.randint(0, 255))
for i in range(size)])