Skip to content

Commit c4de988

Browse files
author
dave
committed
#25 Locking tests improved
1 parent cffb7d6 commit c4de988

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

tests/taskMgrTests/reentrantLockingTests.cpp

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ bool task3RunningPtrCheck = false;
1616
bool allGood = false;
1717

1818
int runCount1, runCount2, runCount3;
19+
int captureCount2, captureCount3;
1920

2021
test(testGettingRunningTaskAlwaysCorrect) {
2122
task1RunningPtrCheck = false;
@@ -44,7 +45,10 @@ test(testGettingRunningTaskAlwaysCorrect) {
4445

4546
serdebugF("Scheduled running task check");
4647

48+
unsigned long then = millis();
4749
taskManager.yieldForMicros(millisToMicros(100));
50+
int diff = int(millis() - then);
51+
assertMore(diff, 90);
4852

4953
serdebugF("Finished running task check, asserting.");
5054

@@ -56,43 +60,44 @@ test(testGettingRunningTaskAlwaysCorrect) {
5660

5761
test(testReentrantLock) {
5862
taskManager.reset();
59-
task1RunningPtrCheck = false;
60-
task2RunningPtrCheck = false;
61-
task3RunningPtrCheck = false;
63+
6264
allGood = true;
6365
runCount1 = runCount2 = runCount3 = 0;
6466

65-
runTaskId1 = taskManager.scheduleFixedRate(1, [] {
66-
TaskMgrLock locker(testLock);
67-
68-
task1RunningPtrCheck = true;
69-
task2RunningPtrCheck = false;
70-
task3RunningPtrCheck = false;
71-
taskManager.yieldForMicros(1000);
72-
if(task2RunningPtrCheck || task3RunningPtrCheck) {
73-
allGood = false;
67+
runTaskId1 = taskManager.scheduleFixedRate(10, [] {
68+
if(testLock.tryLock()) {
69+
if(captureCount3 != runCount3 || captureCount2 != runCount2) {
70+
allGood = false;
71+
}
72+
testLock.unlock();
73+
}
74+
else {
75+
testLock.lock();
76+
captureCount2 = runCount2;
77+
captureCount3 = runCount3;
7478
}
7579
runCount1++;
76-
});
80+
}, TIME_MILLIS);
7781

7882
runTaskId2 = taskManager.scheduleFixedRate(100, [] {
7983
TaskMgrLock locker(testLock);
80-
task2RunningPtrCheck = true;
8184
runCount2++;
8285
}, TIME_MICROS);
8386

8487
taskManager.scheduleFixedRate(50, [] {
8588
TaskMgrLock locker(testLock);
86-
task3RunningPtrCheck = true;
8789
runCount3++;
8890
}, TIME_MICROS);
8991

90-
taskManager.yieldForMicros(millisToMicros(1000));
92+
while(runCount1 < 10 || testLock.isLocked()) {
93+
taskManager.yieldForMicros(100);
94+
}
9195

9296
assertTrue(allGood);
9397
assertTrue(runTaskId1 != TASKMGR_INVALIDID);
9498
assertTrue(runTaskId2 != TASKMGR_INVALIDID);
95-
assertMore(runCount1, 10000);
96-
assertMore(runCount2, 10000);
97-
assertMore(runCount3, 10000);
99+
assertMore(runCount1, 9);
100+
assertLess(runCount1, 12);
101+
assertMore(runCount2, 200);
102+
assertMore(runCount3, 200);
98103
}

0 commit comments

Comments
 (0)