Skip to content

Commit 4764955

Browse files
jamesharrowrestyled-commits
authored andcommitted
Tweaks to evse test plans based on review(issue project-chip#31460) (project-chip#31901)
* Added support for test event triggers and handling of reading events into matter_testing_support. * Made TC_EEVSE_Utils.py use the matter_testing_support instead of its own local copy. * Restyled by isort * Added TC_EEVSE_2_2, 2_4, 2_5 to tests.yaml. Fixed compile warning treated as error due to sign conversion. * Updated default min_charge and max_charge in TC_EEVSE_Utils send_enable_charge_command to have sensible default values if not specified. * Fixed test app name * Moved test runs later in test yaml * Fixed discriminator used in script to match that used in the app. * Added --endpoint 1 so it tests the correct endpoint * Code review comment fixes. * Fixed trailing whitepace * Merged TC_EEVSE tests back in --------- Co-authored-by: Restyled.io <commits@restyled.io>
1 parent af2db9b commit 4764955

File tree

7 files changed

+107
-87
lines changed

7 files changed

+107
-87
lines changed

.github/workflows/tests.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,7 @@ jobs:
452452
--target linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test \
453453
--target linux-x64-lock-ipv6only-no-ble-no-wifi-tsan-clang-test \
454454
--target linux-x64-lit-icd-ipv6only-no-ble-no-wifi-tsan-clang-test \
455+
--target linux-x64-energy-management-ipv6only-no-ble-no-wifi-tsan-clang-test \
455456
--target linux-x64-python-bindings \
456457
build \
457458
--copy-artifacts-to objdir-clone \
@@ -475,6 +476,9 @@ jobs:
475476
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-lock-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-lock-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_DRLK_2_3.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
476477
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_DeviceBasicComposition.py" --script-args "--storage-path admin_storage.json --manual-code 10054912339 --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
477478
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-lock-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-lock-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_DeviceConformance.py" --script-args "--storage-path admin_storage.json --manual-code 10054912339 --bool-arg ignore_in_progress:True allow_provisional:True --PICS src/app/tests/suites/certification/ci-pics-values --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto --tests test_TC_IDM_10_2"'
479+
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-energy-management-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-energy-management-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json --enable-key 000102030405060708090a0b0c0d0e0f" --script "src/python_testing/TC_EEVSE_2_2.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --hex-arg enableKey:000102030405060708090a0b0c0d0e0f --endpoint 1 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
480+
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-energy-management-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-energy-management-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json --enable-key 000102030405060708090a0b0c0d0e0f" --script "src/python_testing/TC_EEVSE_2_4.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --hex-arg enableKey:000102030405060708090a0b0c0d0e0f --endpoint 1 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
481+
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-energy-management-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-energy-management-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json --enable-key 000102030405060708090a0b0c0d0e0f" --script "src/python_testing/TC_EEVSE_2_5.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --hex-arg enableKey:000102030405060708090a0b0c0d0e0f --endpoint 1 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
478482
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_FAN_3_1.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
479483
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_FAN_3_2.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'
480484
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app --factoryreset --app-args "--discriminator 1234 --KVS kvs1 --trace-to json:out/trace_data/app-{SCRIPT_BASE_NAME}.json" --script "src/python_testing/TC_FAN_3_3.py" --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --trace-to json:out/trace_data/test-{SCRIPT_BASE_NAME}.json --trace-to perfetto:out/trace_data/test-{SCRIPT_BASE_NAME}.perfetto"'

examples/energy-management-app/energy-management-common/src/EVSEManufacturerImpl.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,9 @@ void EVSEManufacturer::FakeReadingsUpdate()
232232

233233
// Update meter values
234234
// Avoid using floats - so we will do a basic rand() call which will generate a integer value between 0 and RAND_MAX
235-
// first compute power as a mean + some random value in range 0 to mPowerRandomness_mW
236-
int64_t power = (rand() % gFakeReadingsData.mPowerRandomness_mW);
235+
// first compute power as a mean + some random value in range +/- mPowerRandomness_mW
236+
int64_t power =
237+
(static_cast<int64_t>(rand()) % (2 * gFakeReadingsData.mPowerRandomness_mW)) - gFakeReadingsData.mPowerRandomness_mW;
237238
power += gFakeReadingsData.mPower_mW; // add in the base power
238239

239240
// TODO call the EPM cluster to send a power reading

src/python_testing/TC_EEVSE_2_2.py

+14-14
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121

2222
import chip.clusters as Clusters
2323
from chip.clusters.Types import NullValue
24-
from matter_testing_support import MatterBaseTest, TestStep, async_test_body, default_matter_test_main
24+
from matter_testing_support import EventChangeCallback, MatterBaseTest, TestStep, async_test_body, default_matter_test_main
2525
from mobly import asserts
26-
from TC_EEVSE_Utils import EEVSEBaseTestHelper, EventChangeCallback
26+
from TC_EEVSE_Utils import EEVSEBaseTestHelper
2727

2828
logger = logging.getLogger(__name__)
2929

@@ -123,7 +123,7 @@ async def test_TC_EEVSE_2_2(self):
123123

124124
self.step("4")
125125
await self.send_test_event_trigger_pluggedin()
126-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EVConnected)
126+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EVConnected)
127127

