Skip to content

Commit 4de988f

Browse files
committed
Addressed more flakiness issues.
1 parent 0237928 commit 4de988f

File tree

1 file changed

+148
-74
lines changed

1 file changed

+148
-74
lines changed

src/runtime/gc_test.go

Lines changed: 148 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,10 +1118,14 @@ func TestGoroutineLeakGC(t *testing.T) {
11181118
flakyLeaks map[*regexp.Regexp]struct{}
11191119
}
11201120

1121+
// FLAKYBOUNDARY is a special string that delineates flaky leaks from expected leaks
1122+
// when using makeTest (below) to construct test cases.
1123+
const FLAKYBOUNDARY = "$flaky-leaks$"
1124+
11211125
// makeTest is a short-hand for creating test cases.
11221126
// Each of the leaks in the list is identified by a regular expression.
11231127
//
1124-
// If a leak is the string "FLAKY", it notifies makeTest that any remaining
1128+
// If a leak is FLAKYBOUNDARY, it notifies makeTest that any remaining
11251129
// leak patterns should be added to the flakyLeaks map.
11261130
makeTest := func(
11271131
cfg testCase,
@@ -1142,7 +1146,7 @@ func TestGoroutineLeakGC(t *testing.T) {
11421146

11431147
mode := EXPECTED
11441148
for _, leak := range leaks {
1145-
if leak == "FLAKY" {
1149+
if leak == FLAKYBOUNDARY {
11461150
mode = FLAKY
11471151
continue
11481152
}
@@ -1202,84 +1206,115 @@ func TestGoroutineLeakGC(t *testing.T) {
12021206
// This list is curated for tests that are not excessively flaky.
12031207
gokerTestCases := []testCase{
12041208
makeTest(testCase{name: "Cockroach584"},
1205-
`main\.Cockroach584\.func2\.1 .* \[sync\.Mutex\.Lock\]`),
1209+
`main\.Cockroach584\.func2\.1 .* \[sync\.Mutex\.Lock\]`,
1210+
),
12061211
makeTest(testCase{name: "Cockroach1055"},
12071212
`main\.Cockroach1055\.func2 .* \[chan receive\]`,
1213+
`main\.Cockroach1055\.func2\.2 .* \[sync\.WaitGroup\.Wait\]`,
12081214
`main\.Cockroach1055\.func2\.1 .* \[chan receive\]`,
1215+
FLAKYBOUNDARY,
12091216
`main\.Cockroach1055\.func2\.1 .* \[sync\.Mutex\.Lock\]`,
1210-
`main\.Cockroach1055\.func2\.2 .* \[sync\.WaitGroup\.Wait\]`),
1217+
),
12111218
makeTest(testCase{name: "Cockroach1462"},
12121219
`main\.\(\*Stopper_cockroach1462\)\.RunWorker\.func1 .* \[chan send\]`,
1213-
`main\.Cockroach1462\.func2 .* \[sync\.WaitGroup\.Wait\]`),
1220+
`main\.Cockroach1462\.func2 .* \[sync\.WaitGroup\.Wait\]`,
1221+
),
12141222
makeTest(testCase{name: "Cockroach2448"},
12151223
`main\.Cockroach2448\.func2\.gowrap1 .* \[select\]`,
1216-
`main\.Cockroach2448\.func2\.gowrap2 .* \[select\]`),
1224+
`main\.Cockroach2448\.func2\.gowrap2 .* \[select\]`,
1225+
),
12171226
makeTest(testCase{name: "Cockroach3710"},
12181227
`main\.Cockroach3710\.func2\.gowrap1 .* \[sync\.RWMutex\.RLock\]`,
1219-
`main\.\(\*Store_cockroach3710\)\.processRaft\.func1 .* \[sync\.RWMutex\.Lock\]`),
1228+
`main\.\(\*Store_cockroach3710\)\.processRaft\.func1 .* \[sync\.RWMutex\.Lock\]`,
1229+
),
12201230
makeTest(testCase{name: "Cockroach6181", repetitions: 20},
12211231
`main\.testRangeCacheCoalescedRequests_cockroach6181 .* \[sync\.WaitGroup\.Wait\]`,
12221232
`main\.testRangeCacheCoalescedRequests_cockroach6181\.func1\.1 .* \[sync\.(RW)?Mutex\.Lock\]`,
1223-
`main\.testRangeCacheCoalescedRequests_cockroach6181\.func1\.1 .* \[sync\.RWMutex\.RLock\]`),
1233+
`main\.testRangeCacheCoalescedRequests_cockroach6181\.func1\.1 .* \[sync\.RWMutex\.RLock\]`,
1234+
),
12241235
makeTest(testCase{name: "Cockroach7504", repetitions: 100},
12251236
`main\.Cockroach7504\.func2\.1 .* \[sync\.Mutex\.Lock\]`,
1226-
`main\.Cockroach7504\.func2\.2 .* \[sync\.Mutex\.Lock\]`),
1237+
`main\.Cockroach7504\.func2\.2 .* \[sync\.Mutex\.Lock\]`,
1238+
),
12271239
makeTest(testCase{name: "Cockroach9935"},
1228-
`main\.Cockroach9935\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`),
1240+
`main\.Cockroach9935\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1241+
),
12291242
makeTest(testCase{name: "Cockroach10214"},
12301243
`main\.Cockroach10214\.func2\.1 .* \[sync\.Mutex\.Lock\]`,
1231-
`main\.Cockroach10214\.func2\.2 .* \[sync\.Mutex\.Lock\]`),
1244+
`main\.Cockroach10214\.func2\.2 .* \[sync\.Mutex\.Lock\]`,
1245+
),
12321246
makeTest(testCase{name: "Cockroach10790"},
1233-
`main\.\(\*Replica_cockroach10790\)\.beginCmds\.func1 .* \[chan receive\]`),
1247+
`main\.\(\*Replica_cockroach10790\)\.beginCmds\.func1 .* \[chan receive\]`,
1248+
),
12341249
makeTest(testCase{name: "Cockroach13197"},
1235-
`main\.\(\*DB_cockroach13197\)\.begin\.gowrap1 .* \[chan receive\]`),
1250+
`main\.\(\*DB_cockroach13197\)\.begin\.gowrap1 .* \[chan receive\]`,
1251+
),
12361252
makeTest(testCase{name: "Cockroach13755"},
1237-
`main\.\(\*Rows_cockroach13755\)\.initContextClose\.gowrap1 .* \[chan receive\]`),
1253+
`main\.\(\*Rows_cockroach13755\)\.initContextClose\.gowrap1 .* \[chan receive\]`,
1254+
),
12381255
makeTest(testCase{name: "Cockroach16167"},
12391256
`main\.Cockroach16167\.func2 .* \[sync\.RWMutex\.RLock\]`,
1240-
`main\.Cockroach16167\.func2\.gowrap1 .* \[sync\.RWMutex\.Lock\]`),
1257+
`main\.Cockroach16167\.func2\.gowrap1 .* \[sync\.RWMutex\.Lock\]`,
1258+
),
12411259
makeTest(testCase{name: "Cockroach10790"},
1242-
`main\.\(\*Replica_cockroach10790\)\.beginCmds\.func1 .* \[chan receive\]`),
1260+
`main\.\(\*Replica_cockroach10790\)\.beginCmds\.func1 .* \[chan receive\]`,
1261+
),
12431262
makeTest(testCase{name: "Cockroach13197"},
1244-
`main\.\(\*DB_cockroach13197\)\.begin\.gowrap1 .* \[chan receive\]`),
1263+
`main\.\(\*DB_cockroach13197\)\.begin\.gowrap1 .* \[chan receive\]`,
1264+
),
12451265
makeTest(testCase{name: "Cockroach13755"},
1246-
`main\.\(\*Rows_cockroach13755\)\.initContextClose\.gowrap1 .* \[chan receive\]`),
1266+
`main\.\(\*Rows_cockroach13755\)\.initContextClose\.gowrap1 .* \[chan receive\]`,
1267+
),
12471268
makeTest(testCase{name: "Cockroach16167"},
12481269
`main\.Cockroach16167\.func2 .* \[sync\.RWMutex\.RLock\]`,
1249-
`main\.Cockroach16167\.func2\.gowrap1 .* \[sync\.RWMutex\.Lock\]`),
1270+
`main\.Cockroach16167\.func2\.gowrap1 .* \[sync\.RWMutex\.Lock\]`,
1271+
),
12501272
makeTest(testCase{name: "Cockroach18101"},
1251-
`main\.restore_cockroach18101\.func1 .* \[chan send\]`),
1273+
`main\.restore_cockroach18101\.func1 .* \[chan send\]`,
1274+
),
12521275
makeTest(testCase{name: "Cockroach24808"},
1253-
`main\.Cockroach24808\.func2 .* \[chan send\]`),
1276+
`main\.Cockroach24808\.func2 .* \[chan send\]`,
1277+
),
12541278
makeTest(testCase{name: "Cockroach25456"},
1255-
`main\.Cockroach25456\.func2 .* \[chan receive\]`),
1279+
`main\.Cockroach25456\.func2 .* \[chan receive\]`,
1280+
),
12561281
makeTest(testCase{name: "Cockroach35073"},
12571282
`main\.Cockroach35073\.func2.1 .* \[chan send\]`,
1258-
`main\.Cockroach35073\.func2 .* \[chan send\]`),
1283+
`main\.Cockroach35073\.func2 .* \[chan send\]`,
1284+
),
12591285
makeTest(testCase{name: "Cockroach35931"},
1260-
`main\.Cockroach35931\.func2 .* \[chan send\]`),
1286+
`main\.Cockroach35931\.func2 .* \[chan send\]`,
1287+
),
12611288
makeTest(testCase{name: "Etcd5509"},
1262-
`main\.Etcd5509\.func2 .* \[sync\.RWMutex\.Lock\]`),
1289+
`main\.Etcd5509\.func2 .* \[sync\.RWMutex\.Lock\]`,
1290+
),
12631291
makeTest(testCase{name: "Etcd6857"},
1264-
`main\.Etcd6857\.func2\.gowrap2 .* \[chan send\]`),
1292+
`main\.Etcd6857\.func2\.gowrap2 .* \[chan send\]`,
1293+
),
12651294
makeTest(testCase{name: "Etcd6873"},
12661295
`main\.Etcd6873\.func2\.gowrap1 .* \[chan receive\]`,
1267-
`main\.newWatchBroadcasts_etcd6873\.func1 .* \[sync\.Mutex\.Lock\]`),
1296+
`main\.newWatchBroadcasts_etcd6873\.func1 .* \[sync\.Mutex\.Lock\]`,
1297+
),
12681298
makeTest(testCase{name: "Etcd7492"},
12691299
`main\.Etcd7492\.func2 .* \[sync\.WaitGroup\.Wait\]`,
12701300
`main\.Etcd7492\.func2\.1 .* \[chan send\]`,
1271-
`main\.NewSimpleTokenTTLKeeper_etcd7492\.gowrap1 .* \[sync\.Mutex\.Lock\]`),
1301+
`main\.NewSimpleTokenTTLKeeper_etcd7492\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1302+
),
12721303
makeTest(testCase{name: "Etcd7902"},
12731304
`main\.doRounds_etcd7902\.gowrap1 .* \[chan receive\]`,
12741305
`main\.doRounds_etcd7902\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1275-
`main\.runElectionFunc_etcd7902 .* \[sync\.WaitGroup\.Wait\]`),
1306+
`main\.runElectionFunc_etcd7902 .* \[sync\.WaitGroup\.Wait\]`,
1307+
),
12761308
makeTest(testCase{name: "Etcd10492"},
1277-
`main\.Etcd10492\.func2 .* \[sync\.Mutex\.Lock\]`),
1309+
`main\.Etcd10492\.func2 .* \[sync\.Mutex\.Lock\]`,
1310+
),
12781311
makeTest(testCase{name: "Grpc660"},
1279-
`main\.\(\*benchmarkClient_grpc660\)\.doCloseLoopUnary\.func1 .* \[chan send\]`),
1312+
`main\.\(\*benchmarkClient_grpc660\)\.doCloseLoopUnary\.func1 .* \[chan send\]`,
1313+
),
12801314
makeTest(testCase{name: "Grpc795"},
12811315
`main\.\(\*test_grpc795\)\.startServer\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1282-
`main\.testServerGracefulStopIdempotent_grpc795 .* \[sync\.Mutex\.Lock\]`),
1316+
`main\.testServerGracefulStopIdempotent_grpc795 .* \[sync\.Mutex\.Lock\]`,
1317+
),
12831318
makeTest(testCase{name: "Grpc862"},
12841319
`main\.DialContext_grpc862\.func2 .* \[chan receive\]`),
12851320
makeTest(testCase{name: "Grpc1275"},
@@ -1288,117 +1323,156 @@ func TestGoroutineLeakGC(t *testing.T) {
12881323
`main\.DialContext_grpc1424\.func1 .* \[chan receive\]`),
12891324
makeTest(testCase{name: "Grpc1460"},
12901325
`main\.Grpc1460\.func2\.gowrap1 .* \[chan receive\]`,
1291-
`main\.Grpc1460\.func2\.gowrap2 .* \[sync\.Mutex\.Lock\]`),
1292-
makeTest(testCase{name: "Grpc3017", repetitions: 50},
1326+
`main\.Grpc1460\.func2\.gowrap2 .* \[sync\.Mutex\.Lock\]`,
1327+
),
1328+
makeTest(testCase{name: "Grpc3017", repetitions: 20},
12931329
// grpc/3017 involves a goroutine leak that also simultaneously engages many GC assists.
1294-
// Testing runtime behaviour when pivoting between regular and goroutine leak detection modes.
1330+
FLAKYBOUNDARY,
1331+
// All the leaks are flaky.
12951332
`main\.Grpc3017\.func2 .* \[chan receive\]`,
12961333
`main\.Grpc3017\.func2\.1 .* \[sync\.Mutex\.Lock\]`,
1297-
`main\.\(\*lbCacheClientConn_grpc3017\)\.RemoveSubConn\.func1 .* \[sync\.Mutex\.Lock\]`),
1334+
`main\.\(\*lbCacheClientConn_grpc3017\)\.RemoveSubConn\.func1 .* \[sync\.Mutex\.Lock\]`,
1335+
),
12981336
makeTest(testCase{name: "Hugo3251", repetitions: 20},
12991337
`main\.Hugo3251\.func2 .* \[sync\.WaitGroup\.Wait\]`,
13001338
`main\.Hugo3251\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1301-
`main\.Hugo3251\.func2\.gowrap1 .* \[sync\.RWMutex\.RLock\]`),
1339+
`main\.Hugo3251\.func2\.gowrap1 .* \[sync\.RWMutex\.RLock\]`,
1340+
),
13021341
makeTest(testCase{name: "Hugo5379"},
1303-
`main\.\(\*Page_hugo5379\)\.initContent\.func1\.1 .* \[sync\.Mutex\.Lock\]`,
13041342
`main\.\(\*Site_hugo5379\)\.renderPages\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
13051343
`main\.\(\*Page_hugo5379\)\.initContentPlainAndMeta(\.\(\*Page_hugo5379\)\.initContent)?\.func1\.1 .* \[sync\.Mutex\.Lock\]`,
1306-
`main\.Hugo5379\.func2 .* \[sync\.WaitGroup\.Wait\]`),
1344+
`main\.Hugo5379\.func2 .* \[sync\.WaitGroup\.Wait\]`,
1345+
FLAKYBOUNDARY,
1346+
`main\.\(\*Page_hugo5379\)\.initContent\.func1\.1 .* \[sync\.Mutex\.Lock\]`,
1347+
),
13071348
makeTest(testCase{name: "Istio16224"},
13081349
`main\.Istio16224\.func2 .* \[sync\.Mutex\.Lock\]`,
13091350
`main\.Istio16224\.func2\.gowrap1 .* \[chan send\]`,
1351+
FLAKYBOUNDARY,
13101352
// This is also a leak, but it is too flaky to be reliably detected.
1311-
`FLAKY`,
1312-
`main\.Istio16224\.func2\.gowrap1 .* \[chan receive\]`),
1353+
`main\.Istio16224\.func2\.gowrap1 .* \[chan receive\]`,
1354+
),
13131355
makeTest(testCase{name: "Istio17860"},
1314-
`main\.\(\*agent_istio17860\)\.Restart\.gowrap2 .* \[chan send\]`),
1356+
`main\.\(\*agent_istio17860\)\.Restart\.gowrap2 .* \[chan send\]`,
1357+
),
13151358
makeTest(testCase{name: "Istio18454"},
13161359
`main\.\(\*Worker_istio18454\)\.Start\.func1 .* \[chan receive\]`,
1317-
`main\.\(\*Worker_istio18454\)\.Start\.func1 .* \[chan send\]`),
1360+
`main\.\(\*Worker_istio18454\)\.Start\.func1 .* \[chan send\]`,
1361+
),
13181362
// NOTE (vsaioc):
13191363
// Kubernetes/1321 is excluded due to a race condition in the original program
1320-
// that may, in very rare cases, lead to nil pointer dereference crashes.
1321-
// (Reproducible even with regular GC).
1364+
// that may, in extremely rare cases, lead to nil pointer dereference crashes.
1365+
// (Reproducible even with regular GC). Only kept here for posterity.
13221366
//
13231367
// makeTest(testCase{name: "Kubernetes1321"},
13241368
// `main\.NewMux_kubernetes1321\.gowrap1 .* \[chan send\]`,
13251369
// `main\.testMuxWatcherClose_kubernetes1321 .* \[sync\.Mutex\.Lock\]`),
13261370
makeTest(testCase{name: "Kubernetes5316"},
1327-
`main\.finishRequest_kubernetes5316\.func1 .* \[chan send\]`),
1371+
`main\.finishRequest_kubernetes5316\.func1 .* \[chan send\]`,
1372+
),
13281373
makeTest(testCase{name: "Kubernetes6632"},
13291374
`main\.Kubernetes6632\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1330-
`main\.Kubernetes6632\.func2\.gowrap2 .* \[chan send\]`),
1375+
`main\.Kubernetes6632\.func2\.gowrap2 .* \[chan send\]`,
1376+
),
13311377
makeTest(testCase{name: "Kubernetes10182"},
13321378
`main\.\(\*statusManager_kubernetes10182\)\.Start\.func1 .* \[sync\.Mutex\.Lock\]`,
13331379
`main\.Kubernetes10182\.func2\.gowrap2 .* \[chan send\]`,
1334-
`main\.Kubernetes10182\.func2\.gowrap3 .* \[chan send\]`),
1335-
makeTest(testCase{name: "Kubernetes11298", repetitions: 10},
1380+
`main\.Kubernetes10182\.func2\.gowrap3 .* \[chan send\]`,
1381+
),
1382+
makeTest(testCase{name: "Kubernetes11298"},
1383+
// This entire test is flaky in producing leaks. Run it only to check for crashes.
1384+
FLAKYBOUNDARY,
13361385
`main\.After_kubernetes11298\.func1 .* \[chan receive\]`,
13371386
`main\.After_kubernetes11298\.func1 .* \[sync\.Cond\.Wait\]`,
1338-
`main\.Kubernetes11298\.func2 .* \[chan receive\]`),
1387+
`main\.Kubernetes11298\.func2 .* \[chan receive\]`,
1388+
),
13391389
makeTest(testCase{name: "Kubernetes13135"},
1340-
`main\.Kubernetes13135\.func2 .* \[sync\.WaitGroup\.Wait\]`),
1390+
`main\.Kubernetes13135\.func2 .* \[sync\.WaitGroup\.Wait\]`,
1391+
),
13411392
makeTest(testCase{name: "Kubernetes25331"},
1342-
`main\.Kubernetes25331\.func2\.gowrap1 .* \[chan send\]`),
1393+
`main\.Kubernetes25331\.func2\.gowrap1 .* \[chan send\]`,
1394+
),
13431395
makeTest(testCase{name: "Kubernetes26980"},
13441396
`main\.Kubernetes26980\.func2 .* \[chan receive\]`,
13451397
`main\.Kubernetes26980\.func2\.1 .* \[sync\.Mutex\.Lock\]`,
1346-
`main\.Kubernetes26980\.func2\.gowrap2 .* \[chan receive\]`),
1398+
`main\.Kubernetes26980\.func2\.gowrap2 .* \[chan receive\]`,
1399+
),
13471400
makeTest(testCase{name: "Kubernetes30872"},
13481401
`main\.\(\*DelayingDeliverer_kubernetes30872\)\.StartWithHandler\.func1 .* \[sync\.Mutex\.Lock\]`,
13491402
`main\.\(\*federatedInformerImpl_kubernetes30872\)\.Start\.gowrap2 .* \[sync\.Mutex\.Lock\]`,
1350-
`main\.\(\*NamespaceController_kubernetes30872\)\.Run\.func1 .* \[sync\.Mutex\.Lock\]`),
1403+
`main\.\(\*NamespaceController_kubernetes30872\)\.Run\.func1 .* \[sync\.Mutex\.Lock\]`,
1404+
),
13511405
makeTest(testCase{name: "Kubernetes38669"},
1352-
`main\.newCacheWatcher_kubernetes38669\.gowrap1 .* \[chan send\]`),
1406+
`main\.newCacheWatcher_kubernetes38669\.gowrap1 .* \[chan send\]`,
1407+
),
13531408
makeTest(testCase{name: "Kubernetes58107", repetitions: 5},
13541409
`main\.\(\*ResourceQuotaController_kubernetes58107\)\.Run\.gowrap[12] .* \[sync\.Cond\.Wait\]`,
13551410
`main\.\(\*ResourceQuotaController_kubernetes58107\)\.Run\.gowrap[12] .* \[sync\.RWMutex\.RLock\]`,
1356-
`main\.startResourceQuotaController_kubernetes58107\.gowrap2 .* \[sync\.RWMutex\.Lock\]`),
1411+
`main\.startResourceQuotaController_kubernetes58107\.gowrap2 .* \[sync\.RWMutex\.Lock\]`,
1412+
),
13571413
makeTest(testCase{name: "Kubernetes62464"},
13581414
`main\.Kubernetes62464\.func2\.gowrap1 .* \[sync\.RWMutex\.RLock\]`,
1359-
`main\.Kubernetes62464\.func2\.gowrap2 .* \[sync\.RWMutex\.Lock\]`),
1415+
`main\.Kubernetes62464\.func2\.gowrap2 .* \[sync\.RWMutex\.Lock\]`,
1416+
),
13601417
makeTest(testCase{name: "Kubernetes70277"},
1361-
`main\.Kubernetes70277\.func2 .* \[chan receive\]`),
1418+
`main\.Kubernetes70277\.func2 .* \[chan receive\]`,
1419+
),
13621420
makeTest(testCase{name: "Moby4395"},
1363-
`main\.Go_moby4395\.func1 .* \[chan send\]`),
1364-
makeTest(testCase{name: "Moby4951", repetitions: 10},
1421+
`main\.Go_moby4395\.func1 .* \[chan send\]`,
1422+
),
1423+
makeTest(testCase{name: "Moby4951"},
1424+
FLAKYBOUNDARY,
13651425
`main\.Moby4951\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1366-
`main\.Moby4951\.func2\.gowrap2 .* \[sync\.Mutex\.Lock\]`),
1426+
`main\.Moby4951\.func2\.gowrap2 .* \[sync\.Mutex\.Lock\]`,
1427+
),
13671428
makeTest(testCase{name: "Moby7559"},
1368-
`main\.Moby7559\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`),
1429+
`main\.Moby7559\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1430+
),
13691431
makeTest(testCase{name: "Moby17176"},
1370-
`main\.testDevmapperLockReleasedDeviceDeletion_moby17176\.func1 .* \[sync\.Mutex\.Lock\]`),
1432+
`main\.testDevmapperLockReleasedDeviceDeletion_moby17176\.func1 .* \[sync\.Mutex\.Lock\]`,
1433+
),
13711434
makeTest(testCase{name: "Moby21233"},
13721435
`main\.\(\*Transfer_moby21233\)\.Watch\.func1 .* \[chan send\]`,
13731436
`main\.\(\*Transfer_moby21233\)\.Watch\.func1 .* \[select\]`,
1374-
`main\.testTransfer_moby21233 .* \[chan receive\]`),
1437+
`main\.testTransfer_moby21233 .* \[chan receive\]`,
1438+
),
13751439
makeTest(testCase{name: "Moby25348"},
1376-
`main\.Moby25348\.func2\.gowrap1 .* \[sync\.WaitGroup\.Wait\]`),
1440+
`main\.Moby25348\.func2\.gowrap1 .* \[sync\.WaitGroup\.Wait\]`,
1441+
),
13771442
makeTest(testCase{name: "Moby27782"},
13781443
`main\.\(\*JSONFileLogger_moby27782\)\.ReadLogs\.gowrap1 .* \[sync\.Cond\.Wait\]`,
1379-
`main\.NewWatcher_moby27782\.gowrap1 .* \[select\]`),
1444+
`main\.NewWatcher_moby27782\.gowrap1 .* \[select\]`,
1445+
),
13801446
makeTest(testCase{name: "Moby28462"},
13811447
`main\.Moby28462\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1382-
`main\.Moby28462\.func2\.gowrap2 .* \[chan send\]`),
1448+
`main\.Moby28462\.func2\.gowrap2 .* \[chan send\]`,
1449+
),
13831450
makeTest(testCase{name: "Moby29733"},
13841451
`main\.Moby29733\.func2 .* \[chan receive\]`,
1385-
`main\.testActive_moby29733\.func1 .* \[sync\.Cond\.Wait\]`),
1452+
`main\.testActive_moby29733\.func1 .* \[sync\.Cond\.Wait\]`,
1453+
),
13861454
makeTest(testCase{name: "Moby30408"},
13871455
`main\.Moby30408\.func2 .* \[chan receive\]`,
1388-
`main\.testActive_moby30408\.func1 .* \[sync\.Cond\.Wait\]`),
1456+
`main\.testActive_moby30408\.func1 .* \[sync\.Cond\.Wait\]`,
1457+
),
13891458
makeTest(testCase{name: "Moby33781"},
1390-
`main\.monitor_moby33781\.func1 .* \[chan send\]`),
1459+
`main\.monitor_moby33781\.func1 .* \[chan send\]`,
1460+
),
13911461
makeTest(testCase{name: "Moby36114"},
1392-
`main\.Moby36114\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`),
1462+
`main\.Moby36114\.func2\.gowrap1 .* \[sync\.Mutex\.Lock\]`,
1463+
),
13931464
makeTest(testCase{name: "Serving2137"},
13941465
`main\.\(\*Breaker_serving2137\)\.concurrentRequest\.func1 .* \[chan send\]`,
13951466
`main\.\(\*Breaker_serving2137\)\.concurrentRequest\.func1 .* \[sync\.Mutex\.Lock\]`,
1396-
`main\.Serving2137\.func2 .* \[chan receive\]`),
1467+
`main\.Serving2137\.func2 .* \[chan receive\]`,
1468+
),
13971469
makeTest(testCase{name: "Syncthing4829"},
1398-
`main\.Syncthing4829\.func2 .* \[sync\.RWMutex\.RLock\]`),
1470+
`main\.Syncthing4829\.func2 .* \[sync\.RWMutex\.RLock\]`,
1471+
),
13991472
makeTest(testCase{name: "Syncthing5795"},
14001473
`main\.\(\*rawConnection_syncthing5795\)\.Start\.func1 .* \[chan receive\]`,
1401-
`main\.Syncthing5795\.func2 .* \[chan receive\]`),
1474+
`main\.Syncthing5795\.func2 .* \[chan receive\]`,
1475+
),
14021476
}
14031477

14041478
// Combine all test cases into a single list.

0 commit comments

Comments
 (0)