mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-18 15:47:13 +00:00

handler_execute function is looking to match the handler only in the list of loop events but does not look in the base event handler list nor the id event handler list. So unless the event handler is registered to be triggered for all event bases and all event ids of an event loop, its profiling fields (invoked and time) are not updated when it is called. This commit updates the search for the matching handler to also look in base event list and ID event list. Closes https://github.com/espressif/esp-idf/issues/15041
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
# SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
|
# SPDX-License-Identifier: CC0-1.0
|
|
import pytest
|
|
from pytest_embedded import Dut
|
|
|
|
|
|
@pytest.mark.esp32
|
|
@pytest.mark.esp32s2
|
|
@pytest.mark.esp32c3
|
|
@pytest.mark.generic
|
|
def test_esp_event(dut: Dut) -> None:
|
|
dut.run_all_single_board_cases()
|
|
|
|
|
|
@pytest.mark.esp32
|
|
@pytest.mark.host_test
|
|
@pytest.mark.qemu
|
|
@pytest.mark.parametrize('qemu_extra_args', [
|
|
'-global driver=timer.esp32.timg,property=wdt_disable,value=true',
|
|
], indirect=True) # need to disable wdt since it is not synchronized with target cpu clock on QEMU for ESP32
|
|
def test_esp_event_qemu_esp32(dut: Dut) -> None:
|
|
for case in dut.test_menu:
|
|
if 'qemu-ignore' not in case.groups and not case.is_ignored and case.type == 'normal':
|
|
dut._run_normal_case(case)
|
|
|
|
|
|
@pytest.mark.esp32c3
|
|
@pytest.mark.host_test
|
|
@pytest.mark.qemu
|
|
@pytest.mark.parametrize('qemu_extra_args', [
|
|
'-icount 3',
|
|
], indirect=True) # need to add -icount 3 to make WDT accurate on QEMU for ESP32-C3
|
|
def test_esp_event_qemu_esp32c3(dut: Dut) -> None:
|
|
for case in dut.test_menu:
|
|
if 'qemu-ignore' not in case.groups and not case.is_ignored and case.type == 'normal':
|
|
dut._run_normal_case(case)
|
|
|
|
|
|
@pytest.mark.linux
|
|
@pytest.mark.host_test
|
|
def test_esp_event_posix_simulator(dut: Dut) -> None:
|
|
dut.expect_exact('Press ENTER to see the list of tests.')
|
|
dut.write('*')
|
|
dut.expect(r'\d{2} Tests 0 Failures 0 Ignored', timeout=120)
|
|
|
|
|
|
@pytest.mark.esp32
|
|
@pytest.mark.generic
|
|
def test_esp_event_profiling(dut: Dut) -> None:
|
|
dut.expect_exact('Press ENTER to see the list of tests.')
|
|
dut.write('"profiling reports valid values"')
|
|
# look for all references of handlers invoked at least 1 time
|
|
# with an execution time superior to 0 us
|
|
matches = dut.expect(r'HANDLER .+ inv:[1-9][0-9]{0,} time:[1-9][0-9]{0,} us', timeout=2)
|
|
matches_arr = matches.group().split(b'\r\n')
|
|
assert (len(matches_arr) == 3)
|