Add Tests
This commit is contained in:
@@ -4,3 +4,5 @@
|
||||
.*.swp
|
||||
.AppleDouble
|
||||
lib
|
||||
test*
|
||||
!test.cc
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../../Utilities
|
||||
+8
-2
@@ -3,8 +3,12 @@
|
||||
#
|
||||
|
||||
LFLAGS += -lLogging
|
||||
LFLAGS += -L$(ROOTPATH)/lib/$(ARCH)
|
||||
CFLAGS += -I$(ROOTPATH) -I$(ROOTPATH)/include
|
||||
LFLAGS += -L$(ROOTPATH)/Libraries/Logging/lib/$(ARCH)
|
||||
CFLAGS += -I$(ROOTPATH)/Libraries/Logging/include
|
||||
|
||||
LFLAGS += -lUtilities
|
||||
LFLAGS += -L$(ROOTPATH)/Libraries/Utilities/lib/$(ARCH)
|
||||
CFLAGS += -I$(ROOTPATH)/Libraries/Utilities/include
|
||||
|
||||
CFLAGS += -I$(ROOTPATH)/Libraries/asio/include
|
||||
|
||||
@@ -12,4 +16,6 @@ LFLAGS += -lNetwork
|
||||
LFLAGS += -L$(ROOTPATH)/lib/$(ARCH)
|
||||
CFLAGS += -I$(ROOTPATH) -I$(ROOTPATH)/include
|
||||
|
||||
LFLAGS += -pthread
|
||||
|
||||
DEBUGDIR := .debug
|
||||
|
||||
+6
-1
@@ -8,6 +8,11 @@ Network.a.$(ARCH) : $(OBJECTS)
|
||||
Network.a:
|
||||
$(call build_target,$@)
|
||||
|
||||
test.$(ARCH): $(OBJECTS) Test/Test.o.$(ARCH) | Network.a.$(ARCH)
|
||||
$(call build_target_arch,$@,$^)
|
||||
test:
|
||||
$(call build_target,$@)
|
||||
|
||||
.DEFAULT_GOAL := Network.a
|
||||
|
||||
TARGETS += Network.a
|
||||
TARGETS += Network.a test
|
||||
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../Makefile
|
||||
@@ -0,0 +1,24 @@
|
||||
#include "Test.h"
|
||||
#include <Logging.h>
|
||||
|
||||
|
||||
int main(int /*argc*/, char** /*argv*/)
|
||||
{
|
||||
Logging::OpenLog();
|
||||
Logging::SetLogMask(Logging::Severity::Info);
|
||||
|
||||
if (
|
||||
Network::Test::TestMulticastDNS()
|
||||
)
|
||||
{
|
||||
Logging::Log(Logging::Severity::Info, "Pass");
|
||||
Logging::CloseLog();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Logging::Log(Logging::Severity::Info, "Error");
|
||||
Logging::CloseLog();
|
||||
|
||||
return -1;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Network {
|
||||
namespace Test {
|
||||
|
||||
bool TestMulticastDNS();
|
||||
|
||||
} // namespace Test
|
||||
} // namespace Network
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user