Add Tests

This commit is contained in:
2020-06-10 11:50:22 +02:00
parent ea92eb7b2b
commit b61fefd11f
8 changed files with 120 additions and 3 deletions
+71
View File
@@ -0,0 +1,71 @@
#include "Dns/MulticastDnsClient.h"
#include <asio.hpp>
#include <Logging.h>
#include <functional>
#include <unistd.h>
namespace Network {
namespace Test {
class Test
{
public:
Test() :
m_client(std::bind(&Test::Callback, this, std::placeholders::_1))
{
Network::Dns::Query query;
query.SetType(Network::Dns::QueryType::A);
query.SetClass(Network::Dns::QueryClass::IN);
query.SetName(Network::Dns::Name("_http", "_tcp", "local"));
m_client.Query(query);
}
void Callback(const std::vector<Network::Dns::ResourceRecord> records)
{
Logging::Log(Logging::Severity::Info, "Callback");
for(auto& record : records)
{
if(record.GetType() == Network::Dns::Type::A)
{
std::vector<uint8_t> data = record.GetResourceData();
std::stringstream ss;
ss << static_cast<int>(data.at(0)) << "." << static_cast<int>(data.at(1)) << "." << static_cast<int>(data.at(2)) << "." << static_cast<int>(data.at(3));
asio::ip::address_v4 address = asio::ip::address_v4::from_string(ss.str());
if (std::find(m_addresses.begin(), m_addresses.end(), address) == m_addresses.end())
m_addresses.push_back(address);
}
}
}
void Print()
{
std::stringstream ss;
ss << m_addresses.size() << " IPs" << std::endl;
for (auto& address : m_addresses)
ss << " " << address.to_string() << std::endl;
Logging::Log(Logging::Severity::Info, ss.str());
}
private:
Network::Dns::MulticastDnsClient m_client;
std::vector<asio::ip::address_v4> m_addresses;
};
bool TestMulticastDNS()
{
Test test;
test.Print();
sleep(4);
test.Print();
return true;
}
} // namespace Test
} // namespace Network