make tests work again

This commit is contained in:
Michael Zanetti 2017-09-24 21:59:43 +02:00
parent 4b3518661f
commit 57ba2b25c2
5 changed files with 38 additions and 18 deletions

View File

@ -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)

View File

@ -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:

View File

@ -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;
} }

View File

@ -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);

View File

@ -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;