[LC] LC Scenes Integration Tests (#34448)
* Added test for scenes integration to Level control cluster
* Removed interaction between OnOff and Level control from the test
* Added new test to test plan
* Update src/app/tests/suites/certification/Test_TC_LVL_9_1.yaml
Co-authored-by: C Freeman <cecille@google.com>
* Added cleanup
---------
Co-authored-by: C Freeman <cecille@google.com>
diff --git a/src/app/tests/suites/certification/Test_TC_LVL_9_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_9_1.yaml
new file mode 100644
index 0000000..36da124
--- /dev/null
+++ b/src/app/tests/suites/certification/Test_TC_LVL_9_1.yaml
@@ -0,0 +1,264 @@
+# Copyright (c) 2024 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.
+
+name: 4.2.4. [TC-LVL-9.1] Scenes Management Cluster Interaction (DUT as Server)
+
+PICS:
+ - LVL.S
+ - S.S
+
+config:
+ nodeId: 0x12344321
+ cluster: "Scenes Management"
+ endpoint: 1
+ G1:
+ type: group_id
+ defaultValue: 0x0001
+
+tests:
+ - label: "Wait for the commissioned device to be retrieved"
+ cluster: "DelayCommands"
+ command: "WaitForCommissionee"
+ arguments:
+ values:
+ - name: "nodeId"
+ value: nodeId
+
+ - label:
+ "Step 0a :TH sends KeySetWrite command in the GroupKeyManagement
+ cluster to DUT using a key that is pre-installed on the TH.
+ GroupKeySet fields are as follows:"
+ cluster: "Group Key Management"
+ endpoint: 0
+ command: "KeySetWrite"
+ arguments:
+ values:
+ - name: "GroupKeySet"
+ value:
+ {
+ GroupKeySetID: 0x01a1,
+ GroupKeySecurityPolicy: 0,
+ EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf",
+ EpochStartTime0: 1110000,
+ EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf",
+ EpochStartTime1: 1110001,
+ EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+ EpochStartTime2: 1110002,
+ }
+
+ - label:
+ "Step 0b: TH binds GroupIds 0x0001 and 0x0002 with GroupKeySetID
+ 0x01a1 in the GroupKeyMap attribute list on GroupKeyManagement cluster
+ by writing the GroupKeyMap attribute with two entries as follows:"
+ cluster: "Group Key Management"
+ endpoint: 0
+ command: "writeAttribute"
+ attribute: "GroupKeyMap"
+ arguments:
+ value: [{ FabricIndex: 1, GroupId: G1, GroupKeySetID: 0x01a1 }]
+
+ - label: "Step 0c: TH sends a RemoveAllGroups command to DUT."
+ cluster: "Groups"
+ endpoint: endpoint
+ command: "RemoveAllGroups"
+
+ - label:
+ "Step 1a: TH sends a AddGroup command to DUT with the GroupID field
+ set to G1."
+ cluster: "Groups"
+ command: "AddGroup"
+ arguments:
+ values:
+ - name: "GroupID"
+ value: G1
+ - name: "GroupName"
+ value: "Group1"
+ response:
+ values:
+ - name: "Status"
+ value: 0
+ - name: "GroupID"
+ value: G1
+
+ - label:
+ "Step 1b: TH sends a RemoveAllScenes command to DUT with the GroupID
+ field set to G1."
+ command: "RemoveAllScenes"
+ arguments:
+ values:
+ - name: "GroupID"
+ value: G1
+ response:
+ values:
+ - name: "Status"
+ value: 0x00
+ - name: "GroupID"
+ value: G1
+ - label:
+ "Step 1c: TH sends a GetSceneMembership command to DUT with the
+ GroupID field set to G1."
+ command: "GetSceneMembership"
+ arguments:
+ values:
+ - name: "GroupID"
+ value: G1
+ response:
+ values:
+ - name: "Status"
+ value: 0x00
+ - name: "GroupID"
+ value: G1
+ - name: "SceneList"
+ value: []
+
+ - label:
+ "Step 2a: TH sends a MoveToLevel command to DUT, with Level =0 and
+ TransitionTime =0 (immediate)"
+ cluster: "Level Control"
+ command: "MoveToLevel"
+ arguments:
+ values:
+ - name: "Level"
+ value: 0
+ - name: "TransitionTime"
+ value: 0
+ - name: "OptionsMask"
+ value: 1
+ - name: "OptionsOverride"
+ value: 1
+
+ - label: "Step 2b: TH reads the MinLevel attribute from the DUT"
+ cluster: "Level Control"
+ command: "readAttribute"
+ attribute: "MinLevel"
+ response:
+ saveAs: MinLevelValue
+ constraints:
+ type: int8u
+
+ - label: "Step 2c: TH reads the CurrentLevel attribute from DUT"
+ cluster: "Level Control"
+ command: "readAttribute"
+ attribute: "CurrentLevel"
+ response:
+ value: MinLevelValue
+
+ - label:
+ "Step 3: TH sends a StoreScene command to DUT with the GroupID field
+ set to G1 and the SceneID field set to 0x01."
+ command: "StoreScene"
+ arguments:
+ values:
+ - name: "GroupID"
+ value: G1
+ - name: "SceneID"
+ value: 0x01
+ response:
+ values:
+ - name: "Status"
+ value: 0x00
+ - name: "GroupID"
+ value: G1
+ - name: "SceneID"
+ value: 0x01
+
+ - label: "Step 4: TH sends a AddScene command to DUT with the GroupID field
+ set to G1, the SceneID field set to 0x02, the TransitionTime field set
+ to 0 and the ExtensionFieldSets set to: '[{ ClusterID: 0x0008,
+ AttributeValueList: [{ AttributeID: 0x0000, ValueUnsigned8: 0x64 }]}]'
+ "
+ command: "AddScene"
+ arguments:
+ values:
+ - name: "GroupID"
+ value: G1
+ - name: "SceneID"
+ value: 0x02
+ - name: "TransitionTime"
+ value: 0
+ - name: "SceneName"
+ value: "Scene1"
+ - name: "ExtensionFieldSets"
+ value:
+ [
+ {
+ ClusterID: 0x0008,
+ AttributeValueList:
+ [{ AttributeID: 0x0000, ValueUnsigned8: 0x64 }],
+ },
+ ]
+ response:
+ values:
+ - name: "Status"
+ value: 0x00
+ - name: "GroupID"
+ value: G1
+ - name: "SceneID"
+ value: 0x02
+
+ - label:
+ "Step 5a: TH sends a RecallScene command to DUT with the GroupID field
+ set to G1 and the SceneID field set to 0x02."
+ command: "RecallScene"
+ arguments:
+ values:
+ - name: "GroupID"
+ value: G1
+ - name: "SceneID"
+ value: 0x02
+
+ - label: "Step 5b: TH reads the CurrentLevel attribute from DUT"
+ cluster: "Level Control"
+ command: "readAttribute"
+ attribute: "CurrentLevel"
+ response:
+ value: 0x64
+
+ - label:
+ "Step 6a: TH sends a RecallScene command to DUT with the GroupID field
+ set to G1 and the SceneID field set to 0x01."
+ command: "RecallScene"
+ arguments:
+ values:
+ - name: "GroupID"
+ value: G1
+ - name: "SceneID"
+ value: 0x01
+
+ - label: "Step 6c: TH reads the CurrentLevel attribute from DUT"
+ cluster: "Level Control"
+ command: "readAttribute"
+ attribute: "CurrentLevel"
+ response:
+ value: MinLevelValue
+
+ - label:
+ "Cleanup: TH sends a RemoveAllScenes command to DUT with the GroupID
+ field set to G1."
+ command: "RemoveAllScenes"
+ arguments:
+ values:
+ - name: "GroupID"
+ value: G1
+ response:
+ values:
+ - name: "Status"
+ value: 0x00
+ - name: "GroupID"
+ value: G1
+
+ - label: "Cleanup: TH sends a RemoveAllGroups command to DUT."
+ cluster: "Groups"
+ endpoint: endpoint
+ command: "RemoveAllGroups"
diff --git a/src/app/tests/suites/ciTests.json b/src/app/tests/suites/ciTests.json
index 44cfcd1..a96ef4a 100644
--- a/src/app/tests/suites/ciTests.json
+++ b/src/app/tests/suites/ciTests.json
@@ -83,7 +83,8 @@
"Test_TC_LVL_4_1",
"Test_TC_LVL_5_1",
"Test_TC_LVL_6_1",
- "Test_TC_LVL_7_1"
+ "Test_TC_LVL_7_1",
+ "Test_TC_LVL_9_1"
],
"LocalizationConfiguration": [],
"TimeFormatLocalization": ["Test_TC_LTIME_1_2", "Test_TC_LTIME_3_1"],