Skip to content

Commit

Permalink
Merge pull request #14228 from keestux/fix-test-cond-order
Browse files Browse the repository at this point in the history
tests/cond_order: refactor the test to avoid knowing the thread IDs
  • Loading branch information
aabadie authored Jun 9, 2020
2 parents 8fb27b0 + 765c216 commit 28b558e
Showing 1 changed file with 20 additions and 17 deletions.
37 changes: 20 additions & 17 deletions tests/cond_order/tests/01-run.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,31 @@
import os
import sys

thread_prio = {
3: 6,
4: 4,
5: 0,
6: 2,
7: 1
}
first_group_size = 3
NUM_THREADS = 5


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")
for _ in range(len(thread_prio)):
child.expect(r"T\d+ \(prio (\d+)\): condition variable was signaled now")
assert(int(child.match.group(1)) > last)
last = int(child.match.group(1))

count = 0
last_prio = -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
if count == 3:
child.expect_exact("First batch has woken up")
Expand Down

0 comments on commit 28b558e

Please sign in to comment.