Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check fabric-sync application with MCORE-FS tests on CI #36810

Merged
merged 4 commits into from
Dec 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions src/python_testing/TC_MCORE_FS_1_1.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,21 @@
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# run2:
# app: ${FABRIC_SYNC_APP}
# app-args: --discriminator=1234
# app-stdin-pipe: dut-fsa-stdin
# script-args: >
# --PICS src/app/tests/suites/certification/ci-pics-values
# --storage-path admin_storage.json
# --commissioning-method on-network
# --discriminator 1234
# --passcode 20202021
# --string-arg th_server_app_path:${ALL_CLUSTERS_APP}
# --trace-to json:${TRACE_TEST_JSON}.json
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# === END CI TEST ARGUMENTS ===

import logging
Expand Down
25 changes: 22 additions & 3 deletions src/python_testing/TC_MCORE_FS_1_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,23 @@
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# run2:
# app: ${FABRIC_SYNC_APP}
# app-args: --discriminator=1234
# app-stdin-pipe: dut-fsa-stdin
# script-args: >
# --PICS src/app/tests/suites/certification/ci-pics-values
# --storage-path admin_storage.json
# --commissioning-method on-network
# --discriminator 1234
# --passcode 20202021
# --bool-arg unified_fabric_sync_app:true
# --string-arg th_server_app_path:${ALL_CLUSTERS_APP}
# --string-arg dut_fsa_stdin_pipe:dut-fsa-stdin
# --trace-to json:${TRACE_TEST_JSON}.json
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# === END CI TEST ARGUMENTS ===

import asyncio
Expand Down Expand Up @@ -182,8 +199,10 @@ async def test_TC_MCORE_FS_1_2(self):
if not self.is_pics_sdk_ci_only:
self._ask_for_vendor_commissioning_ux_operation(self.th_server_setup_params)
else:
self.dut_fsa_stdin.write(
f"pairing onnetwork 2 {self.th_server_setup_params.passcode}\n")
if self.user_params.get("unified_fabric_sync_app"):
self.dut_fsa_stdin.write(f"app pair-device 2 {self.th_server_setup_params.qr_code}\n")
else:
self.dut_fsa_stdin.write(f"pairing onnetwork 2 {self.th_server_setup_params.passcode}\n")
self.dut_fsa_stdin.flush()
# Wait for the commissioning to complete.
await asyncio.sleep(5)
Expand Down Expand Up @@ -250,7 +269,7 @@ async def test_TC_MCORE_FS_1_2(self):
bridged_info_for_th_server = dut_read[newly_added_endpoint][Clusters.BridgedDeviceBasicInformation]
basic_info_attr = Clusters.BasicInformation.Attributes
bridged_device_info_attr = Clusters.BridgedDeviceBasicInformation.Attributes
Clusters.BasicInformation.Attributes

