tests: Bluetooth: Mesh: Add comp p129 test to bsim

Adds testing of composition data page 129 in the
mesh_prov_pst_pb_remote_ncrp bsim test.

Signed-off-by: Anders Storrø <anders.storro@nordicsemi.no>
This commit is contained in:
Anders Storrø 2023-08-24 11:51:33 +02:00 committed by Carles Cufí
commit b11c5dd398
3 changed files with 52 additions and 11 deletions

View file

@ -61,6 +61,7 @@ CONFIG_BT_MESH_DFD_SRV=y
CONFIG_BT_MESH_DFU_SLOT_CNT=3
CONFIG_BT_MESH_PRIV_BEACON_SRV=y
CONFIG_BT_MESH_PRIV_BEACON_CLI=y
CONFIG_BT_MESH_COMP_PAGE_1=y
# Needed for RPR tests due to huge amount of retransmitted messages
CONFIG_BT_MESH_MSG_CACHE_SIZE=64

View file

@ -1331,7 +1331,10 @@ static void test_provisioner_pb_remote_client_ncrp_provision(void)
static void test_provisioner_pb_remote_client_ncrp(void)
{
NET_BUF_SIMPLE_DEFINE(dev_comp_p0, BT_MESH_RX_SDU_MAX);
NET_BUF_SIMPLE_DEFINE(dev_comp_p1, BT_MESH_RX_SDU_MAX);
NET_BUF_SIMPLE_DEFINE(dev_comp_p128, BT_MESH_RX_SDU_MAX);
NET_BUF_SIMPLE_DEFINE(dev_comp_p129, BT_MESH_RX_SDU_MAX);
uint16_t pb_remote_server_addr = 0x0003;
uint8_t page;
@ -1340,13 +1343,20 @@ static void test_provisioner_pb_remote_client_ncrp(void)
bt_mesh_device_setup(&prov, &rpr_cli_comp);
/* Store Composition Data Page 0 and 128. */
/* Store Composition Data Page 0, 1, 128 and 129. */
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, pb_remote_server_addr, 0, &page, &dev_comp_p0));
ASSERT_EQUAL(0, page);
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, pb_remote_server_addr, 1, &page, &dev_comp_p1));
ASSERT_EQUAL(1, page);
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, pb_remote_server_addr, 128, &page,
&dev_comp_p128));
ASSERT_EQUAL(128, page);
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, pb_remote_server_addr, 129, &page,
&dev_comp_p129));
ASSERT_EQUAL(129, page);
ASSERT_TRUE(dev_comp_p0.len != dev_comp_p128.len);
ASSERT_TRUE(dev_comp_p1.len != dev_comp_p129.len);
LOG_INF("Start Node Composition Refresh procedure...\n");
struct bt_mesh_rpr_node srv = {
@ -1379,18 +1389,50 @@ static void test_provisioner_pb_remote_client_ncrp(void)
FAIL("Wrong composition data page 128");
}
/* Check that Composition Data Page 129 still exists and is now equal to Page 1. */
net_buf_simple_reset(&dev_comp_p1);
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, pb_remote_server_addr, 1, &page, &dev_comp_p1));
ASSERT_EQUAL(1, page);
ASSERT_EQUAL(dev_comp_p1.len, dev_comp_p129.len);
if (memcmp(dev_comp_p1.data, dev_comp_p129.data, dev_comp_p1.len)) {
FAIL("Wrong composition data page 1");
}
net_buf_simple_reset(&dev_comp_p129);
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, pb_remote_server_addr, 129, &page,
&dev_comp_p129));
ASSERT_EQUAL(129, page);
ASSERT_EQUAL(dev_comp_p1.len, dev_comp_p129.len);
if (memcmp(dev_comp_p1.data, dev_comp_p129.data, dev_comp_p1.len)) {
FAIL("Wrong composition data page 129");
}
PASS();
}
static void comp_data_pages_equal_check(uint16_t server_addr, uint8_t page1, uint8_t page2)
{
NET_BUF_SIMPLE_DEFINE(comp_1, BT_MESH_RX_SDU_MAX);
NET_BUF_SIMPLE_DEFINE(comp_2, BT_MESH_RX_SDU_MAX);
uint8_t page;
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, server_addr, page1, &page, &comp_1));
ASSERT_EQUAL(page1, page);
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, server_addr, page2, &page,
&comp_2));
ASSERT_EQUAL(page2, page);
ASSERT_TRUE(comp_1.len == comp_2.len);
if (memcmp(comp_1.data, comp_2.data, comp_1.len)) {
FAIL("Composition data page %d is not the same as page %d", page1, page2);
}
}
/** @brief Test Node Composition Refresh procedure on Remote Provisioning client:
* - verify that Composition Data Page 0 is now equal to Page 128 after reboot.
*/
static void test_provisioner_pb_remote_client_ncrp_second_time(void)
{
NET_BUF_SIMPLE_DEFINE(dev_comp_p0, BT_MESH_RX_SDU_MAX);
NET_BUF_SIMPLE_DEFINE(dev_comp_p128, BT_MESH_RX_SDU_MAX);
uint16_t pb_remote_server_addr = 0x0003;
uint8_t page;
int err;
k_sem_init(&prov_sem, 0, 1);
@ -1398,13 +1440,9 @@ static void test_provisioner_pb_remote_client_ncrp_second_time(void)
bt_mesh_device_setup(&prov, &rpr_cli_comp);
/* Check Composition Data Page 0 and 128. */
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, pb_remote_server_addr, 0, &page, &dev_comp_p0));
ASSERT_EQUAL(0, page);
ASSERT_OK(bt_mesh_cfg_cli_comp_data_get(0, pb_remote_server_addr, 128, &page,
&dev_comp_p128));
ASSERT_EQUAL(128, page);
ASSERT_TRUE(dev_comp_p0.len == dev_comp_p128.len);
comp_data_pages_equal_check(pb_remote_server_addr, 0, 128);
comp_data_pages_equal_check(pb_remote_server_addr, 1, 129);
LOG_INF("Start Node Composition Refresh procedure...\n");
struct bt_mesh_rpr_node srv = {

View file

@ -18,8 +18,10 @@ source $(dirname "${BASH_SOURCE[0]}")/../../_mesh_test.sh
# 2. Verify Node Composition Refresh procedure.
# PB-Remote client (1st device):
# - check that Composition Data pages 0 (old comp data) and 128 (new comp data) are different
# - check that Composition Data pages 1 (old comp data) and 129 (new comp data) are different
# - run Node Composition Refresh procedure on the 3rd device
# - verify Composition Data pages 0 (new comp data) and 128 (same as page 0)
# - verify Composition Data pages 1 (new comp data) and 129 (same as page 1)
# PB-Remote server (3rd device):
# - start with a new Composition Data
# 3. Verify that old settings are removed on the 3rd device after Composition Data change.