Skip to content

Commit ccd3e77

Browse files
Start the helper apps for the MTRDevice pool test as part of the test.
We're actually hitting random failures where the apps get started, but over 15 minutes pass before the test tries to commission them, which causes them to close their commissioning windows, which makes the test fail. The fix is to just start the apps right when we're about to need them.
1 parent 3e93ba6 commit ccd3e77

File tree

4 files changed

+30
-28
lines changed

4 files changed

+30
-28
lines changed

.github/workflows/darwin.yaml

+4-9
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ jobs:
9797
bootstrap-logs-framework-${{ matrix.options.flavor }}
9898
- name: Build example All Clusters Server
9999
run: |
100-
scripts/examples/gn_build_example.sh examples/all-clusters-app/linux out/debug chip_config_network_layer_ble=false
100+
scripts/examples/gn_build_example.sh examples/all-clusters-app/linux out/debug/all-clusters-app chip_config_network_layer_ble=false
101101
- name: Build example OTA Provider
102102
run: |
103-
scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false
103+
scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug/ota-provider-app chip_config_network_layer_ble=false
104104
- name: Build example OTA Requestor
105105
run: |
106106
scripts/examples/gn_build_example.sh examples/ota-requestor-app/linux out/debug/ota-requestor-app chip_config_network_layer_ble=false non_spec_compliant_ota_action_delay_floor=0
@@ -113,13 +113,8 @@ jobs:
113113
run: |
114114
mkdir -p /tmp/darwin/framework-tests
115115
echo "This is a simple log" > /tmp/darwin/framework-tests/end_user_support_log.txt
116-
../../../out/debug/chip-all-clusters-app --interface-id -1 --end_user_support_log /tmp/darwin/framework-tests/end_user_support_log.txt > >(tee /tmp/darwin/framework-tests/all-cluster-app.log) 2> >(tee /tmp/darwin/framework-tests/all-cluster-app-err.log >&2) &
117-
../../../out/debug/chip-all-clusters-app --interface-id -1 --dac_provider ../../../credentials/development/commissioner_dut/struct_cd_origin_pid_vid_correct/test_case_vector.json --product-id 32768 --discriminator 3839 --secured-device-port 5539 --KVS /tmp/chip-all-clusters-app-kvs2 > >(tee /tmp/darwin/framework-tests/all-cluster-app-origin-vid.log) 2> >(tee /tmp/darwin/framework-tests/all-cluster-app-origin-vid-err.log >&2) &
118-
../../../out/debug/chip-all-clusters-app --interface-id -1 --discriminator 101 --passcode 1001 --KVS /tmp/chip-all-clusters-app-kvs101 --secured-device-port 5531 &
119-
../../../out/debug/chip-all-clusters-app --interface-id -1 --discriminator 102 --passcode 1002 --KVS /tmp/chip-all-clusters-app-kvs102 --secured-device-port 5532 &
120-
../../../out/debug/chip-all-clusters-app --interface-id -1 --discriminator 103 --passcode 1003 --KVS /tmp/chip-all-clusters-app-kvs103 --secured-device-port 5533 &
121-
../../../out/debug/chip-all-clusters-app --interface-id -1 --discriminator 104 --passcode 1004 --KVS /tmp/chip-all-clusters-app-kvs104 --secured-device-port 5534 &
122-
../../../out/debug/chip-all-clusters-app --interface-id -1 --discriminator 105 --passcode 1005 --KVS /tmp/chip-all-clusters-app-kvs105 --secured-device-port 5535 &
116+
../../../out/debug/all-clusters-app/chip-all-clusters-app --interface-id -1 --end_user_support_log /tmp/darwin/framework-tests/end_user_support_log.txt > >(tee /tmp/darwin/framework-tests/all-cluster-app.log) 2> >(tee /tmp/darwin/framework-tests/all-cluster-app-err.log >&2) &
117+
../../../out/debug/all-clusters-app/chip-all-clusters-app --interface-id -1 --dac_provider ../../../credentials/development/commissioner_dut/struct_cd_origin_pid_vid_correct/test_case_vector.json --product-id 32768 --discriminator 3839 --secured-device-port 5539 --KVS /tmp/chip-all-clusters-app-kvs2 > >(tee /tmp/darwin/framework-tests/all-cluster-app-origin-vid.log) 2> >(tee /tmp/darwin/framework-tests/all-cluster-app-origin-vid-err.log >&2) &
123118
124119
export TEST_RUNNER_ASAN_OPTIONS=__CURRENT_VALUE__:detect_stack_use_after_return=1
125120

src/darwin/Framework/CHIPTests/MTRCommissionableBrowserTests.m

+2-7
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,8 @@
3434
static const uint16_t kTestProductId2 = 0x8001u;
3535
static const uint16_t kTestDiscriminator1 = 3840u;
3636
static const uint16_t kTestDiscriminator2 = 3839u;
37-
static const uint16_t kTestDiscriminator3 = 101u;
38-
static const uint16_t kTestDiscriminator4 = 102u;
39-
static const uint16_t kTestDiscriminator5 = 103u;
40-
static const uint16_t kTestDiscriminator6 = 104u;
41-
static const uint16_t kTestDiscriminator7 = 105u;
4237
static const uint16_t kDiscoverDeviceTimeoutInSeconds = 10;
43-
static const uint16_t kExpectedDiscoveredDevicesCount = 7;
38+
static const uint16_t kExpectedDiscoveredDevicesCount = 2;
4439