128128
self.step("4a")
129129
await self.check_evse_attribute("State", Clusters.EnergyEvse.Enums.StateEnum.kPluggedInNoDemand)
@@ -147,7 +147,7 @@ async def test_TC_EEVSE_2_2(self):
147147

148148
self.step("6")
149149
await self.send_test_event_trigger_charge_demand()
150-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStarted)
150+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStarted)
151151

152152
self.step("6a")
153153
await self.check_evse_attribute("State", expected_state)
@@ -172,7 +172,7 @@ async def test_TC_EEVSE_2_2(self):
172172
# Sleep for the charging duration plus a couple of seconds to check it has stopped
173173
time.sleep(charging_duration + 2)
174174
# check EnergyTransferredStoped (EvseStopped)
175-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStopped)
175+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStopped)
176176
expected_reason = Clusters.EnergyEvse.Enums.EnergyTransferStoppedReasonEnum.kEVSEStopped
177177
self.validate_energy_transfer_stopped_event(event_data, session_id, expected_state, expected_reason)
178178

@@ -188,7 +188,7 @@ async def test_TC_EEVSE_2_2(self):
188188
max_charge_current = 12000
189189

190190
await self.send_enable_charge_command(charge_until=charge_until, min_charge=min_charge_current, max_charge=max_charge_current)
191-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStarted)
191+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStarted)
192192

193193
self.step("8a")
194194
await self.check_evse_attribute("State", Clusters.EnergyEvse.Enums.StateEnum.kPluggedInCharging)
@@ -228,7 +228,7 @@ async def test_TC_EEVSE_2_2(self):
228228

229229
self.step("10")
230230
await self.send_test_event_trigger_charge_demand_clear()
231-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStopped)
231+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStopped)
232232
expected_reason = Clusters.EnergyEvse.Enums.EnergyTransferStoppedReasonEnum.kEVStopped
233233
self.validate_energy_transfer_stopped_event(event_data, session_id, expected_state, expected_reason)
234234

@@ -239,15 +239,15 @@ async def test_TC_EEVSE_2_2(self):
239239
await self.send_test_event_trigger_charge_demand()
240240
# Check we get EnergyTransferStarted again
241241
await self.send_enable_charge_command(charge_until=charge_until, min_charge=min_charge_current, max_charge=max_charge_current)
242-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStarted)
242+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStarted)
243243
self.validate_energy_transfer_started_event(event_data, session_id, expected_state, expected_max_charge)
244244

245245
self.step("11a")
246246
await self.check_evse_attribute("State", Clusters.EnergyEvse.Enums.StateEnum.kPluggedInCharging)
247247

248248
self.step("12")
249249
await self.send_test_event_trigger_charge_demand_clear()
250-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStopped)
250+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStopped)
251251
expected_reason = Clusters.EnergyEvse.Enums.EnergyTransferStoppedReasonEnum.kEVStopped
252252
self.validate_energy_transfer_stopped_event(event_data, session_id, expected_state, expected_reason)
253253

@@ -256,7 +256,7 @@ async def test_TC_EEVSE_2_2(self):
256256

257257
self.step("13")
258258
await self.send_test_event_trigger_pluggedin_clear()
259-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EVNotDetected)
259+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EVNotDetected)
260260
expected_state = Clusters.EnergyEvse.Enums.StateEnum.kPluggedInNoDemand
261261
self.validate_ev_not_detected_event(event_data, session_id, expected_state, expected_duration=0, expected_charged=0)
262262

@@ -280,13 +280,13 @@ async def test_TC_EEVSE_2_2(self):
280280
session_id = session_id + 1
281281

282282
# Check we get a new EVConnected event with updated session ID
283-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EVConnected)
283+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EVConnected)
284284
self.validate_ev_connected_event(event_data, session_id)
285285

286286
self.step("14a")
287287
await self.send_test_event_trigger_charge_demand()
288288
expected_state = Clusters.EnergyEvse.Enums.StateEnum.kPluggedInCharging # This is the value at the event time
289-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStarted)
289+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStarted)
290290
self.validate_energy_transfer_started_event(event_data, session_id, expected_state, expected_max_charge)
291291

292292
self.step("14b")
@@ -295,7 +295,7 @@ async def test_TC_EEVSE_2_2(self):
295295
self.step("15")
296296
await self.send_disable_command()
297297
expected_state = Clusters.EnergyEvse.Enums.StateEnum.kPluggedInCharging # This is the value prior to stopping
298-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStopped)
298+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStopped)
299299
expected_reason = Clusters.EnergyEvse.Enums.EnergyTransferStoppedReasonEnum.kEVSEStopped
300300
self.validate_energy_transfer_stopped_event(event_data, session_id, expected_state, expected_reason)
301301

