Skip to content

Commit 11c0cdf

Browse files
authored
Fix TestMultiAdmin to run on chip-repl based yamltest (#24919)
* Fix TestMultiAdmin to run on chip-repl based yamltest * Restyle * Address PR comment * Restyle * Restyle * Fix CI test
1 parent 03f68c6 commit 11c0cdf

4 files changed

+33
-2
lines changed

scripts/tests/chiptest/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ def _GetInDevelopmentTests() -> Set[str]:
139139
"TestEvents.yaml",
140140

141141
"TestGroupMessaging.yaml", # Needs group support in repl
142-
"TestMultiAdmin.yaml", # chip-repl hang on command expeted to fail
143142
}
144143

145144

src/controller/python/ChipDeviceController-ScriptBinding.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,7 @@ void pychip_DeviceController_SetLogFilter(uint8_t category)
348348
PyChipError pychip_DeviceController_ConnectBLE(chip::Controller::DeviceCommissioner * devCtrl, uint16_t discriminator,
349349
uint32_t setupPINCode, chip::NodeId nodeid)
350350
{
351+
sPairingDelegate.SetExpectingPairingComplete(true);
351352
return ToPyChipError(devCtrl->PairDevice(nodeid,
352353
chip::RendezvousParameters()
353354
.SetPeerAddress(Transport::PeerAddress(Transport::Type::kBle))
@@ -369,12 +370,14 @@ PyChipError pychip_DeviceController_ConnectIP(chip::Controller::DeviceCommission
369370
addr.SetTransportType(chip::Transport::Type::kUdp).SetIPAddress(peerAddr);
370371
params.SetPeerAddress(addr).SetDiscriminator(0);
371372

373+
sPairingDelegate.SetExpectingPairingComplete(true);
372374
return ToPyChipError(devCtrl->PairDevice(nodeid, params, sCommissioningParameters));
373375
}
374376

375377
PyChipError pychip_DeviceController_ConnectWithCode(chip::Controller::DeviceCommissioner * devCtrl, const char * onboardingPayload,
376378
chip::NodeId nodeid)
377379
{
380+
sPairingDelegate.SetExpectingPairingComplete(true);
378381
return ToPyChipError(devCtrl->PairDevice(nodeid, onboardingPayload, sCommissioningParameters));
379382
}
380383

@@ -467,6 +470,7 @@ PyChipError pychip_DeviceController_EstablishPASESessionIP(chip::Controller::Dev
467470
VerifyOrReturnError(chip::Inet::IPAddress::FromString(peerAddrStr, peerAddr), ToPyChipError(CHIP_ERROR_INVALID_ARGUMENT));
468471
addr.SetTransportType(chip::Transport::Type::kUdp).SetIPAddress(peerAddr);
469472
params.SetPeerAddress(addr).SetDiscriminator(0);
473+
sPairingDelegate.SetExpectingPairingComplete(true);
470474
return ToPyChipError(devCtrl->EstablishPASEConnection(nodeid, params));
471475
}
472476

@@ -477,6 +481,7 @@ PyChipError pychip_DeviceController_EstablishPASESessionBLE(chip::Controller::De
477481
RendezvousParameters params = chip::RendezvousParameters().SetSetupPINCode(setupPINCode);
478482
addr.SetTransportType(chip::Transport::Type::kBle);
479483
params.SetPeerAddress(addr).SetDiscriminator(discriminator);
484+
sPairingDelegate.SetExpectingPairingComplete(true);
480485
return ToPyChipError(devCtrl->EstablishPASEConnection(nodeid, params));
481486
}
482487

src/controller/python/ChipDeviceController-ScriptDevicePairingDelegate.cpp

+25-1
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,34 @@ void ScriptDevicePairingDelegate::SetCommissioningStatusUpdateCallback(
6666
mOnCommissioningStatusUpdateCallback = callback;
6767
}
6868

69+
void ScriptDevicePairingDelegate::OnStatusUpdate(DevicePairingDelegate::Status status)
70+
{
71+
switch (status)
72+
{
73+
case DevicePairingDelegate::Status::SecurePairingSuccess:
74+
ChipLogProgress(Zcl, "Secure Pairing Success");
75+
break;
76+
case DevicePairingDelegate::Status::SecurePairingFailed:
77+
ChipLogError(Zcl, "Secure Pairing Failed");
78+
if (mOnPairingCompleteCallback != nullptr && expectingPairingComplete)
79+
{
80+
// Incorrect state is the same error that chip-tool sends. We are also
81+
// leveraging the on pairing complete callback to indicate that pairing
82+
// has failed.
83+
expectingPairingComplete = false;
84+
mOnPairingCompleteCallback(ToPyChipError(CHIP_ERROR_INCORRECT_STATE));
85+
}
86+
break;
87+
case DevicePairingDelegate::Status::SecurePairingDiscoveringMoreDevices:
88+
break;
89+
}
90+
}
91+
6992
void ScriptDevicePairingDelegate::OnPairingComplete(CHIP_ERROR error)
7093
{
71-
if (mOnPairingCompleteCallback != nullptr)
94+
if (mOnPairingCompleteCallback != nullptr && expectingPairingComplete)
7295
{
96+
expectingPairingComplete = false;
7397
mOnPairingCompleteCallback(ToPyChipError(error));
7498
}
7599
}

src/controller/python/ChipDeviceController-ScriptDevicePairingDelegate.h

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ class ScriptDevicePairingDelegate final : public Controller::DevicePairingDelega
5959
void SetCommissioningSuccessCallback(DevicePairingDelegate_OnCommissioningSuccessFunct callback);
6060
void SetCommissioningFailureCallback(DevicePairingDelegate_OnCommissioningFailureFunct callback);
6161
void SetCommissioningWindowOpenCallback(DevicePairingDelegate_OnWindowOpenCompleteFunct callback);
62+
void OnStatusUpdate(Controller::DevicePairingDelegate::Status status) override;
6263
void OnPairingComplete(CHIP_ERROR error) override;
6364
void OnCommissioningComplete(NodeId nodeId, CHIP_ERROR err) override;
6465
void OnCommissioningSuccess(PeerId peerId) override;
@@ -68,6 +69,7 @@ class ScriptDevicePairingDelegate final : public Controller::DevicePairingDelega
6869
Callback::Callback<Controller::OnOpenCommissioningWindow> *
6970
GetOpenWindowCallback(Controller::CommissioningWindowOpener * context);
7071
void OnOpenCommissioningWindow(NodeId deviceId, CHIP_ERROR status, SetupPayload payload);
72+
void SetExpectingPairingComplete(bool value) { expectingPairingComplete = value; }
7173

7274
private:
7375
DevicePairingDelegate_OnPairingCompleteFunct mOnPairingCompleteCallback = nullptr;
@@ -78,6 +80,7 @@ class ScriptDevicePairingDelegate final : public Controller::DevicePairingDelega
7880
DevicePairingDelegate_OnCommissioningStatusUpdateFunct mOnCommissioningStatusUpdateCallback = nullptr;
7981
Callback::Callback<Controller::OnOpenCommissioningWindow> mOpenWindowCallback;
8082
Controller::CommissioningWindowOpener * mWindowOpener = nullptr;
83+
bool expectingPairingComplete = false;
8184
};
8285

8386
} // namespace Controller

0 commit comments

Comments
 (0)