mirror of
https://github.com/micropython/micropython.git
synced 2026-01-06 20:20:14 +01:00
tests/micropython: Make tests behave in low memory condition.
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
This commit changes the "viper_ptr*_store_boundary" tests to make them fail more gracefully in low memory conditions. The original version of the tests compiled viper code blocks on the fly when it needed them, making them fail at runtime on some boards that do not come with enough memory for this test. This clashes with "run-tests.py"'s ability to look for a particular signature to mark tests as skipped due to not enough memory. Now compiled code blocks are generated at the beginning of the test inside an appropriate exception handler. In case of a memory error when pre-compiling a code block, the running test exits reporting a low memory condition to the test runner. This allows to have clean test runs on all platforms when it comes to viper pointer tests. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
This commit is contained in:
committed by
Damien George
parent
1df5ee12e8
commit
b0fd0079f4
@@ -6,15 +6,12 @@ def set{off}(dest: ptr16):
|
||||
saved = dest
|
||||
dest[{off}] = {val}
|
||||
assert int(saved) == int(dest)
|
||||
set{off}(buffer)
|
||||
print(hex(get_index(buffer, {off})))
|
||||
"""
|
||||
|
||||
BIT_THRESHOLDS = (5, 8, 11, 12)
|
||||
SIZE = 2
|
||||
MASK = (1 << (8 * SIZE)) - 1
|
||||
|
||||
|
||||
next_int = 1
|
||||
test_buffer = bytearray(SIZE)
|
||||
|
||||
@@ -32,6 +29,10 @@ def next_value() -> uint:
|
||||
return output & MASK
|
||||
|
||||
|
||||
def get_index(src, i):
|
||||
return src[i * SIZE] + (src[(i * SIZE) + 1] << 8)
|
||||
|
||||
|
||||
@micropython.viper
|
||||
def set_index(dest: ptr16, i: int, val: uint):
|
||||
saved = dest
|
||||
@@ -39,22 +40,24 @@ def set_index(dest: ptr16, i: int, val: uint):
|
||||
assert int(saved) == int(dest)
|
||||
|
||||
|
||||
def get_index(src, i):
|
||||
return src[i * SIZE] + (src[(i * SIZE) + 1] << 8)
|
||||
try:
|
||||
buffer = bytearray((((1 << max(BIT_THRESHOLDS)) // 1024) + 1) * 1024)
|
||||
|
||||
for bit in BIT_THRESHOLDS:
|
||||
offset = (1 << bit) - (2 * SIZE)
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
exec(SET_TEMPLATE.format(off=(offset + index) // SIZE, val=next_value()))
|
||||
except MemoryError:
|
||||
print("SKIP-TOO-LARGE")
|
||||
raise SystemExit
|
||||
|
||||
|
||||
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
|
||||
for bit in BIT_THRESHOLDS:
|
||||
print("---", bit)
|
||||
pre, idx, post = (
|
||||
(((1 << bit) - (2 * SIZE)) // SIZE),
|
||||
(((1 << bit) - (1 * SIZE)) // SIZE),
|
||||
((1 << bit) // SIZE),
|
||||
)
|
||||
set_index(buffer, pre, next_value())
|
||||
set_index(buffer, idx, next_value())
|
||||
set_index(buffer, post, next_value())
|
||||
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=idx, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=post, val=next_value()))
|
||||
offset = (1 << bit) - (2 * SIZE)
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
globals()["set{}".format((offset + index) // SIZE)](buffer)
|
||||
print(hex(get_index(buffer, (offset + index) // SIZE)))
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
set_index(buffer, (offset + index) // SIZE, next_value())
|
||||
print(hex(get_index(buffer, (offset + index) // SIZE)))
|
||||
|
||||
@@ -1,20 +1,28 @@
|
||||
--- 5
|
||||
0x1 0x102 0x203
|
||||
0x1
|
||||
0x102
|
||||
0x203
|
||||
0xc0d
|
||||
0xd0e
|
||||
0xe0f
|
||||
--- 8
|
||||
0x304
|
||||
0x405
|
||||
0x506
|
||||
--- 8
|
||||
0x607 0x708 0x809
|
||||
0x90a
|
||||
0xa0b
|
||||
0xb0c
|
||||
--- 11
|
||||
0xc0d 0xd0e 0xe0f
|
||||
0xf10
|
||||
0x1011
|
||||
0x1112
|
||||
--- 11
|
||||
0x607
|
||||
0x708
|
||||
0x809
|
||||
0x1213
|
||||
0x1314
|
||||
0x1415
|
||||
--- 12
|
||||
0x1213 0x1314 0x1415
|
||||
0x90a
|
||||
0xa0b
|
||||
0xb0c
|
||||
0x1516
|
||||
0x1617
|
||||
0x1718
|
||||
|
||||
@@ -6,8 +6,6 @@ def set{off}(dest: ptr32):
|
||||
saved = dest
|
||||
dest[{off}] = {val}
|
||||
assert int(saved) == int(dest)
|
||||
set{off}(buffer)
|
||||
print(hex(get_index(buffer, {off})))
|
||||
"""
|
||||
|
||||
BIT_THRESHOLDS = (5, 8, 11, 12)
|
||||
@@ -31,13 +29,6 @@ def next_value() -> uint:
|
||||
return output & MASK
|
||||
|
||||
|
||||
@micropython.viper
|
||||
def set_index(dest: ptr32, i: int, val: uint):
|
||||
saved = dest
|
||||
dest[i] = val
|
||||
assert int(saved) == int(dest)
|
||||
|
||||
|
||||
def get_index(src, i):
|
||||
return (
|
||||
src[i * SIZE]
|
||||
@@ -47,18 +38,31 @@ def get_index(src, i):
|
||||
)
|
||||
|
||||
|
||||
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
|
||||
@micropython.viper
|
||||
def set_index(dest: ptr32, i: int, val: uint):
|
||||
saved = dest
|
||||
dest[i] = val
|
||||
assert int(dest) == int(saved)
|
||||
|
||||
|
||||
try:
|
||||
buffer = bytearray((((1 << max(BIT_THRESHOLDS)) // 1024) + 1) * 1024)
|
||||
|
||||
for bit in BIT_THRESHOLDS:
|
||||
offset = (1 << bit) - (2 * SIZE)
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
exec(SET_TEMPLATE.format(off=(offset + index) // SIZE, val=next_value()))
|
||||
except MemoryError:
|
||||
print("SKIP-TOO-LARGE")
|
||||
raise SystemExit
|
||||
|
||||
|
||||
for bit in BIT_THRESHOLDS:
|
||||
print("---", bit)
|
||||
pre, idx, post = (
|
||||
(((1 << bit) - (2 * SIZE)) // SIZE),
|
||||
(((1 << bit) - (1 * SIZE)) // SIZE),
|
||||
((1 << bit) // SIZE),
|
||||
)
|
||||
set_index(buffer, pre, next_value())
|
||||
set_index(buffer, idx, next_value())
|
||||
set_index(buffer, post, next_value())
|
||||
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=idx, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=post, val=next_value()))
|
||||
offset = (1 << bit) - (2 * SIZE)
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
globals()["set{}".format((offset + index) // SIZE)](buffer)
|
||||
print(hex(get_index(buffer, (offset + index) // SIZE)))
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
set_index(buffer, (offset + index) // SIZE, next_value())
|
||||
print(hex(get_index(buffer, (offset + index) // SIZE)))
|
||||
|
||||
@@ -1,20 +1,28 @@
|
||||
--- 5
|
||||
0x1 0x102 0x10203
|
||||
0x1
|
||||
0x102
|
||||
0x10203
|
||||
0xa0b0c0d
|
||||
0xb0c0d0e
|
||||
0xc0d0e0f
|
||||
--- 8
|
||||
0x1020304
|
||||
0x2030405
|
||||
0x3040506
|
||||
--- 8
|
||||
0x4050607 0x5060708 0x6070809
|
||||
0x708090a
|
||||
0x8090a0b
|
||||
0x90a0b0c
|
||||
--- 11
|
||||
0xa0b0c0d 0xb0c0d0e 0xc0d0e0f
|
||||
0xd0e0f10
|
||||
0xe0f1011
|
||||
0xf101112
|
||||
--- 11
|
||||
0x4050607
|
||||
0x5060708
|
||||
0x6070809
|
||||
0x10111213
|
||||
0x11121314
|
||||
0x12131415
|
||||
--- 12
|
||||
0x10111213 0x11121314 0x12131415
|
||||
0x708090a
|
||||
0x8090a0b
|
||||
0x90a0b0c
|
||||
0x13141516
|
||||
0x14151617
|
||||
0x15161718
|
||||
|
||||
@@ -6,8 +6,6 @@ def set{off}(dest: ptr8):
|
||||
saved = dest
|
||||
dest[{off}] = {val}
|
||||
assert int(saved) == int(dest)
|
||||
set{off}(buffer)
|
||||
print(hex(get_index(buffer, {off})))
|
||||
"""
|
||||
|
||||
BIT_THRESHOLDS = (5, 8, 11, 12)
|
||||
@@ -31,6 +29,10 @@ def next_value() -> uint:
|
||||
return output & MASK
|
||||
|
||||
|
||||
def get_index(src: ptr8, i: int):
|
||||
return src[i]
|
||||
|
||||
|
||||
@micropython.viper
|
||||
def set_index(dest: ptr8, i: int, val: uint):
|
||||
saved = dest
|
||||
@@ -38,18 +40,24 @@ def set_index(dest: ptr8, i: int, val: uint):
|
||||
assert int(dest) == int(saved)
|
||||
|
||||
|
||||
def get_index(src: ptr8, i: int):
|
||||
return src[i]
|
||||
try:
|
||||
buffer = bytearray((((1 << max(BIT_THRESHOLDS)) // 1024) + 1) * 1024)
|
||||
|
||||
for bit in BIT_THRESHOLDS:
|
||||
offset = (1 << bit) - (2 * SIZE)
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
exec(SET_TEMPLATE.format(off=(offset + index) // SIZE, val=next_value()))
|
||||
except MemoryError:
|
||||
print("SKIP-TOO-LARGE")
|
||||
raise SystemExit
|
||||
|
||||
|
||||
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
|
||||
for bit in BIT_THRESHOLDS:
|
||||
print("---", bit)
|
||||
pre, idx, post = (((1 << bit) - (2 * SIZE)), ((1 << bit) - (1 * SIZE)), (1 << bit))
|
||||
set_index(buffer, pre, next_value())
|
||||
set_index(buffer, idx, next_value())
|
||||
set_index(buffer, post, next_value())
|
||||
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=idx, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=post, val=next_value()))
|
||||
offset = (1 << bit) - (2 * SIZE)
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
globals()["set{}".format((offset + index) // SIZE)](buffer)
|
||||
print(hex(get_index(buffer, (offset + index) // SIZE)))
|
||||
for index in range(0, 3 * SIZE, SIZE):
|
||||
set_index(buffer, (offset + index) // SIZE, next_value())
|
||||
print(hex(get_index(buffer, (offset + index) // SIZE)))
|
||||
|
||||
@@ -1,20 +1,28 @@
|
||||
--- 5
|
||||
0x1 0x2 0x3
|
||||
0x1
|
||||
0x2
|
||||
0x3
|
||||
0xd
|
||||
0xe
|
||||
0xf
|
||||
--- 8
|
||||
0x4
|
||||
0x5
|
||||
0x6
|
||||
--- 8
|
||||
0x7 0x8 0x9
|
||||
0xa
|
||||
0xb
|
||||
0xc
|
||||
--- 11
|
||||
0xd 0xe 0xf
|
||||
0x10
|
||||
0x11
|
||||
0x12
|
||||
--- 11
|
||||
0x7
|
||||
0x8
|
||||
0x9
|
||||
0x13
|
||||
0x14
|
||||
0x15
|
||||
--- 12
|
||||
0x13 0x14 0x15
|
||||
0xa
|
||||
0xb
|
||||
0xc
|
||||
0x16
|
||||
0x17
|
||||
0x18
|
||||
|
||||
Reference in New Issue
Block a user