RIOT/tests/malloc/tests/01-run.py
Francisco Molina 2d690ee05a
tests/malloc: refactor test
Matching on every free leads to flimsy test results where all memory
is freed but one line fails to be matched by pexpect, instead, match
the final count.
2021-05-03 17:17:49 +02:00

44 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python3
# Copyright (C) 2019 Inria
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
import sys
from testrunner import run
# For BOARD's with large amount of RAM allocating all chunks takes longer
# than 10s
ALLOCATION_TIMEOUT = 20
FREE_TIMEOUT = ALLOCATION_TIMEOUT
def testfunc(child):
child.expect(r'CHUNK_SIZE: (\d+)\r\n')
chunk_size = int(child.match.group(1))
child.expect(r'NUMBER_OF_TESTS: (\d+)\r\n')
number_of_tests = int(child.match.group(1))
initial_allocations = 0
for _ in range(number_of_tests):
child.expect(r"Allocated {} Bytes at 0x[a-z0-9]+, total [a-z0-9]+\r\n"
.format(chunk_size))
child.expect(r'Allocations count: (\d+)\r\n',
timeout=ALLOCATION_TIMEOUT)
allocations = int(child.match.group(1))
assert allocations > 0
if initial_allocations == 0:
initial_allocations = allocations
assert initial_allocations == allocations
child.expect(r"Free {} Bytes at 0x[a-z0-9]+, total [a-z0-9]+\r\n"
.format(chunk_size))
child.expect(r'Free count: (\d+)\r\n', timeout=FREE_TIMEOUT)
freed = int(child.match.group(1))
assert freed == allocations
child.expect_exact("[SUCCESS]")
if __name__ == "__main__":
sys.exit(run(testfunc))