[Development] Splitting Qt Network out of qtbase (was: QtBase network failures)
thiago.macieira at intel.com
Sat Jun 25 18:33:42 CEST 2022
On Saturday, 25 June 2022 01:57:24 PDT Volker Hilsheimer wrote:
> Perhaps this is a good time to discuss whether we should move Qt Network
> into its own repository. This would make qtbase integrations less exposed
> to network failure, which - even without certificates expiring - are a fact
> of life. And qtbase integrations already suffer from plenty of flakiness.
> And that an operational issue might require patches to merge and to get
> cherry picked, which might take several attempts, each taking several
> hours, just amplifies that problem further.
> Conceptually, we have made that kind of change before (when taking Qt
> Positioning out of the qtlocation repo). But there are some challenges.
> One challenge is that several of our Qt Core tests are using networking
> features (tests outside of tests/auto/network that include
> network-settings.h: tst_qdir, tst_qdiriterator, tst_qfile, tst_qfileinfo,
> tst_qiodevice, tst_qtextstream, tst_qfiledialog2). Without having looked
> into the details, I’d assume that we might not need an actual server to
> test many of those codepaths (or that those tests can be moved into a
> qtnetwork repo, ie. QTextStream::stillOpenWhenAtEnd doesn’t seem to test
> QTextStream, which never closes a QIODevice).
Personally, I'd prefer if those Core tests ddn't use Networking. The majority
of them aren't actually using QtNetwork, they are the Windows portion that
deals with the SMB server provided by the Network Test Server. So the issue
isn't that of QtNetwork, but of the NTS and would remain anyway. That would
leave a few tests like QTextStream that use QTcpSocket for some particular
QIODevice sequential condition, but which could be replaced with an identical
condition with a different class, like QProcess.
But what's the gain? This looks like a lot of effort to me, particularly if we
don't move the UNC path tests in the file classes.
Not looking scientifically at it, but from memory, the network test server and
the networking tests haven't been the majority of spurious failures in the CI.
They're a big contributor, but not the majority. From a random sampling of
test failures in the past week, I see:
* general CI failures - "failed to acquire machine" 
* sccache network failures 
* licensing issues with the INTEGRITY compiler
* timeouts 
* weird unexplained failures like  or 
* flaky tests on timing (QMutex, QDeadlineTimer, etc.)
* QFSModel on macOS on ARM 
* a std::filesystem unexplored issue on Windows 
* some widget issues like  or 
And yes, network test failures in
But they are nowhere near the majority, even the plurality. The CI general
failures, sccache failures and timeouts appear to be far more common and
deserve more attention.
Even among pure test failures the network ones don't appear to be the largest
contributor. So I have to ask: is the effort worth the benefit?
Thiago Macieira - thiago.macieira (AT) intel.com
Cloud Software Architect - Intel DCAI Cloud Engineering
More information about the Development