asserts.assert_equal(th_server_basic_info[basic_info_attr.VendorName],
bridged_info_for_th_server[bridged_device_info_attr.VendorName], "VendorName incorrectly reported by DUT")
asserts.assert_equal(th_server_basic_info[basic_info_attr.VendorID],
Expand Down
23 changes: 21 additions & 2 deletions src/python_testing/TC_MCORE_FS_1_3.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,23 @@
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# run2:
# app: ${FABRIC_SYNC_APP}
# app-args: --discriminator=1234
# app-stdin-pipe: dut-fsa-stdin
# script-args: >
# --PICS src/app/tests/suites/certification/ci-pics-values
# --storage-path admin_storage.json
# --commissioning-method on-network
# --discriminator 1234
# --passcode 20202021
# --bool-arg unified_fabric_sync_app:true
# --string-arg th_server_no_uid_app_path:${LIGHTING_APP_NO_UNIQUE_ID}
# --string-arg dut_fsa_stdin_pipe:dut-fsa-stdin
# --trace-to json:${TRACE_TEST_JSON}.json
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# === END CI TEST ARGUMENTS ===

import asyncio
Expand Down Expand Up @@ -193,8 +210,10 @@ async def test_TC_MCORE_FS_1_3(self):
f"If using FabricSync Admin, you may type:\n"
f">>> pairing onnetwork <desired_node_id> {params.setupPinCode}")
else:
self.dut_fsa_stdin.write(
f"pairing onnetwork 10 {params.setupPinCode}\n")
if self.user_params.get("unified_fabric_sync_app"):
self.dut_fsa_stdin.write(f"app pair-device 10 {params.setupQRCode}\n")
else:
self.dut_fsa_stdin.write(f"pairing onnetwork 10 {params.setupPinCode}\n")
self.dut_fsa_stdin.flush()
# Wait for the commissioning to complete.
await asyncio.sleep(5)
Expand Down
32 changes: 29 additions & 3 deletions src/python_testing/TC_MCORE_FS_1_4.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,25 @@
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# run2:
# app: ${FABRIC_SYNC_APP}
# app-args: --discriminator=1234
# app-stdin-pipe: dut-fsa-stdin
# script-args: >
# --PICS src/app/tests/suites/certification/ci-pics-values
# --storage-path admin_storage.json
# --commissioning-method on-network
# --discriminator 1234 --passcode 20202021
# --bool-arg unified_fabric_sync_app:true
# --string-arg th_fsa_app_path:examples/fabric-admin/scripts/fabric-sync-app.py
# --string-arg th_fsa_admin_path:${FABRIC_ADMIN_APP}
# --string-arg th_fsa_bridge_path:${FABRIC_BRIDGE_APP}
# --string-arg th_server_no_uid_app_path:${LIGHTING_APP_NO_UNIQUE_ID}
# --string-arg dut_fsa_stdin_pipe:dut-fsa-stdin
# --trace-to json:${TRACE_TEST_JSON}.json
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# === END CI TEST ARGUMENTS ===

import asyncio
Expand Down Expand Up @@ -322,8 +341,12 @@ async def test_TC_MCORE_FS_1_4(self):
f"If using FabricSync Admin, you may type:\n"
f">>> fabricsync add-bridge <desired_node_id> {params.setupPinCode} <th_host_ip> {self.th_fsa_bridge_port}")
else:
self.dut_fsa_stdin.write(
f"fabricsync add-bridge 10 {params.setupPinCode} {self.th_fsa_bridge_address} {self.th_fsa_bridge_port}\n")
if self.user_params.get("unified_fabric_sync_app"):
self.dut_fsa_stdin.write(
f"app add-bridge 10 {params.setupPinCode} {self.th_fsa_bridge_address} {self.th_fsa_bridge_port}\n")
else:
self.dut_fsa_stdin.write(
f"fabricsync add-bridge 10 {params.setupPinCode} {self.th_fsa_bridge_address} {self.th_fsa_bridge_port}\n")
self.dut_fsa_stdin.flush()
# Wait for the commissioning to complete.
await asyncio.sleep(5)
Expand All @@ -347,7 +370,10 @@ async def test_TC_MCORE_FS_1_4(self):
f"If using FabricSync Admin, you may type:\n"
f">>> fabricsync sync-device {th_fsa_bridge_th_server_endpoint}")
else:
self.dut_fsa_stdin.write(f"fabricsync sync-device {th_fsa_bridge_th_server_endpoint}\n")
if self.user_params.get("unified_fabric_sync_app"):
self.dut_fsa_stdin.write(f"app sync-device {th_fsa_bridge_th_server_endpoint}\n")
else:
self.dut_fsa_stdin.write(f"fabricsync sync-device {th_fsa_bridge_th_server_endpoint}\n")
self.dut_fsa_stdin.flush()
# Wait for the synchronization to complete.
await asyncio.sleep(5)
Expand Down
48 changes: 34 additions & 14 deletions src/python_testing/TC_MCORE_FS_1_5.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,23 @@
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# run2:
# app: ${FABRIC_SYNC_APP}
# app-args: --discriminator=1234
# app-stdin-pipe: dut-fsa-stdin
# script-args: >
# --PICS src/app/tests/suites/certification/ci-pics-values
# --storage-path admin_storage.json
# --commissioning-method on-network
# --discriminator 1234
# --passcode 20202021
# --bool-arg unified_fabric_sync_app:true
# --string-arg th_server_app_path:${ALL_CLUSTERS_APP}
# --string-arg dut_fsa_stdin_pipe:dut-fsa-stdin
# --trace-to json:${TRACE_TEST_JSON}.json
# --trace-to perfetto:${TRACE_TEST_PERFETTO}.perfetto
# factory-reset: true
# quiet: true
# === END CI TEST ARGUMENTS ===

