make tests work again
This commit is contained in:
parent
4b3518661f
commit
57ba2b25c2
@ -218,11 +218,11 @@ void ServerManager::webServerConfigurationChanged(const QString &id)
|
|||||||
server->stopServer();
|
server->stopServer();
|
||||||
server->reconfigureServer(config);
|
server->reconfigureServer(config);
|
||||||
} else {
|
} else {
|
||||||
qDebug(dcConnection) << "Received a Web Server config change event but don't have a Web Server instance for it.";
|
qDebug(dcConnection) << "Received a Web Server config change event but don't have a Web Server instance for it. Creating new WebServer instance on" << config.address.toString() << config.port << "(SSL:" << config.sslEnabled << ")";
|
||||||
server = new WebServer(config, m_sslConfiguration, this);
|
server = new WebServer(config, m_sslConfiguration, this);
|
||||||
|
m_restServer->registerWebserver(server);
|
||||||
m_webServers.insert(config.id, server);
|
m_webServers.insert(config.id, server);
|
||||||
}
|
}
|
||||||
server->startServer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerManager::webServerConfigurationRemoved(const QString &id)
|
void ServerManager::webServerConfigurationRemoved(const QString &id)
|
||||||
|
|||||||
@ -47,12 +47,8 @@ public:
|
|||||||
JsonRPCServer *jsonServer() const;
|
JsonRPCServer *jsonServer() const;
|
||||||
RestServer *restServer() const;
|
RestServer *restServer() const;
|
||||||
|
|
||||||
// Transports
|
|
||||||
WebServer* webServer() const;
|
|
||||||
WebSocketServer* webSocketServer() const;
|
|
||||||
BluetoothServer* bluetoothServer() const;
|
BluetoothServer* bluetoothServer() const;
|
||||||
|
|
||||||
TcpServer *tcpServer() const;
|
|
||||||
MockTcpServer *mockTcpServer() const;
|
MockTcpServer *mockTcpServer() const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|||||||
@ -217,7 +217,7 @@ void WebServer::incomingConnection(qintptr socketDescriptor)
|
|||||||
|
|
||||||
QSslSocket *socket = new QSslSocket();
|
QSslSocket *socket = new QSslSocket();
|
||||||
if (!socket->setSocketDescriptor(socketDescriptor)) {
|
if (!socket->setSocketDescriptor(socketDescriptor)) {
|
||||||
qCWarning(dcConnection) << "Could not set socket descriptor. Rejecting connection.";
|
qCWarning(dcWebServer()) << "Could not set socket descriptor. Rejecting connection.";
|
||||||
socket->close();
|
socket->close();
|
||||||
delete socket;
|
delete socket;
|
||||||
return;
|
return;
|
||||||
@ -228,7 +228,7 @@ void WebServer::incomingConnection(qintptr socketDescriptor)
|
|||||||
foreach (WebServerClient *client, m_webServerClients) {
|
foreach (WebServerClient *client, m_webServerClients) {
|
||||||
if (client->address() == socket->peerAddress()) {
|
if (client->address() == socket->peerAddress()) {
|
||||||
if (client->connections().count() >= 50) {
|
if (client->connections().count() >= 50) {
|
||||||
qCWarning(dcConnection) << QString("Maximum connections for this client reached: rejecting connection from client %1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort());
|
qCWarning(dcWebServer()) << QString("Maximum connections for this client reached: rejecting connection from client %1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort());
|
||||||
socket->close();
|
socket->close();
|
||||||
delete socket;
|
delete socket;
|
||||||
return;
|
return;
|
||||||
@ -249,7 +249,7 @@ void WebServer::incomingConnection(qintptr socketDescriptor)
|
|||||||
QUuid clientId = QUuid::createUuid();
|
QUuid clientId = QUuid::createUuid();
|
||||||
m_clientList.insert(clientId, socket);
|
m_clientList.insert(clientId, socket);
|
||||||
|
|
||||||
qCDebug(dcConnection) << QString("Webserver client %1:%2 connected").arg(socket->peerAddress().toString()).arg(socket->peerPort());
|
qCDebug(dcWebServer()) << QString("Webserver client %1:%2 connected").arg(socket->peerAddress().toString()).arg(socket->peerPort());
|
||||||
|
|
||||||
if (m_configuration.sslEnabled) {
|
if (m_configuration.sslEnabled) {
|
||||||
// configure client connection
|
// configure client connection
|
||||||
@ -448,7 +448,7 @@ void WebServer::onDisconnected()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qCDebug(dcConnection) << QString("Webserver client disonnected %1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort());
|
qCDebug(dcWebServer) << QString("Webserver client disonnected %1:%2").arg(socket->peerAddress().toString()).arg(socket->peerPort());
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
QUuid clientId = m_clientList.key(socket);
|
QUuid clientId = m_clientList.key(socket);
|
||||||
@ -462,7 +462,7 @@ void WebServer::onDisconnected()
|
|||||||
void WebServer::onEncrypted()
|
void WebServer::onEncrypted()
|
||||||
{
|
{
|
||||||
QSslSocket* socket = static_cast<QSslSocket *>(sender());
|
QSslSocket* socket = static_cast<QSslSocket *>(sender());
|
||||||
qCDebug(dcConnection) << QString("Encrypted connection %1:%2 successfully established.").arg(socket->peerAddress().toString()).arg(socket->peerPort());
|
qCDebug(dcWebServer()) << QString("Encrypted connection %1:%2 successfully established.").arg(socket->peerAddress().toString()).arg(socket->peerPort());
|
||||||
connect(socket, SIGNAL(readyRead()), this, SLOT(readClient()));
|
connect(socket, SIGNAL(readyRead()), this, SLOT(readClient()));
|
||||||
connect(socket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));
|
connect(socket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));
|
||||||
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError)));
|
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError)));
|
||||||
@ -474,7 +474,7 @@ void WebServer::onError(QAbstractSocket::SocketError error)
|
|||||||
{
|
{
|
||||||
Q_UNUSED(error)
|
Q_UNUSED(error)
|
||||||
QSslSocket* socket = static_cast<QSslSocket *>(sender());
|
QSslSocket* socket = static_cast<QSslSocket *>(sender());
|
||||||
qCWarning(dcConnection) << QString("Client socket error %1:%2 ->").arg(socket->peerAddress().toString()).arg(socket->peerPort()) << socket->errorString();
|
qCWarning(dcWebServer()) << QString("Client socket error %1:%2 ->").arg(socket->peerAddress().toString()).arg(socket->peerPort()) << socket->errorString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebServer::onAvahiServiceStateChanged(const QtAvahiService::QtAvahiServiceState &state)
|
void WebServer::onAvahiServiceStateChanged(const QtAvahiService::QtAvahiServiceState &state)
|
||||||
@ -504,15 +504,15 @@ void WebServer::reconfigureServer(const WebServerConfiguration &config)
|
|||||||
bool WebServer::startServer()
|
bool WebServer::startServer()
|
||||||
{
|
{
|
||||||
if (!listen(m_configuration.address, m_configuration.port)) {
|
if (!listen(m_configuration.address, m_configuration.port)) {
|
||||||
qCWarning(dcConnection) << "Webserver could not listen on" << m_configuration.address.toString() << m_configuration.port;
|
qCWarning(dcWebServer()) << "Webserver could not listen on" << m_configuration.address.toString() << m_configuration.port << errorString();
|
||||||
m_enabled = false;
|
m_enabled = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_configuration.sslEnabled) {
|
if (m_configuration.sslEnabled) {
|
||||||
qCDebug(dcConnection) << "Started webserver on" << QString("https://%1:%2").arg(m_configuration.address.toString()).arg(m_configuration.port);
|
qCDebug(dcWebServer()) << "Started webserver on" << QString("https://%1:%2").arg(m_configuration.address.toString()).arg(m_configuration.port);
|
||||||
} else {
|
} else {
|
||||||
qCDebug(dcConnection) << "Started webserver on" << QString("http://%1:%2").arg(m_configuration.address.toString()).arg(m_configuration.port);
|
qCDebug(dcWebServer()) << "Started webserver on" << QString("http://%1:%2").arg(m_configuration.address.toString()).arg(m_configuration.port);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: reversed order
|
// Note: reversed order
|
||||||
@ -539,7 +539,7 @@ bool WebServer::stopServer()
|
|||||||
|
|
||||||
close();
|
close();
|
||||||
m_enabled = false;
|
m_enabled = false;
|
||||||
qCDebug(dcConnection) << "Webserver closed.";
|
qCDebug(dcWebServer()) << "Webserver closed.";
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -128,6 +128,7 @@ GuhTestBase::GuhTestBase(QObject *parent) :
|
|||||||
|
|
||||||
void GuhTestBase::initTestCase()
|
void GuhTestBase::initTestCase()
|
||||||
{
|
{
|
||||||
|
qDebug() << "GuhTestBase starting.";
|
||||||
// If testcase asserts cleanup won't do. Lets clear any previous test run settings leftovers
|
// If testcase asserts cleanup won't do. Lets clear any previous test run settings leftovers
|
||||||
GuhSettings rulesSettings(GuhSettings::SettingsRoleRules);
|
GuhSettings rulesSettings(GuhSettings::SettingsRoleRules);
|
||||||
rulesSettings.clear();
|
rulesSettings.clear();
|
||||||
@ -143,7 +144,7 @@ void GuhTestBase::initTestCase()
|
|||||||
s_loggingFilters.insert("DeviceManager", true);
|
s_loggingFilters.insert("DeviceManager", true);
|
||||||
s_loggingFilters.insert("RuleEngine", true);
|
s_loggingFilters.insert("RuleEngine", true);
|
||||||
s_loggingFilters.insert("Hardware", false);
|
s_loggingFilters.insert("Hardware", false);
|
||||||
s_loggingFilters.insert("Connection", false);
|
s_loggingFilters.insert("Connection", true);
|
||||||
s_loggingFilters.insert("LogEngine", false);
|
s_loggingFilters.insert("LogEngine", false);
|
||||||
s_loggingFilters.insert("TcpServer", false);
|
s_loggingFilters.insert("TcpServer", false);
|
||||||
s_loggingFilters.insert("WebServer", false);
|
s_loggingFilters.insert("WebServer", false);
|
||||||
|
|||||||
@ -43,6 +43,8 @@ class TestWebserver: public GuhTestBase
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void initTestCase();
|
||||||
|
|
||||||
void coverageCalls();
|
void coverageCalls();
|
||||||
|
|
||||||
void httpVersion();
|
void httpVersion();
|
||||||
@ -74,6 +76,26 @@ public slots:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void TestWebserver::initTestCase()
|
||||||
|
{
|
||||||
|
GuhTestBase::initTestCase();
|
||||||
|
qDebug() << "TestWebserver starting";
|
||||||
|
|
||||||
|
foreach (const WebServerConfiguration &config, GuhCore::instance()->configuration()->webServerConfigurations()) {
|
||||||
|
if (config.port == 3333 && (config.address == QHostAddress("127.0.0.1") || config.address == QHostAddress("0.0.0.0"))) {
|
||||||
|
qDebug() << "Already have a webserver listening on 127.0.0.1:3333";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
qDebug() << "Creating new webserver instance on 127.0.0.1:3333";
|
||||||
|
WebServerConfiguration config;
|
||||||
|
config.address = QHostAddress("0.0.0.0");
|
||||||
|
config.port = 3333;
|
||||||
|
config.sslEnabled = true;
|
||||||
|
GuhCore::instance()->configuration()->setWebServerConfiguration(config);
|
||||||
|
}
|
||||||
|
|
||||||
void TestWebserver::coverageCalls()
|
void TestWebserver::coverageCalls()
|
||||||
{
|
{
|
||||||
HttpReply *reply = new HttpReply(this);
|
HttpReply *reply = new HttpReply(this);
|
||||||
@ -91,7 +113,7 @@ void TestWebserver::httpVersion()
|
|||||||
socket->connectToHostEncrypted("127.0.0.1", 3333);
|
socket->connectToHostEncrypted("127.0.0.1", 3333);
|
||||||
QSignalSpy encryptedSpy(socket, SIGNAL(encrypted()));
|
QSignalSpy encryptedSpy(socket, SIGNAL(encrypted()));
|
||||||
bool encrypted = encryptedSpy.wait();
|
bool encrypted = encryptedSpy.wait();
|
||||||
QVERIFY2(encrypted, "could not created encrypte webserver connection.");
|
QVERIFY2(encrypted, "could not created encrypted webserver connection.");
|
||||||
|
|
||||||
QSignalSpy clientSpy(socket, SIGNAL(readyRead()));
|
QSignalSpy clientSpy(socket, SIGNAL(readyRead()));
|
||||||
|
|
||||||
@ -335,6 +357,7 @@ void TestWebserver::getOptions()
|
|||||||
QNetworkReply *reply = nam.sendCustomRequest(request, "OPTIONS");
|
QNetworkReply *reply = nam.sendCustomRequest(request, "OPTIONS");
|
||||||
|
|
||||||
clientSpy.wait();
|
clientSpy.wait();
|
||||||
|
qDebug() << "reply:" << reply->isFinished();
|
||||||
QCOMPARE(clientSpy.count(), 1);
|
QCOMPARE(clientSpy.count(), 1);
|
||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user