123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- //
- // Created by robin on 1/30/18.
- //
-
-
- #include <gtest/gtest.h>
- #include <QtCore/QCoreApplication>
- #include <QtCore/QTimer>
- #include <QtNetwork/QTcpSocket>
-
- #include "dns-server/QDnsTcpServer.h"
-
- #include "serverTests.h"
-
- struct DnsTcpServerTestParams
- {
- QList<const char*> hexData;
- };
-
- class DnsTcpServerTest : public ::testing::TestWithParam<DnsTcpServerTestParams>
- {
- };
-
- TEST_P(DnsTcpServerTest, simple)
- {
- auto params = GetParam();
- QCoreApplication app(m_argc, m_argv);
-
- QTimer timer;
- QObject::connect(&timer, &QTimer::timeout, qApp, &QCoreApplication::quit);
- timer.start(1000);
-
- QDns::Server::QDnsTcpServer server;
- ASSERT_TRUE(server.start(QHostAddress("127.0.0.1"), 5053));
- QList<QDns::Base::QDnsPacket> packets;
- QObject::connect(&server, &QDns::Server::QDnsServer::onRequest, [&packets](QDns::Server::QDnsServer::OnRequestParams params)
- {
- packets.append(params.query);
- });
- QList<QDns::Base::QDnsPacket> expectedPackets;
- QTcpSocket socket;
- socket.connectToHost(QHostAddress("127.0.0.1"), 5053);
- socket.waitForConnected();
- for (auto hexData : params.hexData)
- {
- auto data = QByteArray::fromHex(hexData);
- QByteArray size;
- QDataStream dataStream(&size, QIODevice::WriteOnly);
- dataStream << (quint16) data.size();
- socket.write(size.constData(), size.size());
- socket.write(data.constData(), data.length());
- QDns::Base::QDnsPacket packet(data);
- if (packet.isValid())
- {
- expectedPackets.append(packet);
- }
- }
- socket.disconnectFromHost();
- socket.waitForDisconnected();
-
- ASSERT_EQ(app.exec(), 0);
- ASSERT_EQ(packets.size(), expectedPackets.size());
- }
-
- INSTANTIATE_TEST_CASE_P(DnsTcpServerTestInst,
- DnsTcpServerTest,
- ::testing::Values(
- DnsTcpServerTestParams
- {
- QList<const char*>()
- << "e1bc010000010000000000000266720000010001"
- << "00"
- << "e1bc010000010000000000000266720000010001"
- }
- ));
|