summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2023-05-11 10:17:44 -0700
committerThiago Macieira <thiago.macieira@intel.com>2023-05-11 17:05:26 -0700
commitaf9fa21a70c485accd152995f47cfafb0d0341d4 (patch)
treeb4fcc825e241dd1f0235962df8bb3f808446ad27 /tests
parent9f7b341aae0bcab47ed51a5238fde5be37edc6b3 (diff)
downloadqtbase-af9fa21a70c485accd152995f47cfafb0d0341d4.tar.gz
tst_QDnsLookup: don't fail if the server refused to answer
This happens often for me for ANY queries via Dnsmasq (home router) or via whatever the corporate DNS servers are in the office. Pick-to: 6.5 Change-Id: I3e3bfef633af4130a03afffd175e2656ae5e2c3e Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp68
1 files changed, 34 insertions, 34 deletions
diff --git a/tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp b/tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp
index 1b0829bdf0..1d0da9dbe3 100644
--- a/tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp
+++ b/tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp
@@ -19,6 +19,7 @@ class tst_QDnsLookup: public QObject
const QString normalDomain = u".test.qt-project.org"_s;
const QString idnDomain = u".alqualondë.test.qt-project.org"_s;
bool usingIdnDomain = false;
+ bool dnsServersMustWork = false;
QString domainName(const QString &input);
QString domainNameList(const QString &input);
@@ -39,6 +40,8 @@ private slots:
void tst_QDnsLookup::initTestCase()
{
+ if (qgetenv("QTEST_ENVIRONMENT") == "ci")
+ dnsServersMustWork = true;
}
QString tst_QDnsLookup::domainName(const QString &input)
@@ -146,38 +149,6 @@ void tst_QDnsLookup::lookup_data()
QTest::newRow("txt-multi-multirr") << int(QDnsLookup::TXT) << "txt-multi-multirr" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "" << "Hello;World";
}
-static QByteArray msgDnsLookup(QDnsLookup::Error actualError,
- int expectedError,
- const QString &domain,
- const QString &cname,
- const QString &host,
- const QString &srv,
- const QString &mx,
- const QString &ns,
- const QString &ptr,
- const QString &errorString)
-{
- QString result;
- QTextStream str(&result);
- str << "Actual error: " << actualError;
- if (!errorString.isEmpty())
- str << " (" << errorString << ')';
- str << ", expected: " << expectedError;
- str << ", domain: " << domain;
- if (!cname.isEmpty())
- str << ", cname: " << cname;
- str << ", host: " << host;
- if (!srv.isEmpty())
- str << " server: " << srv;
- if (!mx.isEmpty())
- str << " mx: " << mx;
- if (!ns.isEmpty())
- str << " ns: " << ns;
- if (!ptr.isEmpty())
- str << " ptr: " << ptr;
- return result.toLocal8Bit();
-}
-
void tst_QDnsLookup::lookup()
{
QFETCH(int, type);
@@ -208,8 +179,37 @@ void tst_QDnsLookup::lookup()
lookup.lookup();
QTRY_VERIFY_WITH_TIMEOUT(lookup.isFinished(), Timeout);
- QVERIFY2(int(lookup.error()) == error,
- msgDnsLookup(lookup.error(), error, domain, cname, host, srv, mx, ns, ptr, lookup.errorString()));
+ auto extraErrorMsg = [&] () {
+ QString result;
+ QTextStream str(&result);
+ str << "Actual error: " << lookup.error();
+ if (QString errorString = lookup.errorString(); !errorString.isEmpty())
+ str << " (" << errorString << ')';
+ str << ", expected: " << error;
+ str << ", domain: " << domain;
+ if (!cname.isEmpty())
+ str << ", cname: " << cname;
+ str << ", host: " << host;
+ if (!srv.isEmpty())
+ str << " server: " << srv;
+ if (!mx.isEmpty())
+ str << " mx: " << mx;
+ if (!ns.isEmpty())
+ str << " ns: " << ns;
+ if (!ptr.isEmpty())
+ str << " ptr: " << ptr;
+ return result.toLocal8Bit();
+ };
+
+ if (!dnsServersMustWork && (lookup.error() == QDnsLookup::ServerFailureError
+ || lookup.error() == QDnsLookup::ServerRefusedError)) {
+ // It's not a QDnsLookup problem if the server refuses to answer the query.
+ // This happens for queries of type ANY through Dnsmasq, for example.
+ qWarning("Server refused or was unable to answer query; %s", extraErrorMsg().constData());
+ return;
+ }
+
+ QVERIFY2(int(lookup.error()) == error, extraErrorMsg());
if (error == QDnsLookup::NoError)
QVERIFY(lookup.errorString().isEmpty());
QCOMPARE(int(lookup.type()), type);