ci(zigbee): Add pytest for esp32h2 in CI

This commit is contained in:
Abudl Rehman
2023-05-16 17:04:47 +08:00
parent 695c7ed793
commit a4ddf7d5f7
11 changed files with 112 additions and 11 deletions
@@ -43,8 +43,7 @@
#define ED_AGING_TIMEOUT ESP_ZB_ED_AGING_TIMEOUT_64MIN
#define ED_KEEP_ALIVE 3000 /* 3000 millisecond */
#define HA_ESP_LIGHT_ENDPOINT 10 /* esp light bulb device endpoint, used to process light controlling commands */
#define ESP_ZB_PRIMARY_CHANNEL_MASK (1l << 13) /* Zigbee primary channel mask use in the example */
#define ESP_ZB_PRIMARY_CHANNEL_MASK ESP_ZB_TRANSCEIVER_ALL_CHANNELS_MASK /* Zigbee primary channel mask use in the example */
#define ESP_ZB_ZED_CONFIG() \
{ \
.esp_zb_role = ESP_ZB_DEVICE_TYPE_ED, \
@@ -1,7 +1,7 @@
## IDF Component Manager Manifest File
dependencies:
espressif/esp-zigbee-lib: "~0.5.0"
espressif/esp-zboss-lib: "~0.4.0"
espressif/esp-zigbee-lib: "~0.7.0"
espressif/esp-zboss-lib: "~0.5.0"
espressif/led_strip: "~2.0.0"
## Required IDF version
idf:
@@ -41,7 +41,7 @@
#define MAX_CHILDREN 10 /* the max amount of connected devices */
#define INSTALLCODE_POLICY_ENABLE false /* enable the install code policy for security */
#define HA_ONOFF_SWITCH_ENDPOINT 1 /* esp light switch device endpoint */
#define ESP_ZB_PRIMARY_CHANNEL_MASK (1l << 13) /* Zigbee primary channel mask use in the example */
#define ESP_ZB_PRIMARY_CHANNEL_MASK ESP_ZB_TRANSCEIVER_ALL_CHANNELS_MASK /* Zigbee primary channel mask use in the example */
#define ESP_ZB_ZC_CONFIG() \
{ \
@@ -1,7 +1,7 @@
## IDF Component Manager Manifest File
dependencies:
espressif/esp-zigbee-lib: "~0.5.0"
espressif/esp-zboss-lib: "~0.4.0"
espressif/esp-zigbee-lib: "~0.7.0"
espressif/esp-zboss-lib: "~0.5.0"
## Required IDF version
idf:
version: ">=5.0.0"
@@ -0,0 +1,46 @@
# SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
# !/usr/bin/env python3
import pathlib
import time
from typing import Tuple
import pytest
from pytest_embedded import Dut
CURRENT_DIR_LIGHT = str(pathlib.Path(__file__).parent / 'HA_on_off_light')
CURRENT_DIR_SWITCH = str(pathlib.Path(__file__).parent / 'HA_on_off_switch')
pytest_build_dir = CURRENT_DIR_LIGHT + '|' + CURRENT_DIR_SWITCH
@pytest.mark.esp32h2
@pytest.mark.zigbee_multi_dut
@pytest.mark.parametrize(
' count, app_path, erase_all', [
(2, pytest_build_dir, 'y'),
],
indirect=True,
)
# config Zigbee network
def test_config_zigbee_network(dut:Tuple[Dut, Dut]) -> None:
light = dut[0]
switch = dut[1]
time.sleep(3)
switch.expect('ESP_ZB_ON_OFF_SWITCH: Formed network successfully',timeout=30)
# get the switch extpanid
switch_node_expanid = switch.expect(r'Extended PAN ID: (([a-z0-9]{2}:?){8})',timeout=3)[1].decode()
switch_node_expanid = switch_node_expanid.replace(':','')
# get the switch panid
switch_node_panid = switch.expect(r'PAN ID: 0x([a-z0-9]+:?)',timeout=2)[1].decode()
# new device commissioned successfully
switch.expect(r'New device commissioned or rejoined \(short: 0x([a-z0-9]+)[^a-z0-9]',timeout=30)[1].decode()
# get the light node extpanid
light.expect('ESP_ZB_ON_OFF_LIGHT: Joined network successfully',timeout=20)
light_node_expanid = light.expect(r'Extended PAN ID: (([a-z0-9]{2}:?){8})',timeout=3)[1].decode()
light_node_expanid = light_node_expanid.replace(':','')
# get the light panid
light_node_panid = light.expect(r'PAN ID: 0x([a-z0-9]+:?)',timeout=2)[1].decode()
# make sure the light node join the network that switch node formed (same expanid)
if ((light_node_expanid != switch_node_expanid) or (light_node_panid != switch_node_panid)):
assert False