# Copyright (c) 2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default

name:
    125.2.3. [TC-G-2.3] Commands - GetGroupMembership, AddGroupIfIdentifying
    [DUT-Server]

PICS:
    - G.S

config:
    nodeId: 0x12344321
    cluster: "Basic Information"
    endpoint: 0

tests:
    - label: "TH is commissioned with DUT"
      verification: |

      disabled: true

    - label:
          "Pre-Conditions: TH reads the MaxGroupsPerFabric from Group key
          Management Cluster and saves it as maxgroups"
      verification: |
          ./chip-tool groupkeymanagement read max-groups-per-fabric 1 0

          Verify the "MaxGroupsPerFabric value" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:


          [1674550919.106409][20702:20704] CHIP:DMG: }
          [1674550919.106442][20702:20704] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0002 DataVersion: 1314349257
          [1674550919.106455][20702:20704] CHIP:TOO:   MaxGroupsPerFabric: 4
      disabled: true

    - label: |
          Pre-Conditions: If maxgroups>0, proceed with the following steps

          TH generates fabric-unique GroupID, GroupName, random key, EpochKey0
          and GroupKeySetID.

          TH generates an EpochKey and saves as epoch_key_set1_epoch0

          TH sends a KeySetWriteCommand to the Group Key Management cluster with
          the following fields set in the GroupKeySet struct:

          GroupKeySetId is 1

          EpochKey0 is epoch_key_set0_epoch0

          GroupKeySecurityPolicy = TrustFirst (1)

          GroupKeyMulticastPolicy = PerGroupID (0)

          EpochStartTime0 = 0

          TH binds GroupId(0x0002 to (maxgroups+1)) with GroupKeySetID in the
          GroupKeyMap attribute list on GroupKeyManagement cluster with the
          values provided in the above steps

          TH binds GroupId(0x0006 to (maxgroups+1)) with GroupKeySetID in the
          GroupKeyMap attribute list on GroupKeyManagement cluster with the
          values provided in the above steps
      verification: |
          Execute the following command in TH to generate the pre-condition to execute this test case:


          ./chip-tool groupkeymanagement key-set-write '{"groupKeySetID": 1,
          "groupKeySecurityPolicy": 0, "epochKey0":
          "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1":
          "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2":
          "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }' 1 0

          Verify the "status is success" on the TH(Chip-tool)  Log:

          [1658316948.574526][4039:4044] CHIP:DMG:                                StatusIB =
          [1658316948.574561][4039:4044] CHIP:DMG:                                {
          [1658316948.574597][4039:4044] CHIP:DMG:                                   status = 0x00 (SUCCESS),
          [1658316948.574632][4039:4044] CHIP:DMG:                                },

          Before adding the Groups (0x0002,0x0003) execute this command

          ./chip-tool groupkeymanagement write group-key-map '[{"groupId":2, "groupKeySetID": 1, "fabricIndex": 1},{"groupId": 3, "groupKeySetID": 1,"fabricIndex": 1} ]' 1 0


          Verify the status is success on the TH Log:

          [1662655615.539611][229172:229177] CHIP:DMG:                 AttributeStatusIB =
          [1662655615.539623][229172:229177] CHIP:DMG:                 {
          [1662655615.539633][229172:229177] CHIP:DMG:                         AttributePathIB =
          [1662655615.539642][229172:229177] CHIP:DMG:                         {
          [1662655615.539648][229172:229177] CHIP:DMG:                                 Endpoint = 0x0,
          [1662655615.539664][229172:229177] CHIP:DMG:                                 Cluster = 0x3f,
          [1662655615.539677][229172:229177] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1662655615.539688][229172:229177] CHIP:DMG:                                 ListIndex = Null,
          [1662655615.539693][229172:229177] CHIP:DMG:                         }
          [1662655615.539707][229172:229177] CHIP:DMG:
          [1662655615.539715][229172:229177] CHIP:DMG:                         StatusIB =
          [1662655615.539729][229172:229177] CHIP:DMG:                         {
          [1662655615.539737][229172:229177] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1662655615.539743][229172:229177] CHIP:DMG:                         },
          [1662655615.539753][229172:229177] CHIP:DMG:
          [1662655615.539766][229172:229177] CHIP:DMG:                 },
          [1662655615.539781][229172:229177] CHIP:DMG:
          [1662655615.539792][229172:229177] CHIP:DMG:                 AttributeStatusIB =
          [1662655615.539802][229172:229177] CHIP:DMG:                 {
          [1662655615.539810][229172:229177] CHIP:DMG:                         AttributePathIB =
          [1662655615.539816][229172:229177] CHIP:DMG:                         {
          [1662655615.539834][229172:229177] CHIP:DMG:                                 Endpoint = 0x0,
          [1662655615.539844][229172:229177] CHIP:DMG:                                 Cluster = 0x3f,
          [1662655615.539851][229172:229177] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1662655615.539858][229172:229177] CHIP:DMG:                                 ListIndex = Null,
          [1662655615.539864][229172:229177] CHIP:DMG:                         }
          [1662655615.539877][229172:229177] CHIP:DMG:
          [1662655615.539885][229172:229177] CHIP:DMG:                         StatusIB =
          [1662655615.539896][229172:229177] CHIP:DMG:                         {
          [1662655615.539904][229172:229177] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1662655615.539910][229172:229177] CHIP:DMG:                         },


          Before adding the Groups (0x0006,0x0007) execute this command

          ./chip-tool groupkeymanagement write group-key-map '[{"groupId":6, "groupKeySetID": 1, "fabricIndex": 1},{"groupId": 7, "groupKeySetID": 1,"fabricIndex": 1}]' 1 0


          Verify the "status is success" on the TH(Chip-tool)  Log:

          [1663071815.843582][23720:23725] CHIP:DMG: WriteClient moving to [ResponseRe]
          [1663071815.843667][23720:23725] CHIP:DMG: WriteResponseMessage =
          [1663071815.843695][23720:23725] CHIP:DMG: {
          [1663071815.843718][23720:23725] CHIP:DMG:         AttributeStatusIBs =
          [1663071815.843750][23720:23725] CHIP:DMG:         [
          [1663071815.843775][23720:23725] CHIP:DMG:                 AttributeStatusIB =
          [1663071815.843809][23720:23725] CHIP:DMG:                 {
          [1663071815.843838][23720:23725] CHIP:DMG:                         AttributePathIB =
          [1663071815.843874][23720:23725] CHIP:DMG:                         {
          [1663071815.843909][23720:23725] CHIP:DMG:                                 Endpoint = 0x0,
          [1663071815.843947][23720:23725] CHIP:DMG:                                 Cluster = 0x3f,
          [1663071815.843985][23720:23725] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1663071815.844018][23720:23725] CHIP:DMG:                         }
          [1663071815.844058][23720:23725] CHIP:DMG:
          [1663071815.844089][23720:23725] CHIP:DMG:                         StatusIB =
          [1663071815.844125][23720:23725] CHIP:DMG:                         {
          [1663071815.844159][23720:23725] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1663071815.844192][23720:23725] CHIP:DMG:                         },
          [1663071815.844227][23720:23725] CHIP:DMG:
          [1663071815.844257][23720:23725] CHIP:DMG:                 },
          [1663071815.844295][23720:23725] CHIP:DMG:
          [1663071815.844322][23720:23725] CHIP:DMG:                 AttributeStatusIB =
          [1663071815.844352][23720:23725] CHIP:DMG:                 {
          [1663071815.844380][23720:23725] CHIP:DMG:                         AttributePathIB =
          [1663071815.844412][23720:23725] CHIP:DMG:                         {
          [1663071815.844445][23720:23725] CHIP:DMG:                                 Endpoint = 0x0,
          [1663071815.844482][23720:23725] CHIP:DMG:                                 Cluster = 0x3f,
          [1663071815.844518][23720:23725] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1663071815.844555][23720:23725] CHIP:DMG:                                 ListIndex = Null,
          [1663071815.844587][23720:23725] CHIP:DMG:                         }
          [1663071815.844623][23720:23725] CHIP:DMG:
          [1663071815.844657][23720:23725] CHIP:DMG:                         StatusIB =
          [1663071815.844691][23720:23725] CHIP:DMG:                         {
          [1663071815.844724][23720:23725] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1663071815.844760][23720:23725] CHIP:DMG:                         },
          [1663071815.844793][23720:23725] CHIP:DMG:
          [1663071815.844824][23720:23725] CHIP:DMG:                 },
          [1663071815.844866][23720:23725] CHIP:DMG:
          [1663071815.844893][23720:23725] CHIP:DMG:                 AttributeStatusIB =
          [1663071815.844922][23720:23725] CHIP:DMG:                 {
          [1663071815.844952][23720:23725] CHIP:DMG:                         AttributePathIB =
          [1663071815.844986][23720:23725] CHIP:DMG:                         {
          [1663071815.845021][23720:23725] CHIP:DMG:                                 Endpoint = 0x0,
          [1663071815.845058][23720:23725] CHIP:DMG:                                 Cluster = 0x3f,
          [1663071815.845097][23720:23725] CHIP:DMG:                                 Attribute = 0x0000_0000,
          [1663071815.845131][23720:23725] CHIP:DMG:                                 ListIndex = Null,
          [1663071815.845165][23720:23725] CHIP:DMG:                         }
          [1663071815.845202][23720:23725] CHIP:DMG:
          [1663071815.845236][23720:23725] CHIP:DMG:                         StatusIB =
          [1663071815.845269][23720:23725] CHIP:DMG:                         {
          [1663071815.845304][23720:23725] CHIP:DMG:                                 status = 0x00 (SUCCESS),
          [1663071815.845337][23720:23725] CHIP:DMG:                         },


          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:


          [1658319969.849079][4777:4782] CHIP:DMG:                        StatusIB =
          [1658319969.849119][4777:4782] CHIP:DMG:                        {
          [1658319969.849158][4777:4782] CHIP:DMG:                                status = 0x00 (SUCCESS),
          [1658319969.849194][4777:4782] CHIP:DMG:                        },
          [1658319969.849704][4777:4782] CHIP:DMG:                        StatusIB =
          [1658319969.849739][4777:4782] CHIP:DMG:                        {
          [1658319969.849774][4777:4782] CHIP:DMG:                                status = 0x00 (SUCCESS),
          [1658319969.849814][4777:4782] CHIP:DMG:                        },
      disabled: true

    - label: "DUT supports Identify cluster"
      verification: |

      disabled: true

    - label:
          "TH sends AddGroup command to DUT as unicast with the following fields
          : GroupID as 0x0002 GroupName as Gp2"
      PICS: G.S.C00.Rsp && G.S.C00.Tx
      verification: |
          ./chip-tool groups add-group 0x0002 gp2 1 0

          Verify the "status is SUCCESS and groupid  is 0x0002" on the TH(Chip-tool)  Log  and below is the sample log provided for the raspi platform:

          [1653552285.195099][2464:2469] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0000
          [1653552285.197783][2464:2469] CHIP:TOO:   AddGroupResponse: {
          [1653552285.197849][2464:2469] CHIP:TOO:     status: 0
          [1653552285.197877][2464:2469] CHIP:TOO:     groupId: 2
          [1653552285.197933][2464:2469] CHIP:TOO:    }
      disabled: true

    - label: "TH reads GroupTable attribute from the GroupKeyManagement cluster"
      PICS: GRPKEY.S.A0001
      verification: |
          ./chip-tool groupkeymanagement read group-table 1 0

          Verify the "grouptable entries" , GroupID as 0x0002, GroupName as Gp2 on the TH(Chip-tool)  Log  and below is the sample log provided for the raspi platform:

          [1674551108.507399][20730:20732] CHIP:DMG: }
          [1674551108.507695][20730:20732] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 1314349260
          [1674551108.507745][20730:20732] CHIP:TOO:   GroupTable: 1 entries
          [1674551108.507824][20730:20732] CHIP:TOO:     [1]: {
          [1674551108.507857][20730:20732] CHIP:TOO:       GroupId: 2
          [1674551108.507878][20730:20732] CHIP:TOO:       Endpoints: 1 entries
          [1674551108.507901][20730:20732] CHIP:TOO:         [1]: 0
          [1674551108.507920][20730:20732] CHIP:TOO:       GroupName: gp2
          [1674551108.507932][20730:20732] CHIP:TOO:       FabricIndex: 1
          [1674551108.507942][20730:20732] CHIP:TOO:      }
      disabled: true

    - label:
          "If maxgroups > 1 TH sends AddGroup command to DUT as unicast with the
          following fields : GroupID as 0x0003 GroupName as Gp3"
      PICS: G.S.C00.Rsp && G.S.C00.Tx
      verification: |
          ./chip-tool groups add-group 0x0003 gp3 1 0

          Verify the "status is SUCCESS and GroupID is 0x0003" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1674551134.645686][20738:20740] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0000
          [1674551134.645698][20738:20740] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0000
          [1674551134.645709][20738:20740] CHIP:TOO:   AddGroupResponse: {
          [1674551134.645714][20738:20740] CHIP:TOO:     status: 0
          [1674551134.645717][20738:20740] CHIP:TOO:     groupID: 3
          [1674551134.645719][20738:20740] CHIP:TOO:    }
      disabled: true

    - label:
          "If maxgroups > 1, TH reads GroupTable attribute from the
          GroupKeyManagement cluster"
      PICS: GRPKEY.S.A0001
      verification: |
          ./chip-tool groupkeymanagement read group-table 1 0

          Verify the "grouptable entries" , GroupId as 0x0003 and GroupName as Gp3 on the TH(Chip-tool)  Log and  below is the sample log provided for the raspi platform:

          [1674551165.827036][20746:20748] CHIP:DMG: }
          [1674551165.827146][20746:20748] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 1314349260
          [1674551165.827163][20746:20748] CHIP:TOO:   GroupTable: 2 entries
          [1674551165.827176][20746:20748] CHIP:TOO:     [1]: {
          [1674551165.827182][20746:20748] CHIP:TOO:       GroupId: 2
          [1674551165.827186][20746:20748] CHIP:TOO:       Endpoints: 1 entries
          [1674551165.827191][20746:20748] CHIP:TOO:         [1]: 0
          [1674551165.827194][20746:20748] CHIP:TOO:       GroupName: gp2
          [1674551165.827197][20746:20748] CHIP:TOO:       FabricIndex: 1
          [1674551165.827200][20746:20748] CHIP:TOO:      }
          [1674551165.827205][20746:20748] CHIP:TOO:     [2]: {
          [1674551165.827208][20746:20748] CHIP:TOO:       GroupId: 3
          [1674551165.827211][20746:20748] CHIP:TOO:       Endpoints: 1 entries
          [1674551165.827214][20746:20748] CHIP:TOO:         [1]: 0
          [1674551165.827217][20746:20748] CHIP:TOO:       GroupName: gp3
          [1674551165.827219][20746:20748] CHIP:TOO:       FabricIndex: 1
          [1674551165.827222][20746:20748] CHIP:TOO:      }
      disabled: true

    - label:
          "TH sends GetGroupMembership command to DUT on PIXIT.G.ENDPOINT with
          the following fields : GroupList as NULL"
      PICS: G.S.C02.Rsp && G.S.C02.Tx
      verification: |
          ./chip-tool groups get-group-membership [] 1 0

          Verify the "grouplist" entries are in the inclusive range of 0x0001 - 0xffff and Capacity is in the inclusive range of 0 to 254 or null
          on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:


          [1653552493.052711][2501:2506] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0004 Command 0x0000_0002
          [1653552493.052792][2501:2506] CHIP:TOO:   GetGroupMembershipResponse: {
          [1653552493.052819][2501:2506] CHIP:TOO:     capacity: null
          [1653552493.052870][2501:2506] CHIP:TOO:     groupList: 2 entries
          [1653552493.052922][2501:2506] CHIP:TOO:       [1]: 2
          [1653552493.052950][2501:2506] CHIP:TOO:       [2]: 3
          [1653552493.052978][2501:2506] CHIP:TOO:    }
      disabled: true

    - label:
          "TH sends GetGroupMembership command to DUT on PIXIT.G.ENDPOINT with
          the following fields : GroupList as [0x0002]"
      PICS: G.S.C02.Rsp && G.S.C02.Tx
      verification: |
          ./chip-tool groups get-group-membership [0002] 1 0


          Verify the "grouplist" entry has one item 0x0002 and Capacity is in the inclusive range of 0 to 254 or null
          on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1653294426.515523][3638:3643] CHIP:TOO:   GetGroupMembershipResponse: {
          [1653294426.515571][3638:3643] CHIP:TOO:     capacity: null
          [1653294426.515649][3638:3643] CHIP:TOO:     groupList: 1 entries
          [1653294426.515737][3638:3643] CHIP:TOO:       [1]: 2
          [1653294426.515916][3638:3643] CHIP:TOO:    }
      disabled: true

    - label:
          "if maxgroups > 1, TH sends GetGroupMembership command to DUT on
          PIXIT.G.ENDPOINT as unicast with the following fields : GroupList as
          [0x0002, 0x0003]"
      PICS: G.S.C02.Rsp && G.S.C02.Tx
      verification: |
          ./chip-tool groups get-group-membership [0002,0003] 1 0

          Verify the "grouplist" entries has 2 items 0x0002 , 0x0003 and Capacity is in the inclusive range of 0 to 254 or null
          on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1653294490.030740][3646:3651] CHIP:TOO:   GetGroupMembershipResponse: {
          [1653294490.030775][3646:3651] CHIP:TOO:     capacity: null
          [1653294490.030838][3646:3651] CHIP:TOO:     groupList: 2 entries
          [1653294490.030907][3646:3651] CHIP:TOO:       [1]: 2
          [1653294490.030943][3646:3651] CHIP:TOO:       [2]: 3
          [1653294490.030979][3646:3651] CHIP:TOO:    }
      disabled: true

    - label: "TH sends RemoveAllGroups command to DUT as unicast method"
      PICS: G.S.C04.Rsp
      verification: |
          ./chip-tool groups remove-all-groups 1 0

          Verify the "status is SUCCESS" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1651224377.831704][2989:2994] CHIP:DMG:                                StatusIB =
          [1651224377.831757][2989:2994] CHIP:DMG:                                {
          [1651224377.831812][2989:2994] CHIP:DMG:                                      status = 0x00 (SUCCESS),
          [1651224377.831866][2989:2994] CHIP:DMG:                                },
          [1651224377.832439][2989:2994] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0004 Status=0x0
      disabled: true

    - label:
          "TH sends Identify command to DUT with the IdentifyTime as (0x0078)
          120 seconds"
      PICS: I.S.C00.Rsp
      verification: |
          ./chip-tool identify identify 0x0078 1 0

          Verify the "status is SUCCESS" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1658306666.592846][3044:3049] CHIP:DMG:                                StatusIB =
          [1658306666.592889][3044:3049] CHIP:DMG:                                {
          [1658306666.592962][3044:3049] CHIP:DMG:                                        status = 0x00 (SUCCESS),
          [1658306666.593007][3044:3049] CHIP:DMG:                                },
      disabled: true

    - label: "TH reads immediately IdentifyTime attribute from DUT"
      PICS: I.S.A0000
      verification: |
          ./chip-tool identify read identify-time 1 0

          Verify the "identifytime" attribute has a value approximately equal to 0x0078(120) on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1674551847.513881][20976:20978] CHIP:DMG: }
          [1674551847.514009][20976:20978] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0003 Attribute 0x0000_0000 DataVersion: 216654730
          [1674551847.514042][20976:20978] CHIP:TOO:   IdentifyTime: 120
      disabled: true

    - label:
          "If maxgroups>0, TH sends AddGroupIfIdentifying command to DUT as
          unicast method with the following fields: GroupID as 0x0006 GroupName
          as Gp6"
      PICS: G.S.C05.Rsp
      verification: |
          ./chip-tool groups  add-group-if-identifying 0x0006 gp6 1 0

          Verify the "status is SUCCESS" and GroupId is 0x0006 on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:


          [1653552667.307794][2571:2576] CHIP:DMG:                                StatusIB =
          [1653552667.307831][2571:2576] CHIP:DMG:                                {
          [1653552667.307881][2571:2576] CHIP:DMG:                                   status = 0x00 (SUCCESS),
          [1653552667.307922][2571:2576] CHIP:DMG:                                },
      disabled: true

    - label: "TH reads GroupTable attribute from the GroupKeyManagement cluster"
      PICS: GRPKEY.S.A0001
      verification: |
          ./chip-tool groupkeymanagement read group-table 1 0

          Verify "group table" entry has groupid 6,  GroupName  Gp6  on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1674551848.294776][20985:20987] CHIP:DMG: }
          [1674551848.294875][20985:20987] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 1314349287
          [1674551848.294904][20985:20987] CHIP:TOO:   GroupTable: 1 entries
          [1674551848.294924][20985:20987] CHIP:TOO:     [1]: {
          [1674551848.294929][20985:20987] CHIP:TOO:       GroupId: 6
          [1674551848.294935][20985:20987] CHIP:TOO:       Endpoints: 1 entries
          [1674551848.294941][20985:20987] CHIP:TOO:         [1]: 0
          [1674551848.294945][20985:20987] CHIP:TOO:       GroupName: gp6
          [1674551848.294948][20985:20987] CHIP:TOO:       FabricIndex: 1
          [1674551848.294951][20985:20987] CHIP:TOO:      }
          [1674551848.294982][20985:20987] CHIP:EM: <<< [E:163
      disabled: true

    - label:
          "If maxgroups>1, TH sends AddGroupIfIdentifying command to DUT as
          unicast method with the following fields: GroupID as 0x0007 GroupName
          as Gp7"
      PICS: G.S.C05.Rsp
      verification: |
          ./chip-tool groups  add-group-if-identifying 0x0007 gp7 1 0

          Verify the "status is SUCCESS" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:


          [1658306847.237724][3125:3130] CHIP:DMG:                                StatusIB =
          [1658306847.237765][3125:3130] CHIP:DMG:                                {
          [1658306847.237818][3125:3130] CHIP:DMG:                                   status = 0x00 (SUCCESS),
          [1658306847.237869][3125:3130] CHIP:DMG:                                },
      disabled: true

    - label: "TH reads GroupTable attribute from the GroupKeyManagement cluster"
      PICS: GRPKEY.S.A0001
      verification: |
          ./chip-tool groupkeymanagement read group-table 1 0

          Verify the "grouptable" has an entry,  GroupName as Gp7 on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1674551848.817117][20991:20993] CHIP:DMG: }
          [1674551848.817230][20991:20993] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 1314349287
          [1674551848.817250][20991:20993] CHIP:TOO:   GroupTable: 2 entries
          [1674551848.817271][20991:20993] CHIP:TOO:     [1]: {
          [1674551848.817274][20991:20993] CHIP:TOO:       GroupId: 6
          [1674551848.817278][20991:20993] CHIP:TOO:       Endpoints: 1 entries
          [1674551848.817282][20991:20993] CHIP:TOO:         [1]: 0
          [1674551848.817286][20991:20993] CHIP:TOO:       GroupName: gp6
          [1674551848.817289][20991:20993] CHIP:TOO:       FabricIndex: 1
          [1674551848.817292][20991:20993] CHIP:TOO:      }
          [1674551848.817297][20991:20993] CHIP:TOO:     [2]: {
          [1674551848.817300][20991:20993] CHIP:TOO:       GroupId: 7
          [1674551848.817303][20991:20993] CHIP:TOO:       Endpoints: 1 entries
          [1674551848.817306][20991:20993] CHIP:TOO:         [1]: 0
          [1674551848.817309][20991:20993] CHIP:TOO:       GroupName: gp7
          [1674551848.817312][20991:20993] CHIP:TOO:       FabricIndex: 1
          [1674551848.817314][20991:20993] CHIP:TOO:      }
      disabled: true

    - label:
          "If maxgroups > 2, TH sends AddGroupIfIdentifying command to DUT with
          (maxgroups - 2) groups, incrementing the GroupId each time."
      PICS: G.S.C05.Rsp
      verification: |
          ./chip-tool groups  add-group-if-identifying 0x0008 gp8 1 0

          Verify the "status is SUCCESS" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1653552667.307794][2571:2576] CHIP:DMG:                                StatusIB =
          [1653552667.307831][2571:2576] CHIP:DMG:                                {
          [1653552667.307881][2571:2576] CHIP:DMG:                                   status = 0x00 (SUCCESS),
          [1653552667.307922][2571:2576] CHIP:DMG:                                },


          ./chip-tool groups  add-group-if-identifying 0x0009 gp9 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.597991][21000:21002] CHIP:DMG:                                 StatusIB =
          [1674551849.597995][21000:21002] CHIP:DMG:                                 {
          [1674551849.597998][21000:21002] CHIP:DMG:                                         status = 0x00 (SUCCESS),
          [1674551849.598001][21000:21002] CHIP:DMG:                                 },
      disabled: true

    - label:
          "If maxgroups>0, TH sends AddGroupIfIdentifying command to DUT
          (maxgroups+2) times as unicast method with different GroupID"
      PICS: G.S.C05.Rsp
      verification: |
          ./chip-tool groups  add-group-if-identifying 0x0005 gp5 1 0


          Verify the "status is RESOURCE_EXHAUSTED" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1658317372.589336][4296:4301] CHIP:DMG:                                StatusIB =
          [1658317372.589363][4296:4301] CHIP:DMG:                                {
          [1658317372.589399][4296:4301] CHIP:DMG:                                        status = 0x89 (RESOURCE_EXHAUSTED),
          [1658317372.589432][4296:4301] CHIP:DMG:                                },
      disabled: true

    - label:
          "TH reads GroupTable attribute from the GroupKeyManagement cluster
          from DUT"
      PICS: GRPKEY.S.A0001
      verification: |
          ./chip-tool groupkeymanagement read group-table 1 0

          Verify the "grouptable" does not have GroupName gp5 on the TH(Chip-tool) Log and below is the sample log provided for the raspi platform:

          [1674552384.204664][21058:21060] CHIP:DMG: }
          [1674552384.204841][21058:21060] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 1314349292
          [1674552384.204867][21058:21060] CHIP:TOO:   GroupTable: 4 entries
          [1674552384.204879][21058:21060] CHIP:TOO:     [1]: {
          [1674552384.204886][21058:21060] CHIP:TOO:       GroupId: 6
          [1674552384.204890][21058:21060] CHIP:TOO:       Endpoints: 1 entries
          [1674552384.204894][21058:21060] CHIP:TOO:         [1]: 0
          [1674552384.204898][21058:21060] CHIP:TOO:       GroupName: gp6
          [1674552384.204901][21058:21060] CHIP:TOO:       FabricIndex: 1
          [1674552384.204904][21058:21060] CHIP:TOO:      }
          [1674552384.204910][21058:21060] CHIP:TOO:     [2]: {
          [1674552384.204912][21058:21060] CHIP:TOO:       GroupId: 7
          [1674552384.204915][21058:21060] CHIP:TOO:       Endpoints: 1 entries
          [1674552384.204918][21058:21060] CHIP:TOO:         [1]: 0
          [1674552384.204921][21058:21060] CHIP:TOO:       GroupName: gp7
          [1674552384.204923][21058:21060] CHIP:TOO:       FabricIndex: 1
          [1674552384.204926][21058:21060] CHIP:TOO:      }
          [1674552384.204931][21058:21060] CHIP:TOO:     [3]: {
          [1674552384.204933][21058:21060] CHIP:TOO:       GroupId: 8
          [1674552384.204936][21058:21060] CHIP:TOO:       Endpoints: 1 entries
          [1674552384.204939][21058:21060] CHIP:TOO:         [1]: 0
          [1674552384.204941][21058:21060] CHIP:TOO:       GroupName: gp8
          [1674552384.204944][21058:21060] CHIP:TOO:       FabricIndex: 1
          [1674552384.204946][21058:21060] CHIP:TOO:      }
          [1674552384.204951][21058:21060] CHIP:TOO:     [4]: {
          [1674552384.204953][21058:21060] CHIP:TOO:       GroupId: 9
          [1674552384.204956][21058:21060] CHIP:TOO:       Endpoints: 1 entries
          [1674552384.204959][21058:21060] CHIP:TOO:         [1]: 0
          [1674552384.204962][21058:21060] CHIP:TOO:       GroupName: gp9
          [1674552384.204964][21058:21060] CHIP:TOO:       FabricIndex: 1
          [1674552384.204967][21058:21060] CHIP:TOO:      }
      disabled: true

    - label: "TH sends RemoveAllGroups command to DUT as unicast method"
      PICS: G.S.C04.Rsp
      verification: |
          ./chip-tool groups remove-all-groups 1 0

          Verify the "status is SUCCESS" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1651224377.831704][2989:2994] CHIP:DMG:                                StatusIB =
          [1651224377.831757][2989:2994] CHIP:DMG:                                {
          [1651224377.831812][2989:2994] CHIP:DMG:                                      status = 0x00 (SUCCESS),
          [1651224377.831866][2989:2994] CHIP:DMG:                                },
          [1651224377.832439][2989:2994] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_0004 Command=0x0000_0004 Status=0x0
      disabled: true

    - label:
          "TH sends AddGroupIfIdentifying command to DUT as unicast method with
          the following fields: GroupID as 0x0000 GroupName as Gp45"
      PICS: G.S.C05.Rsp
      verification: |
          ./chip-tool groups  add-group-if-identifying 0x0000 gp45 1 0


          Verify the "status is CONSTRAINT_ERROR" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1658307266.719438][3251:3256] CHIP:DMG:                                StatusIB =
          [1658307266.719482][3251:3256] CHIP:DMG:                                {
          [1658307266.719527][3251:3256] CHIP:DMG:                                        status = 0x87 (CONSTRAINT_ERROR),
          [1658307266.719573][3251:3256] CHIP:DMG:                                },
      disabled: true

    - label:
          "TH sends AddGroupIfIdentifying command to DUT as unicast method with
          the following fields: GroupId as 0x0046 GroupName as Gp46"
      PICS: G.S.C05.Rsp
      verification: |
          ./chip-tool groups  add-group-if-identifying 0x0045 gp46 1 0

          Verify the "status is UNSUPPORTED_ACCESS" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1658307298.568727][3257:3262] CHIP:DMG:                                StatusIB =
          [1658307298.568761][3257:3262] CHIP:DMG:                                {
          [1658307298.568807][3257:3262] CHIP:DMG:                                        status = 0x7e (UNSUPPORTED_ACCESS),
          [1658307298.568840][3257:3262] CHIP:DMG:                                },
      disabled: true

    - label:
          "TH sends Identify command to DUT with the IdentifyTime as 0x0000
          (stop identifying)"
      PICS: I.S.C00.Rsp
      verification: |
          ./chip-tool identify identify 0x0000 1 0

          Verify the "status is SUCCESS" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:

          [1658307387.097433][3268:3273] CHIP:DMG:                                StatusIB =
          [1658307387.097464][3268:3273] CHIP:DMG:                                {
          [1658307387.097502][3268:3273] CHIP:DMG:                                        status = 0x00 (SUCCESS),
          [1658307387.097533][3268:3273] CHIP:DMG:                                },
      disabled: true

    - label: "TH reads immediately IdentifyTime attribute from DUT"
      PICS: I.S.A0000
      verification: |
          ./chip-tool identify read identify-time 1 0

          Verify the "identify time"  attribute value is 0x0000 on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:


          [1658307393.820520][3274:3279] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0003 Attribute 0x0000_0000 DataVersion: 3871913767
          [1658307393.820575][3274:3279] CHIP:TOO:   identify time: 0
      disabled: true

    - label:
          "TH sends AddGroupIfIdentifying command to DUT as unicast method with
          the following fields: GroupId as 0x0004 GroupName as Gp4"
      PICS: G.S.C05.Rsp
      verification: |
          ./chip-tool groups  add-group-if-identifying 0x0004 gp4 1 0

          Verify the "status is SUCCESS" , GroupId is 0x0004 on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:


          [1651224746.146005][3038:3043] CHIP:DMG:                                StatusIB =
          [1651224746.146038][3038:3043] CHIP:DMG:                                {
          [1651224746.146073][3038:3043] CHIP:DMG:                                      status = 0x00 (SUCCESS),
          [1651224746.146106][3038:3043] CHIP:DMG:                                },
      disabled: true

    - label: "TH reads GroupTable attribute from the GroupKeyManagement cluster"
      PICS: GRPKEY.S.A0001
      verification: |
          ./chip-tool groupkeymanagement read group-table 1 0

          Verify the "grouptable entries is 0" on the TH(Chip-tool)  Log and below is the sample log provided for the raspi platform:


          [1658317914.656772][4650:4655] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_003F Attribute 0x0000_0001 DataVersion: 3844079664
          [1658317914.656843][4650:4655] CHIP:TOO:   GroupTable: 0 entries
      disabled: true