@@ -307,7 +307,7 @@ async def test_TC_EEVSE_2_2(self):
307307

308308
self.step("17")
309309
await self.send_test_event_trigger_pluggedin_clear()
310-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EVNotDetected)
310+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EVNotDetected)
311311
expected_state = Clusters.EnergyEvse.Enums.StateEnum.kPluggedInNoDemand
312312
self.validate_ev_not_detected_event(event_data, session_id, expected_state, expected_duration=0, expected_charged=0)
313313

src/python_testing/TC_EEVSE_2_4.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020

2121
import chip.clusters as Clusters
2222
from chip.clusters.Types import NullValue
23-
from matter_testing_support import MatterBaseTest, TestStep, async_test_body, default_matter_test_main
24-
from TC_EEVSE_Utils import EEVSEBaseTestHelper, EventChangeCallback
23+
from matter_testing_support import EventChangeCallback, MatterBaseTest, TestStep, async_test_body, default_matter_test_main
24+
from TC_EEVSE_Utils import EEVSEBaseTestHelper
2525

2626
logger = logging.getLogger(__name__)
2727

@@ -99,7 +99,7 @@ async def test_TC_EEVSE_2_4(self):
9999

100100
self.step("4")
101101
await self.send_test_event_trigger_pluggedin()
102-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EVConnected)
102+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EVConnected)
103103

104104
self.step("4a")
105105
await self.check_evse_attribute("State", Clusters.EnergyEvse.Enums.StateEnum.kPluggedInNoDemand)
@@ -117,7 +117,7 @@ async def test_TC_EEVSE_2_4(self):
117117

118118
self.step("6")
119119
await self.send_test_event_trigger_charge_demand()
120-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStarted)
120+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStarted)
121121

122122
self.step("6a")
123123
await self.check_evse_attribute("State", Clusters.EnergyEvse.Enums.StateEnum.kPluggedInCharging)
@@ -127,7 +127,7 @@ async def test_TC_EEVSE_2_4(self):
127127

128128
self.step("7")
129129
await self.send_test_event_trigger_evse_ground_fault()
130-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.Fault)
130+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.Fault)
131131
expected_state = Clusters.EnergyEvse.Enums.StateEnum.kPluggedInCharging
132132
previous_fault = Clusters.EnergyEvse.Enums.FaultStateEnum.kNoError
133133
current_fault = Clusters.EnergyEvse.Enums.FaultStateEnum.kGroundFault
@@ -141,7 +141,7 @@ async def test_TC_EEVSE_2_4(self):
141141

142142
self.step("8")
143143
await self.send_test_event_trigger_evse_over_temperature_fault()
144-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.Fault)
144+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.Fault)
145145
expected_state = Clusters.EnergyEvse.Enums.StateEnum.kFault
146146
previous_fault = Clusters.EnergyEvse.Enums.FaultStateEnum.kGroundFault
147147
current_fault = Clusters.EnergyEvse.Enums.FaultStateEnum.kOverTemperature
@@ -155,7 +155,7 @@ async def test_TC_EEVSE_2_4(self):
155155

156156
self.step("9")
157157
await self.send_test_event_trigger_evse_fault_clear()
158-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.Fault)
158+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.Fault)
159159
expected_state = Clusters.EnergyEvse.Enums.StateEnum.kFault
160160
previous_fault = Clusters.EnergyEvse.Enums.FaultStateEnum.kOverTemperature
161161
current_fault = Clusters.EnergyEvse.Enums.FaultStateEnum.kNoError
@@ -169,11 +169,11 @@ async def test_TC_EEVSE_2_4(self):
169169

170170
self.step("10")
171171
await self.send_test_event_trigger_charge_demand_clear()
172-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EnergyTransferStopped)
172+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EnergyTransferStopped)
173173

174174
self.step("11")
175175
await self.send_test_event_trigger_pluggedin_clear()
176-
event_data = events_callback.WaitForEventReport(Clusters.EnergyEvse.Events.EVNotDetected)
176+
event_data = events_callback.wait_for_event_report(Clusters.EnergyEvse.Events.EVNotDetected)
177177
expected_state = Clusters.EnergyEvse.Enums.StateEnum.kPluggedInNoDemand
178178
self.validate_ev_not_detected_event(event_data, session_id, expected_state, expected_duration=0, expected_charged=0)
179179

src/python_testing/TC_EEVSE_2_5.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
import chip.clusters as Clusters
2121
from chip.clusters.Types import NullValue
2222
from chip.interaction_model import Status
23-
from matter_testing_support import MatterBaseTest, TestStep, async_test_body, default_matter_test_main
24-
from TC_EEVSE_Utils import EEVSEBaseTestHelper, EventChangeCallback
23+
from matter_testing_support import EventChangeCallback, MatterBaseTest, TestStep, async_test_body, default_matter_test_main
24+
from TC_EEVSE_Utils import EEVSEBaseTestHelper
2525

2626
logger = logging.getLogger(__name__)
2727

0 commit comments

Comments
 (0)