You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UdpDnsServer.cpp 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //
  2. // Created by robin on 1/30/18.
  3. //
  4. #include <gtest/gtest.h>
  5. #include <QtCore/QCoreApplication>
  6. #include <QtCore/QTimer>
  7. #include "dns-server/QDnsUdpServer.h"
  8. #include "serverTests.h"
  9. struct DnsUdpServerTestParams
  10. {
  11. QList<const char*> hexData;
  12. };
  13. class DnsUdpServerTest : public ::testing::TestWithParam<DnsUdpServerTestParams>
  14. {
  15. };
  16. TEST_P(DnsUdpServerTest, simple)
  17. {
  18. auto params = GetParam();
  19. QCoreApplication app(m_argc, m_argv);
  20. QTimer timer;
  21. QObject::connect(&timer, &QTimer::timeout, qApp, &QCoreApplication::quit);
  22. timer.start(1000);
  23. QDns::Server::QDnsUdpServer server;
  24. ASSERT_TRUE(server.start(QHostAddress("127.0.0.1"), 5053));
  25. QList<QDns::Base::QDnsPacket> packets;
  26. QObject::connect(&server, &QDns::Server::QDnsServer::onRequest, [&packets](QDns::Server::QDnsServer::OnRequestParams params)
  27. {
  28. packets.append(params.packet);
  29. });
  30. QList<QDns::Base::QDnsPacket> expectedPackets;
  31. QUdpSocket socket;
  32. socket.connectToHost(QHostAddress("127.0.0.1"), 5053);
  33. for (auto hexData : params.hexData)
  34. {
  35. auto data = QByteArray::fromHex(hexData);
  36. socket.write(data.constData(), data.length());
  37. QDns::Base::QDnsPacket packet(data);
  38. if (packet.isValid())
  39. {
  40. expectedPackets.append(packet);
  41. }
  42. }
  43. ASSERT_EQ(app.exec(), 0);
  44. ASSERT_EQ(packets.size(), expectedPackets.size());
  45. }
  46. INSTANTIATE_TEST_CASE_P(DnsUdpServerTestInst,
  47. DnsUdpServerTest,
  48. ::testing::Values(
  49. DnsUdpServerTestParams
  50. {
  51. QList<const char*>()
  52. << "e1bc010000010000000000000266720000010001"
  53. << "00"
  54. << "e1bc010000010000000000000266720000010001"
  55. }
  56. ));