From c7b8bf94b6d8077cb2dba2e2150b4f920c4f2456 Mon Sep 17 00:00:00 2001 From: manjunath-grl <102359958+manjunath-grl@users.noreply.github.com> Date: Thu, 9 Feb 2023 01:34:33 +0530 Subject: [PATCH] Modified test Feb 08 (#24918) * Modified scripts: TC-ACE-1.5 TC-ACL-2.7 TC-ACL-2.8 TC-ACL-2.10 Modified manual test TC-BRBINFO-2.1 Added missed prompt in simulated test: TC-ACT-3.1 TC-BOOL-3.1 TC-FLW-3.1 TC-I-3.1 TC-PRS-3.1 TC-PSCFG-3.1 TC-SWTCH-3.1 * Auto generated files * Restyled by whitespace * Fixes issue #690 --------- Co-authored-by: Restyled.io --- .../suites/certification/Test_TC_ACE_1_5.yaml | 16 +- .../certification/Test_TC_ACL_2_10.yaml | 17 +- .../suites/certification/Test_TC_ACL_2_7.yaml | 20 +- .../suites/certification/Test_TC_ACL_2_8.yaml | 20 +- .../Test_TC_ACT_3_1_Simulated.yaml | 108 +++++++++ .../Test_TC_BOOL_3_1_Simulated.yaml | 30 +++ .../certification/Test_TC_BRBINFO_2_1.yaml | 2 +- .../certification/Test_TC_BRBINFO_2_3.yaml | 56 ++--- .../Test_TC_FLW_3_1_Simulated.yaml | 38 +++ .../suites/certification/Test_TC_G_2_3.yaml | 122 ++++++---- .../Test_TC_I_3_1_Simulated.yaml | 30 +++ .../Test_TC_PRS_3_1_Simulated.yaml | 43 ++++ .../Test_TC_PSCFG_3_1_Simulated.yaml | 30 +++ .../Test_TC_SWTCH_3_1_Simulated.yaml | 34 +++ .../chip-tool/zap-generated/test/Commands.h | 84 ++++++- .../zap-generated/test/Commands.h | 30 ++- .../app1/zap-generated/test/Commands.h | 224 +++++++++++++++++- .../app2/zap-generated/test/Commands.h | 224 +++++++++++++++++- 18 files changed, 999 insertions(+), 129 deletions(-) diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml index 7f71142d39b160..75dcd4e537f0df 100644 --- a/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACE_1_5.yaml @@ -22,6 +22,12 @@ config: payload: type: char_string defaultValue: "MT:-24J0AFN00KA0648G00" + discriminator: + type: int16u + defaultValue: 3840 + PakeVerifier: + type: octet_string + defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf" tests: - label: "Wait for the commissioned device to be retrieved for TH1" @@ -41,12 +47,20 @@ tests: - label: "Open Commissioning Window from alpha" cluster: "Administrator Commissioning" - command: "OpenBasicCommissioningWindow" + command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: values: - name: "CommissioningTimeout" value: 180 + - name: "PAKEPasscodeVerifier" + value: PakeVerifier + - name: "Discriminator" + value: discriminator + - name: "Iterations" + value: 1000 + - name: "Salt" + value: "SPAKE2P Key Salt" - label: "Commission from TH2" identity: "beta" diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml index a514fec00b511c..3f52bd29623551 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml @@ -31,6 +31,9 @@ config: payload: type: char_string defaultValue: "MT:-24J0AFN00KA0648G00" + PakeVerifier: + type: octet_string + defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf" D_OK_EMPTY: type: octet_string defaultValue: "hex:1718" @@ -64,16 +67,22 @@ tests: response: saveAs: TH1FabricIndex - - label: - "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT - using admin node ID N2" + - label: "Step 3:TH1 puts DUT into commissioning mode" cluster: "Administrator Commissioning" - command: "OpenBasicCommissioningWindow" + command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: values: - name: "CommissioningTimeout" value: 180 + - name: "PAKEPasscodeVerifier" + value: PakeVerifier + - name: "Discriminator" + value: discriminator + - name: "Iterations" + value: 1000 + - name: "Salt" + value: "SPAKE2P Key Salt" - label: "TH2 starts a commissioning process with DUT" identity: "beta" diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml index 38be34e85320de..cca2cec6d76409 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml @@ -28,6 +28,12 @@ config: payload: type: char_string defaultValue: "MT:-24J0AFN00KA0648G00" + discriminator: + type: int16u + defaultValue: 3840 + PakeVerifier: + type: octet_string + defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf" D_OK_EMPTY: type: octet_string defaultValue: "hex:1718" @@ -61,16 +67,22 @@ tests: response: saveAs: TH1FabricIndex - - label: - "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT - using admin node ID N2" + - label: "Step 3:TH1 puts DUT into commissioning mode" cluster: "Administrator Commissioning" - command: "OpenBasicCommissioningWindow" + command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: values: - name: "CommissioningTimeout" value: 180 + - name: "PAKEPasscodeVerifier" + value: PakeVerifier + - name: "Discriminator" + value: discriminator + - name: "Iterations" + value: 1000 + - name: "Salt" + value: "SPAKE2P Key Salt" - label: "Step 4:TH2 starts a commissioning process with DUT" identity: "beta" diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml index b4865ea186de2b..f744b108df2649 100644 --- a/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml @@ -27,6 +27,12 @@ config: payload: type: char_string defaultValue: "MT:-24J0AFN00KA0648G00" + discriminator: + type: int16u + defaultValue: 3840 + PakeVerifier: + type: octet_string + defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf" tests: - label: "Wait for the commissioned device to be retrieved" @@ -53,16 +59,22 @@ tests: response: saveAs: TH1FabricIndex - - label: - "TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin - node ID N2" + - label: "TH1 puts DUT into commissioning mode" cluster: "Administrator Commissioning" - command: "OpenBasicCommissioningWindow" + command: "OpenCommissioningWindow" timedInteractionTimeoutMs: 10000 arguments: values: - name: "CommissioningTimeout" value: 180 + - name: "PAKEPasscodeVerifier" + value: PakeVerifier + - name: "Discriminator" + value: discriminator + - name: "Iterations" + value: 1000 + - name: "Salt" + value: "SPAKE2P Key Salt" - label: "TH2 starts a commissioning process with DUT" identity: "beta" diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml index 603a75ea3c6d9b..82191e78bf1efd 100644 --- a/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_ACT_3_1_Simulated.yaml @@ -449,3 +449,111 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + Optional attibute + + ./chip-tool actions read setup-url 1 1 + + Verify the Unsupported attribute on the TH(all-clusters-minnimal-app) Log + + [1666952609.343159][217377:217377] CHIP:DMG: ReadRequestMessage = + [1666952609.343185][217377:217377] CHIP:DMG: { + [1666952609.343205][217377:217377] CHIP:DMG: AttributePathIBs = + [1666952609.343228][217377:217377] CHIP:DMG: [ + [1666952609.343248][217377:217377] CHIP:DMG: AttributePathIB = + [1666952609.343272][217377:217377] CHIP:DMG: { + [1666952609.343296][217377:217377] CHIP:DMG: Endpoint = 0x1, + [1666952609.343319][217377:217377] CHIP:DMG: Cluster = 0x25, + [1666952609.343344][217377:217377] CHIP:DMG: Attribute = 0x0000_0002, + [1666952609.343366][217377:217377] CHIP:DMG: } + [1666952609.343396][217377:217377] CHIP:DMG: + [1666952609.343414][217377:217377] CHIP:DMG: ], + [1666952609.343437][217377:217377] CHIP:DMG: + [1666952609.343456][217377:217377] CHIP:DMG: isFabricFiltered = true, + [1666952609.343474][217377:217377] CHIP:DMG: InteractionModelRevision = 1 + [1666952609.343491][217377:217377] CHIP:DMG: }, + [1666952609.343573][217377:217377] CHIP:DMG: IM RH moving to [GeneratingReports] + [1666952609.343647][217377:217377] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1666952609.343671][217377:217377] CHIP:DMG: Cluster 25, Attribute 2 is dirty + [1666952609.343688][217377:217377] CHIP:DMG: Reading attribute: Cluster=0x0000_0025 Endpoint=1 AttributeId=0x0000_0002 (expanded=0) + [1666952609.343733][217377:217377] CHIP:DMG: Sending report (payload has 33 bytes)... + [1666952609.344066][217377:217377] CHIP:EM: <<< [E:37827r M:202875336 (Ack:199155625)] (S) Msg TX to 1:000000000001B669 [AE59] --- Type 0001:05 (IM:ReportData) + [1666952609.344128][217377:217377] CHIP:IN: (S) Sending msg 202875336 on secure session with LSID: 63116 + [1666952609.344547][217377:217377] CHIP:DMG: >> to UDP:[fe80::485c:bace:6107:3682%wlp3s0]:46813 | 202875336 | [Interaction Model (1) / Report Data (0x05) / Session = 20214 / Exchange = 37827] + [1666952609.344601][217377:217377] CHIP:DMG: Header Flags = + [1666952609.344623][217377:217377] CHIP:DMG: { + [1666952609.344664][217377:217377] CHIP:DMG: Exchange (0x06) = + [1666952609.344681][217377:217377] CHIP:DMG: { + [1666952609.344703][217377:217377] CHIP:DMG: AckMsg = 199155625 + [1666952609.344723][217377:217377] CHIP:DMG: NeedsAck = true + [1666952609.344741][217377:217377] CHIP:DMG: } + [1666952609.344770][217377:217377] CHIP:DMG: } + [1666952609.344788][217377:217377] CHIP:DMG: + [1666952609.344816][217377:217377] CHIP:DMG: Encrypted Payload (67 bytes) = + [1666952609.344836][217377:217377] CHIP:DMG: { + [1666952609.344856][217377:217377] CHIP:DMG: data = 00f64e00c8a1170c0f5d4a4d9195a985ad54b3de870e336b0ecfaa7373615ca174138e2959606cb26476c70d8149a1435824f8e4446d9cc896de6c6d7b7275ea265d7c + [1666952609.344878][217377:217377] CHIP:DMG: buffer_ptr = 94384713812256 + [1666952609.344897][217377:217377] CHIP:DMG: } + [1666952609.344915][217377:217377] CHIP:DMG: + [1666952609.344947][217377:217377] CHIP:DMG: Decrypted Payload (33 bytes) = + [1666952609.344967][217377:217377] CHIP:DMG: { + [1666952609.344986][217377:217377] CHIP:DMG: data = 153601153500370024020124032524040218350124008618181818290424ff0118 + [1666952609.345007][217377:217377] CHIP:DMG: } + [1666952609.345024][217377:217377] CHIP:DMG: + [1666952609.345097][217377:217377] CHIP:DMG: ReportDataMessage = + [1666952609.345124][217377:217377] CHIP:DMG: { + [1666952609.345144][217377:217377] CHIP:DMG: AttributeReportIBs = + [1666952609.345174][217377:217377] CHIP:DMG: [ + [1666952609.345193][217377:217377] CHIP:DMG: AttributeReportIB = + [1666952609.345224][217377:217377] CHIP:DMG: { + [1666952609.345244][217377:217377] CHIP:DMG: AttributeStatusIB = + [1666952609.345269][217377:217377] CHIP:DMG: { + [1666952609.345290][217377:217377] CHIP:DMG: AttributePathIB = + [1666952609.345320][217377:217377] CHIP:DMG: { + [1666952609.345346][217377:217377] CHIP:DMG: Endpoint = 0x1, + [1666952609.345373][217377:217377] CHIP:DMG: Cluster = 0x25, + [1666952609.345403][217377:217377] CHIP:DMG: Attribute = 0x0000_0002, + [1666952609.345431][217377:217377] CHIP:DMG: } + [1666952609.345462][217377:217377] CHIP:DMG: + [1666952609.345489][217377:217377] CHIP:DMG: StatusIB = + [1666952609.345519][217377:217377] CHIP:DMG: { + [1666952609.345543][217377:217377] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), + [1666952609.345570][217377:217377] CHIP:DMG: }, + [1666952609.345595][217377:217377] CHIP:DMG: + [1666952609.345617][217377:217377] CHIP:DMG: }, + [1666952609.345647][217377:217377] CHIP:DMG: + [1666952609.345668][217377:217377] CHIP:DMG: }, + [1666952609.345698][217377:217377] CHIP:DMG: + [1666952609.345718][217377:217377] CHIP:DMG: ], + [1666952609.345750][217377:217377] CHIP:DMG: + [1666952609.345771][217377:217377] CHIP:DMG: SuppressResponse = true, + [1666952609.345792][217377:217377] CHIP:DMG: InteractionModelRevision = 1 + [1666952609.345811][217377:217377] CHIP:DMG: } + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml index c9b6f7ce1b5476..9999df777ec779 100644 --- a/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_BOOL_3_1_Simulated.yaml @@ -323,3 +323,33 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + This cluster doesn't have any optional attribute + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml index 80d0966702ab14..7390b5b4093acc 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_1.yaml @@ -137,7 +137,7 @@ tests: - label: "TH writes NodeLabel from the DUT." PICS: BRBINFO.S.A0005 && PICS_USER_PROMPT verification: | - ./chip-tool bridgeddevicebasic write node-label '"newnode"' 1 3 + ./chip-tool bridgeddevicebasicinformation write node-label '"newnode"' 1 3 Verify response has unsupported write on TH(chip-tool) Log: diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml index 7461750e3b08dd..ac89c2eff1b992 100644 --- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml @@ -497,42 +497,26 @@ tests: Optional Attribute - If it is supported, then in TH(bridge-app) log it will results in displaying the ReportDataMessage , else it will display UNSUPPORTED_ATTRIBUTE Example Log: - [1663658944.254117][3274:3274] CHIP:DMG: - [1663658944.254195][3274:3274] CHIP:DMG: ReportDataMessage = - [1663658944.254224][3274:3274] CHIP:DMG: { - [1663658944.254248][3274:3274] CHIP:DMG: AttributeReportIBs = - [1663658944.254286][3274:3274] CHIP:DMG: [ - [1663658944.254313][3274:3274] CHIP:DMG: AttributeReportIB = - [1663658944.254348][3274:3274] CHIP:DMG: { - [1663658944.254380][3274:3274] CHIP:DMG: AttributeStatusIB = - [1663658944.254419][3274:3274] CHIP:DMG: { - [1663658944.254456][3274:3274] CHIP:DMG: AttributePathIB = - [1663658944.254497][3274:3274] CHIP:DMG: { - [1663658944.254539][3274:3274] CHIP:DMG: Endpoint = 0x3, - [1663658944.254575][3274:3274] CHIP:DMG: Cluster = 0x39, - [1663658944.254614][3274:3274] CHIP:DMG: Attribute = 0x0000_000C, - [1663658944.254648][3274:3274] CHIP:DMG: } - [1663658944.254690][3274:3274] CHIP:DMG: - [1663658944.254723][3274:3274] CHIP:DMG: StatusIB = - [1663658944.254762][3274:3274] CHIP:DMG: { - [1663658944.254835][3274:3274] CHIP:DMG: status = 0x86 (UNSUPPORTED_ATTRIBUTE), - [1663658944.254876][3274:3274] CHIP:DMG: }, - [1663658944.254919][3274:3274] CHIP:DMG: - [1663658944.254954][3274:3274] CHIP:DMG: }, - [1663658944.254994][3274:3274] CHIP:DMG: - [1663658944.255019][3274:3274] CHIP:DMG: }, - [1663658944.255055][3274:3274] CHIP:DMG: - [1663658944.255081][3274:3274] CHIP:DMG: ], - [1663658944.255113][3274:3274] CHIP:DMG: - [1663658944.255141][3274:3274] CHIP:DMG: SuppressResponse = true, - [1663658944.255170][3274:3274] CHIP:DMG: InteractionModelRevision = 1 - [1663658944.255196][3274:3274] CHIP:DMG: } - [1663658944.255222][3274:3274] CHIP:DMG: - [1663658944.255463][3274:3274] CHIP:DMG: OnReportConfirm: NumReports = 0 - [1663658944.255543][3274:3274] CHIP:DMG: ReportsInFlight = 0 with readHandler 0, RE has no more messages - [1663658944.255573][3274:3274] CHIP:DMG: IM RH moving to [AwaitingDestruction] - [1663658944.255609][3274:3274] CHIP:DMG: All ReadHandler-s are clean, clear GlobalDirtySet - [1663658944.256310][3274:3274] CHIP:DMG: << from UDP:[fe80::e65f:1ff:fe0e:baf7%eth0]:58756 | 188321411 | [Secure Channel (0) / Standalone Ack (0x10) / Session = 0 / Exchange = 17890] + + [1662483368.089998][6721:6721] CHIP:DMG: ReadRequestMessage = + [1662483368.090026][6721:6721] CHIP:DMG: { + [1662483368.090047][6721:6721] CHIP:DMG: AttributePathIBs = + [1662483368.090100][6721:6721] CHIP:DMG: [ + [1662483368.090126][6721:6721] CHIP:DMG: AttributePathIB = + [1662483368.090154][6721:6721] CHIP:DMG: { + [1662483368.090182][6721:6721] CHIP:DMG: Endpoint = 0x3, + [1662483368.090214][6721:6721] CHIP:DMG: Cluster = 0x39, + [1662483368.090244][6721:6721] CHIP:DMG: Attribute = 0x0000_000D, + [1662483368.090272][6721:6721] CHIP:DMG: } + [1662483368.090299][6721:6721] CHIP:DMG: + [1662483368.090324][6721:6721] CHIP:DMG: ], + [1662483368.090352][6721:6721] CHIP:DMG: + [1662483368.090378][6721:6721] CHIP:DMG: isFabricFiltered = true, + [1662483368.090403][6721:6721] CHIP:DMG: InteractionModelRevision = 1 + [1662483368.090426][6721:6721] CHIP:DMG: }, + [1662483368.090499][6721:6721] CHIP:DMG: IM RH moving to [GeneratingReports] + [1662483368.090578][6721:6721] CHIP:DMG: Building Reports for ReadHandler with LastReportGeneration = 0 DirtyGeneration = 0 + [1662483368.090607][6721:6721] CHIP:DMG: Cluster 39, Attribute d is dirty disabled: true - label: "DUT reads ProductLabel from the TH" diff --git a/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml index d32135b4ec592d..de8b26fe9e1fc0 100644 --- a/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_FLW_3_1_Simulated.yaml @@ -371,3 +371,41 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + Verify TH(all-clusters-minimal-app) receives the read command, and responds that this attribute is not available and also DUT is aware that the optional attributes are not available, and does not issue read requests for the attributes which it did read in step 2 + + + ./chip-tool flowmeasurement read tolerance 1 1 + + Verify Tolerance response on the TH(all-clusters-minimal-app) Log: + + on TH all-clusters-minimal-app verify status response a UNSUPPORTED_ATTRIBUTE + General error: 0x86 (UNSUPPORTED_ATTRIBUTE) + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_G_2_3.yaml b/src/app/tests/suites/certification/Test_TC_G_2_3.yaml index c7345794dfd14d..6abeafc4e6d379 100644 --- a/src/app/tests/suites/certification/Test_TC_G_2_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_G_2_3.yaml @@ -191,54 +191,82 @@ tests: [1663071815.845337][23720:23725] CHIP:DMG: }, - Before adding the Groups (0x0008) execute this command + Before adding the Groups (0x0008,0x0009) execute this command + + ./chip-tool groupkeymanagement write group-key-map '[{"groupId":8, "groupKeySetID": 1, "fabricIndex": 1},{"groupId": 9, "groupKeySetID": 1,"fabricIndex": 1}]' 1 0 + + + Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: + + + [1674551849.075921][20994:20996] CHIP:DMG: WriteResponseMessage = + [1674551849.075924][20994:20996] CHIP:DMG: { + [1674551849.075926][20994:20996] CHIP:DMG: AttributeStatusIBs = + [1674551849.075931][20994:20996] CHIP:DMG: [ + [1674551849.075934][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.075937][20994:20996] CHIP:DMG: { + [1674551849.075940][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.075943][20994:20996] CHIP:DMG: { + [1674551849.075947][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.075950][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.075953][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.075956][20994:20996] CHIP:DMG: } + [1674551849.075961][20994:20996] CHIP:DMG: + [1674551849.075964][20994:20996] CHIP:DMG: StatusIB = + [1674551849.075967][20994:20996] CHIP:DMG: { + [1674551849.075971][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.075974][20994:20996] CHIP:DMG: }, + [1674551849.075977][20994:20996] CHIP:DMG: + [1674551849.075980][20994:20996] CHIP:DMG: }, + [1674551849.075986][20994:20996] CHIP:DMG: + [1674551849.075989][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.075991][20994:20996] CHIP:DMG: { + [1674551849.075994][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.075997][20994:20996] CHIP:DMG: { + [1674551849.076000][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.076003][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.076006][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.076010][20994:20996] CHIP:DMG: ListIndex = Null, + [1674551849.076012][20994:20996] CHIP:DMG: } + [1674551849.076017][20994:20996] CHIP:DMG: + [1674551849.076020][20994:20996] CHIP:DMG: StatusIB = + [1674551849.076022][20994:20996] CHIP:DMG: { + [1674551849.076025][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.076028][20994:20996] CHIP:DMG: }, + [1674551849.076031][20994:20996] CHIP:DMG: + [1674551849.076034][20994:20996] CHIP:DMG: }, + [1674551849.076040][20994:20996] CHIP:DMG: + [1674551849.076043][20994:20996] CHIP:DMG: AttributeStatusIB = + [1674551849.076046][20994:20996] CHIP:DMG: { + [1674551849.076048][20994:20996] CHIP:DMG: AttributePathIB = + [1674551849.076051][20994:20996] CHIP:DMG: { + [1674551849.076054][20994:20996] CHIP:DMG: Endpoint = 0x0, + [1674551849.076057][20994:20996] CHIP:DMG: Cluster = 0x3f, + [1674551849.076060][20994:20996] CHIP:DMG: Attribute = 0x0000_0000, + [1674551849.076063][20994:20996] CHIP:DMG: ListIndex = Null, + [1674551849.076066][20994:20996] CHIP:DMG: } + [1674551849.076071][20994:20996] CHIP:DMG: + [1674551849.076074][20994:20996] CHIP:DMG: StatusIB = + [1674551849.076076][20994:20996] CHIP:DMG: { + [1674551849.076080][20994:20996] CHIP:DMG: status = 0x00 (SUCCESS), + [1674551849.076082][20994:20996] CHIP:DMG: }, + [1674551849.076085][20994:20996] CHIP:DMG: + [1674551849.076088][20994:20996] CHIP:DMG: }, + [1674551849.076092][20994:20996] CHIP:DMG: + [1674551849.076094][20994:20996] CHIP:DMG: ], + [1674551849.076102][20994:20996] CHIP:DMG: + [1674551849.076105][20994:20996] CHIP:DMG: InteractionModelRevision = 1 + [1674551849.076108][20994:20996] CHIP:DMG: } + + + + Before adding the Group0x0005 execute this command which is used to check the Resource_Exhausted Condition + + ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 5, "groupKeySetID": 1, "fabricIndex": 1}]' 1 0 + + + Verify the "status is success" on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform: - ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 8, "groupKeySetID": 1, "fabricIndex": 1}]' 1 0 - - Verify the "status is success" on the TH(Chip-tool) Log: - - [1663071878.472457][23730:23735] CHIP:DMG: WriteClient moving to [ResponseRe] - [1663071878.472525][23730:23735] CHIP:DMG: WriteResponseMessage = - [1663071878.472560][23730:23735] CHIP:DMG: { - [1663071878.472607][23730:23735] CHIP:DMG: AttributeStatusIBs = - [1663071878.472649][23730:23735] CHIP:DMG: [ - [1663071878.472702][23730:23735] CHIP:DMG: AttributeStatusIB = - [1663071878.472743][23730:23735] CHIP:DMG: { - [1663071878.472779][23730:23735] CHIP:DMG: AttributePathIB = - [1663071878.472838][23730:23735] CHIP:DMG: { - [1663071878.472893][23730:23735] CHIP:DMG: Endpoint = 0x0, - [1663071878.472939][23730:23735] CHIP:DMG: Cluster = 0x3f, - [1663071878.473002][23730:23735] CHIP:DMG: Attribute = 0x0000_0000, - [1663071878.473044][23730:23735] CHIP:DMG: } - [1663071878.473104][23730:23735] CHIP:DMG: - [1663071878.473154][23730:23735] CHIP:DMG: StatusIB = - [1663071878.473200][23730:23735] CHIP:DMG: { - [1663071878.473257][23730:23735] CHIP:DMG: status = 0x00 (SUCCESS), - [1663071878.473297][23730:23735] CHIP:DMG: }, - [1663071878.473349][23730:23735] CHIP:DMG: - [1663071878.473384][23730:23735] CHIP:DMG: }, - [1663071878.473442][23730:23735] CHIP:DMG: - [1663071878.473476][23730:23735] CHIP:DMG: AttributeStatusIB = - [1663071878.473524][23730:23735] CHIP:DMG: { - [1663071878.473559][23730:23735] CHIP:DMG: AttributePathIB = - [1663071878.473613][23730:23735] CHIP:DMG: { - [1663071878.473656][23730:23735] CHIP:DMG: Endpoint = 0x0, - [1663071878.473714][23730:23735] CHIP:DMG: Cluster = 0x3f, - [1663071878.473759][23730:23735] CHIP:DMG: Attribute = 0x0000_0000, - [1663071878.473814][23730:23735] CHIP:DMG: ListIndex = Null, - [1663071878.473855][23730:23735] CHIP:DMG: } - [1663071878.473913][23730:23735] CHIP:DMG: - [1663071878.473953][23730:23735] CHIP:DMG: StatusIB = - [1663071878.474006][23730:23735] CHIP:DMG: { - [1663071878.474048][23730:23735] CHIP:DMG: status = 0x00 (SUCCESS), - [1663071878.474104][23730:23735] CHIP:DMG: }, - - - Before adding the Group0x0009 execute this command which is used to check the Resource_Exhausted Condition - - ./chip-tool groupkeymanagement write group-key-map '[{"groupId": 9, "groupKeySetID": 1, "fabricIndex": 1}]' 1 0 - - Verify the "status is success" on the TH(Chip-tool) Log: [1658319969.849079][4777:4782] CHIP:DMG: StatusIB = [1658319969.849119][4777:4782] CHIP:DMG: { diff --git a/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml index ba42c2ea920967..68bf2f90ced322 100644 --- a/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_I_3_1_Simulated.yaml @@ -483,3 +483,33 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + There is no optional attribute for this cluster + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml index b60ecfcb0e91d0..530b60ab96d782 100644 --- a/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_PRS_3_1_Simulated.yaml @@ -177,3 +177,46 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + TH all-clusters-minimal-app does not support optional attributes, if implemted we will get "General error: 0x86 (UNSUPPORTED_ATTRIBUTE)" as output when we read following attributes. + + + Product maker needs to provide instructions for how to trigger the command on the DUT. For comparison, the DUT behavior for this test step can be simulated using chip-tool (when DUT is a commissioner/Client) + + + TH receives the read command and knows this attribute for this cluster and provides a plausable value, DUT processes the values and operates normally + + ./chip-tool pressuremeasurement read tolerance 1 1 + ./chip-tool pressuremeasurement read scaled-value 1 1 + ./chip-tool pressuremeasurement read min-scaled-value 1 1 + ./chip-tool pressuremeasurement read max-scaled-value 1 1 + ./chip-tool pressuremeasurement read scaled-tolerance 1 1 + ./chip-tool pressuremeasurement read scale 1 1 + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_PSCFG_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_PSCFG_3_1_Simulated.yaml index 8944a46fd3c5a8..f7bb3f17aed002 100644 --- a/src/app/tests/suites/certification/Test_TC_PSCFG_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_PSCFG_3_1_Simulated.yaml @@ -104,3 +104,33 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + This cluster doesn't have any optional attribute + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml index beb30524e705af..3731be32c9cd40 100644 --- a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml +++ b/src/app/tests/suites/certification/Test_TC_SWTCH_3_1_Simulated.yaml @@ -311,3 +311,37 @@ tests: value: "Enter 'y' after success" - name: "expectedValue" value: "y" + + - label: + "DUT reads all supported optional attributes from TH one at a time in + a manufacturer specific order" + verification: | + TH all-clusters-minimal-app does not support optional attributes + + ./chip-tool switch read multi-press-max 1 1 + + status = 0x86 (UNSUPPORTED_ATTRIBUTE), + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" + + - label: + "DUT writes a suitable value to all supported optional attributes on + the TH one at a time in a manufacturer specific order" + verification: | + This cluster doesn't have any writable attributes + cluster: "LogCommands" + command: "UserPrompt" + PICS: PICS_SKIP_SAMPLE_APP + arguments: + values: + - name: "message" + value: "Enter 'y' after success" + - name: "expectedValue" + value: "y" diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index e8fe2755873805..f90e2077ce7db9 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -5601,6 +5601,8 @@ class Test_TC_ACL_2_7Suite : public TestCommand AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); AddArgument("payload", &mPayload); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("D_OK_EMPTY", &mDOkEmpty); AddArgument("D_OK_SINGLE", &mDOkSingle); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); @@ -5619,6 +5621,8 @@ class Test_TC_ACL_2_7Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mNodeId2; chip::Optional mPayload; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::Optional mDOkEmpty; chip::Optional mDOkSingle; chip::Optional mTimeout; @@ -5835,12 +5839,24 @@ class Test_TC_ACL_2_7Suite : public TestCommand OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); + LogStep(3, "Step 3:TH1 puts DUT into commissioning mode"); ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; + value.PAKEPasscodeVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20" + "\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d" + "\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51" + "\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf"), + 97); + value.discriminator = mDiscriminator.HasValue() ? mDiscriminator.Value() : 3840U; + value.iterations = 1000UL; + value.salt = chip::ByteSpan(chip::Uint8::from_const_char("SPAKE2P Key Saltgarbage: not in length on purpose"), 16); return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + AdministratorCommissioning::Commands::OpenCommissioningWindow::Id, value, chip::Optional(10000), chip::NullOptional ); @@ -5964,6 +5980,8 @@ class Test_TC_ACL_2_8Suite : public TestCommand AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); AddArgument("payload", &mPayload); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -5980,6 +5998,8 @@ class Test_TC_ACL_2_8Suite : public TestCommand chip::Optional mEndpoint; chip::Optional mNodeId2; chip::Optional mPayload; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::Optional mTimeout; chip::NodeId TH1CommissionerNodeId; @@ -6376,12 +6396,24 @@ class Test_TC_ACL_2_8Suite : public TestCommand OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); + LogStep(3, "TH1 puts DUT into commissioning mode"); ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; + value.PAKEPasscodeVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20" + "\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d" + "\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51" + "\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf"), + 97); + value.discriminator = mDiscriminator.HasValue() ? mDiscriminator.Value() : 3840U; + value.iterations = 1000UL; + value.salt = chip::ByteSpan(chip::Uint8::from_const_char("SPAKE2P Key Saltgarbage: not in length on purpose"), 16); return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + AdministratorCommissioning::Commands::OpenCommissioningWindow::Id, value, chip::Optional(10000), chip::NullOptional ); @@ -6803,6 +6835,7 @@ class Test_TC_ACL_2_10Suite : public TestCommand AddArgument("nodeId2", 0, UINT64_MAX, &mNodeId2); AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); AddArgument("payload", &mPayload); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("D_OK_EMPTY", &mDOkEmpty); AddArgument("D_OK_SINGLE", &mDOkSingle); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); @@ -6822,6 +6855,7 @@ class Test_TC_ACL_2_10Suite : public TestCommand chip::Optional mNodeId2; chip::Optional mDiscriminator; chip::Optional mPayload; + chip::Optional mPakeVerifier; chip::Optional mDOkEmpty; chip::Optional mDOkSingle; chip::Optional mTimeout; @@ -7058,12 +7092,24 @@ class Test_TC_ACL_2_10Suite : public TestCommand OperationalCredentials::Attributes::CurrentFabricIndex::Id, true, chip::NullOptional); } case 3: { - LogStep(3, "Step 3:TH1 puts DUT into commissioning mode, TH2 commissions DUT using admin node ID N2"); + LogStep(3, "Step 3:TH1 puts DUT into commissioning mode"); ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; + value.PAKEPasscodeVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20" + "\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d" + "\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51" + "\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf"), + 97); + value.discriminator = mDiscriminator.HasValue() ? mDiscriminator.Value() : 3840U; + value.iterations = 1000UL; + value.salt = chip::ByteSpan(chip::Uint8::from_const_char("SPAKE2P Key Saltgarbage: not in length on purpose"), 16); return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + AdministratorCommissioning::Commands::OpenCommissioningWindow::Id, value, chip::Optional(10000), chip::NullOptional ); @@ -8266,6 +8312,8 @@ class Test_TC_ACE_1_5Suite : public TestCommand AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("payload", &mPayload); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } @@ -8281,6 +8329,8 @@ class Test_TC_ACE_1_5Suite : public TestCommand chip::Optional mCluster; chip::Optional mEndpoint; chip::Optional mPayload; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::Optional mTimeout; uint8_t th1FabricIndex; @@ -8416,10 +8466,22 @@ class Test_TC_ACE_1_5Suite : public TestCommand case 2: { LogStep(2, "Open Commissioning Window from alpha"); ListFreer listFreer; - chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Type value; + chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Type value; value.commissioningTimeout = 180U; + value.PAKEPasscodeVerifier = mPakeVerifier.HasValue() + ? mPakeVerifier.Value() + : chip::ByteSpan( + chip::Uint8::from_const_char( + "\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb\x20" + "\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22\x73\x6d" + "\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91\x3c\x53\x51" + "\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf"), + 97); + value.discriminator = mDiscriminator.HasValue() ? mDiscriminator.Value() : 3840U; + value.iterations = 1000UL; + value.salt = chip::ByteSpan(chip::Uint8::from_const_char("SPAKE2P Key Saltgarbage: not in length on purpose"), 16); return SendCommand(kIdentityAlpha, GetEndpoint(0), AdministratorCommissioning::Id, - AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::Id, value, + AdministratorCommissioning::Commands::OpenCommissioningWindow::Id, value, chip::Optional(10000), chip::NullOptional ); diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h index 7d3cb336def135..afb2835d1a3ccd 100644 --- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h +++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h @@ -5563,6 +5563,8 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { AddArgument("cluster", &mCluster); AddArgument("endpoint", 0, UINT16_MAX, &mEndpoint); AddArgument("payload", &mPayload); + AddArgument("discriminator", 0, UINT16_MAX, &mDiscriminator); + AddArgument("PakeVerifier", &mPakeVerifier); AddArgument("timeout", 0, UINT16_MAX, &mTimeout); } // NOLINTEND(clang-analyzer-nullability.NullPassedToNonnull) @@ -5733,6 +5735,8 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { chip::Optional mCluster; chip::Optional mEndpoint; chip::Optional mPayload; + chip::Optional mDiscriminator; + chip::Optional mPakeVerifier; chip::Optional mTimeout; CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrievedForTh1_0() @@ -5777,16 +5781,28 @@ class Test_TC_ACE_1_5 : public TestCommandBridge { queue:mCallbackQueue]; VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); - __auto_type * params = [[MTRAdministratorCommissioningClusterOpenBasicCommissioningWindowParams alloc] init]; + __auto_type * params = [[MTRAdministratorCommissioningClusterOpenCommissioningWindowParams alloc] init]; params.commissioningTimeout = [NSNumber numberWithUnsignedShort:180U]; - [cluster openBasicCommissioningWindowWithParams:params - completion:^(NSError * _Nullable err) { - NSLog(@"Open Commissioning Window from alpha Error: %@", err); + params.pakePasscodeVerifier = mPakeVerifier.HasValue() + ? [NSData dataWithBytes:mPakeVerifier.Value().data() length:mPakeVerifier.Value().size()] + : [[NSData alloc] + initWithBytes:"\xb9\x61\x70\xaa\xe8\x03\x34\x68\x84\x72\x4f\xe9\xa3\xb2\x87\xc3\x03\x30\xc2\xa6\x60\x37\x5d\x17\xbb" + "\x20\x5a\x8c\xf1\xae\xcb\x35\x04\x57\xf8\xab\x79\xee\x25\x3a\xb6\xa8\xe4\x6b\xb0\x9e\x54\x3a\xe4\x22" + "\x73\x6d\xe5\x01\xe3\xdb\x37\xd4\x41\xfe\x34\x49\x20\xd0\x95\x48\xe4\xc1\x82\x40\x63\x0c\x4f\xf4\x91" + "\x3c\x53\x51\x38\x39\xb7\xc0\x7f\xcc\x06\x27\xa1\xb8\x57\x3a\x14\x9f\xcd\x1f\xa4\x66\xcf" + length:97]; + params.discriminator = mDiscriminator.HasValue() ? [NSNumber numberWithUnsignedShort:mDiscriminator.Value()] + : [NSNumber numberWithUnsignedShort:3840U]; + params.iterations = [NSNumber numberWithUnsignedInt:1000UL]; + params.salt = [[NSData alloc] initWithBytes:"SPAKE2P Key Salt" length:16]; + [cluster openCommissioningWindowWithParams:params + completion:^(NSError * _Nullable err) { + NSLog(@"Open Commissioning Window from alpha Error: %@", err); - VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); + VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0)); - NextTest(); - }]; + NextTest(); + }]; return CHIP_NO_ERROR; } diff --git a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h index 5e3bae14d80d99..674574a3b1b3c7 100644 --- a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h @@ -198,7 +198,7 @@ class Test_TC_BINFO_2_3_SimulatedSuite : public TestCommand class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 5) + Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 7) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -234,6 +234,14 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -280,6 +288,28 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 5: { + LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 6: { + LogStep(6, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -288,7 +318,7 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 3) + Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -324,6 +354,14 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -362,6 +400,28 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 3: { + LogStep(3, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 4: { + LogStep(4, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -780,7 +840,7 @@ class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 6) + Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 8) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -816,6 +876,14 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -866,6 +934,28 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 6: { + LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -940,7 +1030,7 @@ class Test_TC_G_3_1_SimulatedSuite : public TestCommand class Test_TC_I_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 6) + Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 8) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -976,6 +1066,14 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1026,6 +1124,28 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 6: { + LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1034,7 +1154,7 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 11) + Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 13) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1070,6 +1190,14 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1140,6 +1268,28 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 11: { + LogStep(11, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 12: { + LogStep(12, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1333,7 +1483,7 @@ class Test_TC_PS_3_1_SimulatedSuite : public TestCommand class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_1_Simulated", 3) + Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1369,6 +1519,14 @@ class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1407,6 +1565,28 @@ class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 3: { + LogStep(3, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 4: { + LogStep(4, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1543,7 +1723,7 @@ class Test_TC_RH_3_1_SimulatedSuite : public TestCommand class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_1_Simulated", 5) + Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_1_Simulated", 7) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1579,6 +1759,14 @@ class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1625,6 +1813,28 @@ class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 5: { + LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 6: { + LogStep(6, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } diff --git a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h index 5e3bae14d80d99..674574a3b1b3c7 100644 --- a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h +++ b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h @@ -198,7 +198,7 @@ class Test_TC_BINFO_2_3_SimulatedSuite : public TestCommand class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 5) + Test_TC_ACT_3_1_SimulatedSuite() : TestCommand("Test_TC_ACT_3_1_Simulated", 7) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -234,6 +234,14 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -280,6 +288,28 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 5: { + LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 6: { + LogStep(6, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -288,7 +318,7 @@ class Test_TC_ACT_3_1_SimulatedSuite : public TestCommand class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 3) + Test_TC_BOOL_3_1_SimulatedSuite() : TestCommand("Test_TC_BOOL_3_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -324,6 +354,14 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -362,6 +400,28 @@ class Test_TC_BOOL_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 3: { + LogStep(3, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 4: { + LogStep(4, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -780,7 +840,7 @@ class Test_TC_DGWIFI_3_1_SimulatedSuite : public TestCommand class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 6) + Test_TC_FLW_3_1_SimulatedSuite() : TestCommand("Test_TC_FLW_3_1_Simulated", 8) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -816,6 +876,14 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -866,6 +934,28 @@ class Test_TC_FLW_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 6: { + LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -940,7 +1030,7 @@ class Test_TC_G_3_1_SimulatedSuite : public TestCommand class Test_TC_I_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 6) + Test_TC_I_3_1_SimulatedSuite() : TestCommand("Test_TC_I_3_1_Simulated", 8) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -976,6 +1066,14 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 7: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1026,6 +1124,28 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 6: { + LogStep(6, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 7: { + LogStep(7, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1034,7 +1154,7 @@ class Test_TC_I_3_1_SimulatedSuite : public TestCommand class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 11) + Test_TC_PRS_3_1_SimulatedSuite() : TestCommand("Test_TC_PRS_3_1_Simulated", 13) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1070,6 +1190,14 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 11: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 12: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1140,6 +1268,28 @@ class Test_TC_PRS_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 11: { + LogStep(11, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 12: { + LogStep(12, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1333,7 +1483,7 @@ class Test_TC_PS_3_1_SimulatedSuite : public TestCommand class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_1_Simulated", 3) + Test_TC_PSCFG_3_1_SimulatedSuite() : TestCommand("Test_TC_PSCFG_3_1_Simulated", 5) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1369,6 +1519,14 @@ class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 3: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 4: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1407,6 +1565,28 @@ class Test_TC_PSCFG_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 3: { + LogStep(3, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 4: { + LogStep(4, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; } @@ -1543,7 +1723,7 @@ class Test_TC_RH_3_1_SimulatedSuite : public TestCommand class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand { public: - Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_1_Simulated", 5) + Test_TC_SWTCH_3_1_SimulatedSuite() : TestCommand("Test_TC_SWTCH_3_1_Simulated", 7) { AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); AddArgument("cluster", &mCluster); @@ -1579,6 +1759,14 @@ class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); shouldContinue = true; break; + case 5: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; + case 6: + VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0)); + shouldContinue = true; + break; default: LogErrorOnFailure(ContinueOnChipMainThread(CHIP_ERROR_INVALID_ARGUMENT)); } @@ -1625,6 +1813,28 @@ class Test_TC_SWTCH_3_1_SimulatedSuite : public TestCommand value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); return UserPrompt(kIdentityAlpha, value); } + case 5: { + LogStep(5, "DUT reads all supported optional attributes from TH one at a time in a manufacturer specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } + case 6: { + LogStep(6, + "DUT writes a suitable value to all supported optional attributes on the TH one at a time in a manufacturer " + "specific order"); + VerifyOrDo(!ShouldSkip("PICS_SKIP_SAMPLE_APP"), return ContinueOnChipMainThread(CHIP_NO_ERROR)); + ListFreer listFreer; + chip::app::Clusters::LogCommands::Commands::UserPrompt::Type value; + value.message = chip::Span("Enter 'y' after successgarbage: not in length on purpose", 23); + value.expectedValue.Emplace(); + value.expectedValue.Value() = chip::Span("ygarbage: not in length on purpose", 1); + return UserPrompt(kIdentityAlpha, value); + } } return CHIP_NO_ERROR; }