4540
// Singleton controller we use.
4641
static MTRDeviceController * sController = nil;
@@ -102,7 +97,7 @@ - (void)controller:(MTRDeviceController *)controller didFindCommissionableDevice
10297
XCTAssertEqual(instanceName.length, 16); // The instance name is random, so just ensure the len is right.
10398
XCTAssertEqualObjects(vendorId, @(kTestVendorId));
10499
XCTAssertTrue([productId isEqual:@(kTestProductId1)] || [productId isEqual:@(kTestProductId2)]);
105-
XCTAssertTrue([discriminator isEqual:@(kTestDiscriminator1)] || [discriminator isEqual:@(kTestDiscriminator2)] || [discriminator isEqual:@(kTestDiscriminator3)] || [discriminator isEqual:@(kTestDiscriminator4)] || [discriminator isEqual:@(kTestDiscriminator5)] || [discriminator isEqual:@(kTestDiscriminator6)] || [discriminator isEqual:@(kTestDiscriminator7)]);
100+
XCTAssertTrue([discriminator isEqual:@(kTestDiscriminator1)] || [discriminator isEqual:@(kTestDiscriminator2)]);
106101
XCTAssertEqual(commissioningMode, YES);
107102

108103
NSLog(@"Found Device (%@) with discriminator: %@ (vendor: %@, product: %@)", instanceName, discriminator, vendorId, productId);

src/darwin/Framework/CHIPTests/MTRPerControllerStorageTests.m

+23-11
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#import "MTRTestKeys.h"
3030
#import "MTRTestPerControllerStorage.h"
3131
#import "MTRTestResetCommissioneeHelper.h"
32+
#import "MTRTestServerAppRunner.h"
3233

3334
static const uint16_t kPairingTimeoutInSeconds = 10;
3435
static const uint16_t kTimeoutInSeconds = 3;
@@ -2147,7 +2148,7 @@ - (void)testSetMRPParametersWithRunningController
21472148
}
21482149

21492150
// TODO: This might also want to go in a separate test file, with some shared setup for commissioning devices per test
2150-
- (void)doTestSubscriptionPoolWithSize:(NSInteger)subscriptionPoolSize
2151+
- (void)doTestSubscriptionPoolWithSize:(NSInteger)subscriptionPoolSize deviceOnboardingPayloads:(NSDictionary<NSNumber *, NSString *> *)deviceOnboardingPayloads
21512152
{
21522153
__auto_type * factory = [MTRDeviceControllerFactory sharedInstance];
21532154
XCTAssertNotNil(factory);
@@ -2183,15 +2184,7 @@ - (void)doTestSubscriptionPoolWithSize:(NSInteger)subscriptionPoolSize
21832184

21842185
XCTAssertEqualObjects(controller.controllerNodeID, nodeID);
21852186

2186-
// QRCodes generated for discriminators 101~105 and passcodes 1001~1005
21872187
NSArray<NSNumber *> * orderedDeviceIDs = @[ @(101), @(102), @(103), @(104), @(105) ];
2188-
NSDictionary<NSNumber *, NSString *> * deviceOnboardingPayloads = @{
2189-
@(101) : @"MT:00000EBQ15IZC900000",
2190-
@(102) : @"MT:00000MNY16-AD900000",
2191-
@(103) : @"MT:00000UZ427GOD900000",
2192-
@(104) : @"MT:00000CQM00Z.D900000",
2193-
@(105) : @"MT:00000K0V01FDE900000",
2194-
};
21952188

21962189
// Commission 5 devices
21972190
for (NSNumber * deviceID in orderedDeviceIDs) {
@@ -2272,8 +2265,27 @@ - (void)doTestSubscriptionPoolWithSize:(NSInteger)subscriptionPoolSize
22722265

22732266
- (void)testSubscriptionPool
22742267
{
2275-
[self doTestSubscriptionPoolWithSize:1];
2276-
[self doTestSubscriptionPoolWithSize:2];
2268+
// QRCodes generated for discriminators 1111~1115 and passcodes 1001~1005
2269+
NSDictionary<NSNumber *, NSString *> * deviceOnboardingPayloads = @{
2270+
@(101) : @"MT:00000UZ427U0D900000",
2271+
@(102) : @"MT:00000CQM00BED900000",
2272+
@(103) : @"MT:00000K0V01TRD900000",
2273+
@(104) : @"MT:00000SC11293E900000",
2274+
@(105) : @"MT:00000-O913RGE900000",
2275+
};
2276+
2277+
// Start our helper apps.
2278+
__auto_type * sortedKeys = [[deviceOnboardingPayloads allKeys] sortedArrayUsingSelector:@selector(compare:)];
2279+
for (NSNumber * deviceID in sortedKeys) {
2280+
__auto_type * appRunner = [[MTRTestServerAppRunner alloc] initWithAppName:@"all-clusters"
2281+
arguments:@[]
2282+
payload:deviceOnboardingPayloads[deviceID]
2283+
testcase:self];
2284+
XCTAssertNotNil(appRunner);
2285+
}
2286+
2287+
[self doTestSubscriptionPoolWithSize:1 deviceOnboardingPayloads:deviceOnboardingPayloads];
2288+
[self doTestSubscriptionPoolWithSize:2 deviceOnboardingPayloads:deviceOnboardingPayloads];
22772289
}
22782290

22792291
@end

src/darwin/Framework/CHIPTests/TestHelpers/MTRTestServerAppRunner.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ - (instancetype)initWithAppName:(NSString *)name arguments:(NSArray<NSString *>
9090

9191
[testcase launchTask:_appTask];
9292

93-
NSLog(@"Started %@ with arguments %@ stdout=%@ and stderr=%@", name, allArguments, outFile, errorFile);
93+
NSLog(@"Started chip-%@-app with arguments %@ stdout=%@ and stderr=%@", name, allArguments, outFile, errorFile);
9494

9595
return self;
9696
#endif // HAVE_NSTASK

0 commit comments

Comments
 (0)