Add Tests
This commit is contained in:
@@ -4,3 +4,5 @@
|
|||||||
.*.swp
|
.*.swp
|
||||||
.AppleDouble
|
.AppleDouble
|
||||||
lib
|
lib
|
||||||
|
test*
|
||||||
|
!test.cc
|
||||||
|
|||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
../../Utilities
|
||||||
+8
-2
@@ -3,8 +3,12 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
LFLAGS += -lLogging
|
LFLAGS += -lLogging
|
||||||
LFLAGS += -L$(ROOTPATH)/lib/$(ARCH)
|
LFLAGS += -L$(ROOTPATH)/Libraries/Logging/lib/$(ARCH)
|
||||||
CFLAGS += -I$(ROOTPATH) -I$(ROOTPATH)/include
|
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
|
CFLAGS += -I$(ROOTPATH)/Libraries/asio/include
|
||||||
|
|
||||||
@@ -12,4 +16,6 @@ LFLAGS += -lNetwork
|
|||||||
LFLAGS += -L$(ROOTPATH)/lib/$(ARCH)
|
LFLAGS += -L$(ROOTPATH)/lib/$(ARCH)
|
||||||
CFLAGS += -I$(ROOTPATH) -I$(ROOTPATH)/include
|
CFLAGS += -I$(ROOTPATH) -I$(ROOTPATH)/include
|
||||||
|
|
||||||
|
LFLAGS += -pthread
|
||||||
|
|
||||||
DEBUGDIR := .debug
|
DEBUGDIR := .debug
|
||||||
|
|||||||
+6
-1
@@ -8,6 +8,11 @@ Network.a.$(ARCH) : $(OBJECTS)
|
|||||||
Network.a:
|
Network.a:
|
||||||
$(call build_target,$@)
|
$(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
|
.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