237 lines
6.8 KiB
Python
237 lines
6.8 KiB
Python
# SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
|
|
# SPDX-License-Identifier: CC0-1.0
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
import pytest
|
|
from pytest_embedded_idf import IdfDut
|
|
from pytest_embedded_idf.utils import idf_parametrize
|
|
|
|
# Import for type-checking only — at runtime eth_test_runner pulls in dependencies that
|
|
# are not available during pytest collection. The real import is deferred to the fixture body.
|
|
if TYPE_CHECKING:
|
|
from conftest import EthTestRunner
|
|
|
|
|
|
# ----------- IP101 -----------
|
|
@pytest.mark.eth_ip101
|
|
@pytest.mark.parametrize('config', ['default_generic', 'release_generic', 'single_core_generic'], indirect=True)
|
|
@pytest.mark.flaky(reruns=3, reruns_delay=5)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_ethernet(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
|
|
|
|
@pytest.mark.eth_ip101
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_generic',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_emac(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
dut.run_all_single_board_cases(group='esp_emac', timeout=240)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_heap_alloc_test(dut)
|
|
|
|
|
|
@pytest.mark.eth_ip101
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_generic',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_eth_ip101(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
|
|
|
|
@pytest.mark.eth_ip101
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'rmii_clko_esp32',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp32_emac_clko(dut: IdfDut) -> None:
|
|
dut.run_all_single_board_cases(group='esp_emac_clk_out')
|
|
|
|
|
|
# ----------- IP101 ESP32P4 -----------
|
|
@pytest.mark.parametrize(
|
|
'config, target',
|
|
[
|
|
pytest.param('default_generic_esp32p4', 'esp32p4', marks=[pytest.mark.eth_ip101]),
|
|
pytest.param('default_generic_esp32p4v1', 'esp32p4', marks=[pytest.mark.eth_ip101, pytest.mark.esp32p4_rev1]),
|
|
],
|
|
indirect=['target'],
|
|
)
|
|
def test_esp32p4_ethernet(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
'config, target',
|
|
[
|
|
pytest.param('default_generic_esp32p4', 'esp32p4', marks=[pytest.mark.eth_ip101]),
|
|
pytest.param('default_generic_esp32p4v1', 'esp32p4', marks=[pytest.mark.eth_ip101, pytest.mark.esp32p4_rev1]),
|
|
],
|
|
indirect=['target'],
|
|
)
|
|
def test_esp32p4_emac(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
dut.run_all_single_board_cases(group='esp_emac', timeout=240)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_heap_alloc_test(dut)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
'config, target',
|
|
[
|
|
pytest.param('rmii_clko_esp32p4', 'esp32p4', marks=[pytest.mark.eth_ip101]),
|
|
pytest.param('rmii_clko_esp32p4v1', 'esp32p4', marks=[pytest.mark.eth_ip101, pytest.mark.esp32p4_rev1]),
|
|
],
|
|
indirect=['target'],
|
|
)
|
|
def test_esp32p4_emac_clko(dut: IdfDut) -> None:
|
|
dut.run_all_single_board_cases(group='esp_emac_clk_out')
|
|
|
|
|
|
# ----------- LAN8720 -----------
|
|
@pytest.mark.eth_lan8720
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_lan8720',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_eth_lan8720(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
|
|
|
|
# ----------- RTL8201 -----------
|
|
@pytest.mark.eth_rtl8201
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_rtl8201',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_eth_rtl8201(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
|
|
|
|
# ----------- KSZ8041 -----------
|
|
@pytest.mark.eth_ksz8041
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_ksz8041',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_eth_ksz8041(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
|
|
|
|
# ----------- DP83848 -----------
|
|
@pytest.mark.eth_dp83848
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_dp83848',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_eth_dp83848(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
|
|
|
|
# ----------- W5500 -----------
|
|
@pytest.mark.eth_w5500
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_w5500',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_eth_w5500(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_heap_alloc_test(dut)
|
|
|
|
|
|
# ----------- KSZ8851SNL -----------
|
|
@pytest.mark.eth_ksz8851snl
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_ksz8851snl',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_eth_ksz8851snl(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_heap_alloc_test(dut)
|
|
|
|
|
|
# ----------- DM9051 -----------
|
|
@pytest.mark.eth_dm9051
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'default_dm9051',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32'], indirect=['target'])
|
|
def test_esp_eth_dm9051(dut: IdfDut, eth_test_runner: 'EthTestRunner') -> None:
|
|
eth_test_runner.run_ethernet_test_apps(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_l2_test(dut)
|
|
dut.serial.hard_reset()
|
|
eth_test_runner.run_ethernet_heap_alloc_test(dut)
|
|
|
|
|
|
# ----------- EMAC Sleep Retention -----------
|
|
@pytest.mark.eth_ip101
|
|
@pytest.mark.parametrize(
|
|
'config',
|
|
[
|
|
'emac_sleep_retention',
|
|
],
|
|
indirect=True,
|
|
)
|
|
@idf_parametrize('target', ['esp32p4'], indirect=['target'])
|
|
def test_emac_sleep_retention(dut: IdfDut) -> None:
|
|
dut.run_all_single_board_cases(group='sleep_retention', timeout=120)
|