Skip to content

Commit e84ec05

Browse files
Markus GoetzMarkus Goetz
authored andcommitted
Add QHostInfo benchmark
Reviewed-by: Peter Hartmann
1 parent 4100b42 commit e84ec05

File tree

3 files changed

+108
-0
lines changed

3 files changed

+108
-0
lines changed

tests/benchmarks/benchmarks.pro

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ TEMPLATE = subdirs
22
SUBDIRS = containers-associative \
33
containers-sequential \
44
qbytearray \
5+
qhostinfo \
56
qpainter \
67
qtestlib-simple events \
78
qiodevice \

tests/benchmarks/qhostinfo/main.cpp

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
/****************************************************************************
2+
**
3+
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4+
** All rights reserved.
5+
** Contact: Nokia Corporation ([email protected])
6+
**
7+
** This file is part of the test suite of the Qt Toolkit.
8+
**
9+
** $QT_BEGIN_LICENSE:LGPL$
10+
** Commercial Usage
11+
** Licensees holding valid Qt Commercial licenses may use this file in
12+
** accordance with the Qt Commercial License Agreement provided with the
13+
** Software or, alternatively, in accordance with the terms contained in
14+
** a written agreement between you and Nokia.
15+
**
16+
** GNU Lesser General Public License Usage
17+
** Alternatively, this file may be used under the terms of the GNU Lesser
18+
** General Public License version 2.1 as published by the Free Software
19+
** Foundation and appearing in the file LICENSE.LGPL included in the
20+
** packaging of this file. Please review the following information to
21+
** ensure the GNU Lesser General Public License version 2.1 requirements
22+
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23+
**
24+
** In addition, as a special exception, Nokia gives you certain additional
25+
** rights. These rights are described in the Nokia Qt LGPL Exception
26+
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27+
**
28+
** GNU General Public License Usage
29+
** Alternatively, this file may be used under the terms of the GNU
30+
** General Public License version 3.0 as published by the Free Software
31+
** Foundation and appearing in the file LICENSE.GPL included in the
32+
** packaging of this file. Please review the following information to
33+
** ensure the GNU General Public License version 3.0 requirements will be
34+
** met: http://www.gnu.org/copyleft/gpl.html.
35+
**
36+
** If you have questions regarding the use of this file, please contact
37+
** Nokia at [email protected].
38+
** $QT_END_LICENSE$
39+
**
40+
****************************************************************************/
41+
#include <QDebug>
42+
#include <QHostInfo>
43+
#include <QStringList>
44+
#include <QString>
45+
46+
#include <qtest.h>
47+
#include <qtesteventloop.h>
48+
49+
class tst_qhostinfo : public QObject
50+
{
51+
Q_OBJECT
52+
private slots:
53+
void lookupSpeed();
54+
};
55+
56+
class SignalReceiver : public QObject
57+
{
58+
Q_OBJECT
59+
public:
60+
SignalReceiver(int nrc) : receiveCount(0), neededReceiveCount(nrc) {};
61+
int receiveCount;
62+
int neededReceiveCount;
63+
public slots:
64+
void resultsReady(const QHostInfo) {
65+
receiveCount++;
66+
if (receiveCount == neededReceiveCount)
67+
QTestEventLoop::instance().exitLoop();
68+
}
69+
};
70+
71+
void tst_qhostinfo::lookupSpeed()
72+
{
73+
QStringList hostnameList;
74+
hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no"
75+
<< "www.qtcentre.org" << "forum.nokia.com" << "www.forum.nokia.com" << "wiki.forum.nokia.com"
76+
<< "www.nokia.no" << "nokia.de" << "127.0.0.1" << "----";
77+
// also add some duplicates:
78+
hostnameList << "www.nokia.com" << "127.0.0.1" << "www.trolltech.com";
79+
const int COUNT = hostnameList.size();
80+
81+
SignalReceiver receiver(COUNT);
82+
83+
QBENCHMARK {
84+
for (int i = 0; i < hostnameList.size(); i++)
85+
QHostInfo::lookupHost(hostnameList.at(i), &receiver, SLOT(resultsReady(const QHostInfo)));
86+
QTestEventLoop::instance().enterLoop(20);
87+
QVERIFY(!QTestEventLoop::instance().timeout());
88+
}
89+
}
90+
91+
92+
QTEST_MAIN(tst_qhostinfo)
93+
94+
#include "main.moc"
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
load(qttest_p4)
2+
TEMPLATE = app
3+
TARGET = tst_qhostinfo
4+
DEPENDPATH += .
5+
INCLUDEPATH += .
6+
7+
QT -= gui
8+
QT += network
9+
10+
CONFIG += release
11+
12+
# Input
13+
SOURCES += main.cpp

0 commit comments

Comments
 (0)