Stabilize QFile::unixPipe/socketPair tests

We observe failures in CI on QNX because the measured timeout is ~995ms
rather than the expected 1000ms. Start the timer before the thread
starts to guarantee that at least as much time elapses as the thread
waits before writing the second byte to the pipe.

Otherwise, the thread might be sleeping already when the timer starts,
and then we can't rely on any measurements.

Pick-to: 6.6 6.5
Change-Id: I6072569a987f5e952b0953e0e394a223f891fd25
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
This commit is contained in:
Volker Hilsheimer 2023-06-07 17:14:01 +02:00
parent 65b0bc0eed
commit 30e5ff3ff2

View File

@ -2632,6 +2632,9 @@ static void unixPipe_helper(int pipes[2])
c = 2;
qt_safe_write(fd, &c, 1);
}));
QElapsedTimer timer;
timer.start();
thr->start();
// synchronize with the thread having started
@ -2640,8 +2643,6 @@ static void unixPipe_helper(int pipes[2])
QCOMPARE(c, '\1');
QFETCH(bool, useStdio);
QElapsedTimer timer;
timer.start();
QFile f;
if (useStdio) {
FILE *fh = fdopen(pipes[0], "rb");
@ -2654,8 +2655,8 @@ static void unixPipe_helper(int pipes[2])
c = 0;
QCOMPARE(f.read(&c, 1), 1);
QCOMPARE(c, '\2');
int elapsed = timer.elapsed();
QVERIFY2(elapsed >= Timeout, QByteArray::number(elapsed));
const int elapsed = timer.elapsed();
QCOMPARE_GE(elapsed, Timeout);
thr->wait();
}