mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-06 09:15:23 +08:00
qt 6.5.1 original
This commit is contained in:
@ -0,0 +1,16 @@
|
||||
# Copyright (C) 2022 The Qt Company Ltd.
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#####################################################################
|
||||
## stressTest Binary:
|
||||
#####################################################################
|
||||
|
||||
qt_internal_add_executable(stressTest
|
||||
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/"
|
||||
SOURCES
|
||||
Test.cpp Test.h
|
||||
main.cpp
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
Qt::Test
|
||||
)
|
109
tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
Normal file
109
tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
Normal file
@ -0,0 +1,109 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
// 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 = 0;
|
||||
quint32 reply = 0;
|
||||
|
||||
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(qintptr 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;
|
||||
}
|
||||
}
|
57
tests/auto/network/socket/qtcpsocket/stressTest/Test.h
Normal file
57
tests/auto/network/socket/qtcpsocket/stressTest/Test.h
Normal file
@ -0,0 +1,57 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
#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 = nullptr);
|
||||
|
||||
protected:
|
||||
void incomingConnection(qintptr socket) override;
|
||||
|
||||
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
|
29
tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
Normal file
29
tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
#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();
|
||||
}
|
Reference in New Issue
Block a user