Merge pull request #14228 from keestux/fix-test-cond-order
tests/cond_order: refactor the test to avoid knowing the thread IDs
This commit is contained in:
commit
28b558ec2d
@ -10,28 +10,31 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
thread_prio = {
|
NUM_THREADS = 5
|
||||||
3: 6,
|
|
||||||
4: 4,
|
|
||||||
5: 0,
|
|
||||||
6: 2,
|
|
||||||
7: 1
|
|
||||||
}
|
|
||||||
first_group_size = 3
|
|
||||||
|
|
||||||
|
|
||||||
def testfunc(child):
|
def testfunc(child):
|
||||||
|
# First collect the thread info how they are created
|
||||||
|
# A number of lines with:
|
||||||
|
# T4 (prio 6): waiting on condition variable now
|
||||||
|
thread_prios = {}
|
||||||
|
for _ in range(NUM_THREADS):
|
||||||
|
child.expect(r"T(\d+) \(prio (\d+)\): waiting on condition variable now")
|
||||||
|
thread_id = int(child.match.group(1))
|
||||||
|
thread_prio = int(child.match.group(2))
|
||||||
|
thread_prios[thread_id] = thread_prio
|
||||||
|
|
||||||
for k in thread_prio.keys():
|
|
||||||
child.expect_exact("T{} (prio {}): waiting on condition variable now"
|
|
||||||
.format(k, thread_prio[k]))
|
|
||||||
count = 0
|
|
||||||
last = -1
|
|
||||||
child.expect_exact("First batch was signaled")
|
child.expect_exact("First batch was signaled")
|
||||||
for _ in range(len(thread_prio)):
|
|
||||||
child.expect(r"T\d+ \(prio (\d+)\): condition variable was signaled now")
|
count = 0
|
||||||
assert(int(child.match.group(1)) > last)
|
last_prio = -1
|
||||||
last = int(child.match.group(1))
|
for _ in range(len(thread_prios)):
|
||||||
|
child.expect(r"T(\d+) \(prio (\d+)\): condition variable was signaled now")
|
||||||
|
thread_id = int(child.match.group(1))
|
||||||
|
thread_prio = int(child.match.group(2))
|
||||||
|
assert thread_prios[thread_id] == thread_prio
|
||||||
|
assert thread_prio > last_prio
|
||||||
|
last_prio = thread_prio
|
||||||
count += 1
|
count += 1
|
||||||
if count == 3:
|
if count == 3:
|
||||||
child.expect_exact("First batch has woken up")
|
child.expect_exact("First batch has woken up")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user