import asyncio
Expand Down Expand Up @@ -139,17 +156,18 @@ def _ask_for_vendor_commissioning_ux_operation(self, setup_params: SetupParamete
f">>> pairing onnetwork 111 {setup_params.passcode}")

def steps_TC_MCORE_FS_1_5(self) -> list[TestStep]:
steps = [TestStep(1, "TH subscribes to PartsList attribute of the Descriptor cluster of DUT_FSA endpoint 0."),
TestStep(2, "Follow manufacturer provided instructions to have DUT_FSA commission TH_SERVER"),
TestStep(3, "TH waits up to 30 seconds for subscription report from the PartsList attribute of the Descriptor to contain new endpoint"),
TestStep(4, "TH uses DUT to open commissioning window to TH_SERVER"),
TestStep(5, "TH commissions TH_SERVER"),
TestStep(6, "TH subscribes to AdministratorCommissioning attributes on DUT_FSA for the newly added endpoint identified in step 3"),
TestStep(7, "TH opens commissioning window to TH_SERVER directly (not using DUT)"),
TestStep(8, "TH reads CurrentFabricIndex attributes on OperationalCredentials cluster from TH_SERVER directly (not using DUT_FSA)"),
TestStep(9, "TH reads AdministratorCommissioning from TH_SERVER directly (not using DUT)"),
TestStep(10, "TH waits up to 10 seconds for subscription report from the AdministratorCommissioning attribute (from step 6) to reflect values from previous step")]
return steps
return [
TestStep(1, "TH subscribes to PartsList attribute of the Descriptor cluster of DUT_FSA endpoint 0."),
TestStep(2, "Follow manufacturer provided instructions to have DUT_FSA commission TH_SERVER"),
TestStep(3, "TH waits up to 30 seconds for subscription report from the PartsList attribute of the Descriptor to contain new endpoint"),
TestStep(4, "TH uses DUT to open commissioning window to TH_SERVER"),
TestStep(5, "TH commissions TH_SERVER"),
TestStep(6, "TH subscribes to AdministratorCommissioning attributes on DUT_FSA for the newly added endpoint identified in step 3"),
TestStep(7, "TH opens commissioning window to TH_SERVER directly (not using DUT)"),
TestStep(8, "TH reads CurrentFabricIndex attributes on OperationalCredentials cluster from TH_SERVER directly (not using DUT_FSA)"),
TestStep(9, "TH reads AdministratorCommissioning from TH_SERVER directly (not using DUT)"),
TestStep(10, "TH waits up to 10 seconds for subscription report from the AdministratorCommissioning attribute (from step 6) to reflect values from previous step"),
]

# This test has some manual steps, so we need a longer timeout. Test typically runs under 1 mins so 3 mins should
# be enough time for test to run
Expand Down Expand Up @@ -189,8 +207,10 @@ async def test_TC_MCORE_FS_1_5(self):
if not self.is_pics_sdk_ci_only:
self._ask_for_vendor_commissioning_ux_operation(self.th_server_setup_params)
else:
self.dut_fsa_stdin.write(
f"pairing onnetwork 2 {self.th_server_setup_params.passcode}\n")
if self.user_params.get("unified_fabric_sync_app"):
self.dut_fsa_stdin.write(f"app pair-device 2 {self.th_server_setup_params.qr_code}\n")
else:
self.dut_fsa_stdin.write(f"pairing onnetwork 2 {self.th_server_setup_params.passcode}\n")
self.dut_fsa_stdin.flush()
# Wait for the commissioning to complete.
await asyncio.sleep(5)
Expand Down Expand Up @@ -265,7 +285,7 @@ async def test_TC_MCORE_FS_1_5(self):
cadmin_attribute_handler = AttributeChangeAccumulator(
name=self.default_controller.name, expected_attribute=Clusters.AdministratorCommissioning.Attributes.WindowStatus, output=cadmin_queue)
self._cadmin_subscription.SetAttributeUpdateCallback(cadmin_attribute_handler)
time.sleep(1)
await asyncio.sleep(1)

self.step(7)
await self.default_controller.OpenCommissioningWindow(nodeid=self.th_server_local_nodeid, timeout=180, iteration=1000, discriminator=3840, option=1)
Expand Down
Loading