diff options
author | Jo Asplin <jo.asplin@nokia.com> | 2011-09-06 13:46:40 +0200 |
---|---|---|
committer | Jo Asplin <jo.asplin@nokia.com> | 2011-09-09 09:32:17 +0200 |
commit | c59f9ad7768a007ca7a49ea11b16617529e86d52 (patch) | |
tree | d481be2a727f8461a76c2b729fc7e93784a3cff1 /tests/auto/network/socket/qtcpsocket/stressTest | |
parent | 2d41aff1e8557a43268bce631df834bfa79593cf (diff) |
Moved network autotests into new directory structure
Task-number: QTBUG-21223
Change-Id: I55dbf5c42a1c5d938b9e0c9bf7d90457a6c26bbc
Reviewed-on: http://codereview.qt-project.org/4259
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Diffstat (limited to 'tests/auto/network/socket/qtcpsocket/stressTest')
4 files changed, 320 insertions, 0 deletions
diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp b/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp new file mode 100644 index 0000000000..995fc0528c --- /dev/null +++ b/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +// Qt +#include <QByteArray> +#include <QCoreApplication> +#include <QDataStream> +#include <QTimer> + +// Test +#include "Test.h" + +//------------------------------------------------------------------------------ +My4Socket::My4Socket(QObject *parent) + : QTcpSocket(parent), safeShutDown(false) +{ + connect(this, SIGNAL(readyRead()), this, SLOT(read())); + connect(this, SIGNAL(disconnected()), this, SLOT(closed())); +} + +//------------------------------------------------------------------------------ +void My4Socket::read(void) +{ + QDataStream in(this); + + quint32 num, reply; + + while (bytesAvailable()) { + in >> num; + if (num == 42) { + safeShutDown = true; + qDebug("SUCCESS"); + QCoreApplication::instance()->quit(); + return; + } + reply = num + 1; + if (reply == 42) + ++reply; + } + + // Reply with a bigger number + sendTest(reply); +} + +//------------------------------------------------------------------------------ +void My4Socket::closed(void) +{ + if (!safeShutDown) + qDebug("FAILED"); + QCoreApplication::instance()->quit(); +} + +//------------------------------------------------------------------------------ +void My4Socket::sendTest(quint32 num) +{ + QByteArray block; + QDataStream out(&block, QIODevice::WriteOnly); + out << num; + + write(block, block.size()); +} + +//------------------------------------------------------------------------------ +My4Server::My4Server(QObject *parent) + : QTcpServer(parent) +{ + if (listen(QHostAddress::Any, 7700)) + qDebug("qt4server"); + QTimer::singleShot(5000, this, SLOT(stopServer())); +} + +//------------------------------------------------------------------------------ +void My4Server::incomingConnection(int socketId) +{ + m_socket = new My4Socket(this); + m_socket->setSocketDescriptor(socketId); +} + +//------------------------------------------------------------------------------ +void My4Server::stopServer() +{ + if (m_socket) { + qDebug("SUCCESS"); + m_socket->safeShutDown = true; + m_socket->sendTest(42); + } else { + QCoreApplication::instance()->quit(); + } +} + +//------------------------------------------------------------------------------ +Test::Test(Type type) +{ + switch (type) { + case Qt4Client: { + qDebug("qt4client"); + My4Socket *s = new My4Socket(this); + s->connectToHost("localhost", 7700); + s->sendTest(1); + break; + } + case Qt4Server: { + new My4Server(this); + break; + } + default: + break; + } +} diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/Test.h b/tests/auto/network/socket/qtcpsocket/stressTest/Test.h new file mode 100644 index 0000000000..5440e7ffa9 --- /dev/null +++ b/tests/auto/network/socket/qtcpsocket/stressTest/Test.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef TEST_H +#define TEST_H + +//------------------------------------------------------------------------------ + +#include <QTcpServer> +#include <QTcpSocket> + +//------------------------------------------------------------------------------ +class My4Socket : public QTcpSocket +{ + Q_OBJECT +public: + My4Socket(QObject *parent); + + void sendTest(quint32 num); + bool safeShutDown; + +private slots: + void read(); + void closed(); +}; + +//------------------------------------------------------------------------------ +class My4Server : public QTcpServer +{ + Q_OBJECT +public: + My4Server(QObject *parent = 0); + +protected: + void incomingConnection(int socket); + +private slots: + void stopServer(); + +private: + My4Socket *m_socket; +}; + +//------------------------------------------------------------------------------ +class Test : public QObject +{ + Q_OBJECT + +public: + enum Type { + Qt4Client, + Qt4Server, + }; + Test(Type type); +}; + +//------------------------------------------------------------------------------ +#endif // TEST_H diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp b/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp new file mode 100644 index 0000000000..76ce7bd820 --- /dev/null +++ b/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "Test.h" + +#include <QCoreApplication> +#include <QStringList> + +int main(int argc, char **argv) +{ + QCoreApplication app(argc, argv); + + QString arg; + if (app.arguments().size() > 1) + arg = app.arguments().at(1).toLower().trimmed(); + + Test::Type type; + if (arg == QLatin1String("qt4client")) + type = Test::Qt4Client; + else if (arg == QLatin1String("qt4server")) + type = Test::Qt4Server; + else { + qDebug("usage: ./stressTest <qt4client|qt4server>"); + return 0; + } + + Test test(type); + + return app.exec(); +} diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro b/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro new file mode 100644 index 0000000000..f6215f80a0 --- /dev/null +++ b/tests/auto/network/socket/qtcpsocket/stressTest/stressTest.pro @@ -0,0 +1,12 @@ +HEADERS += Test.h +SOURCES += main.cpp Test.cpp +QT += network + +CONFIG -= app_bundle +CONFIG += console +DESTDIR = ./ +MOC_DIR = .moc/ +TMP_DIR = .tmp/ + +symbian: TARGET.CAPABILITY = NetworkServices + |