Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion conanfile.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
[requires]
spdlog/1.8.2
sigslot/1.2.0
catch2/2.13.4
docopt.cpp/0.6.3
nlohmann_json/3.9.1
cpp-httplib/0.8.0
corrade/2020.06
pcapplusplus/20.08@bincrafters/stable

[build_requires]
benchmark/1.5.2
catch2/2.13.4

[options]
corrade:with_pluginmanager=True

Expand Down
14 changes: 1 addition & 13 deletions src/handlers/dns/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,4 @@ target_link_libraries(VisorHandlerDns

set(VISOR_STATIC_PLUGINS ${VISOR_STATIC_PLUGINS} Visor::Handler::Dns PARENT_SCOPE)

## TEST SUITE
add_executable(unit-tests-handler-dns
tests/main.cpp
tests/test_dns.cpp
tests/test_dns_layer.cpp
)

target_link_libraries(unit-tests-handler-dns PRIVATE Visor::Handler::Dns)

add_test(NAME unit-tests-handler-dns
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/tests
COMMAND unit-tests-handler-dns
)
add_subdirectory(tests)
23 changes: 23 additions & 0 deletions src/handlers/dns/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

# Unit
add_executable(unit-tests-handler-dns
main.cpp
test_dns.cpp
test_dns_layer.cpp
)

target_link_libraries(unit-tests-handler-dns PRIVATE Visor::Handler::Dns)

add_test(NAME unit-tests-handler-dns
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/tests
COMMAND unit-tests-handler-dns
)

# Benchmark
add_executable(benchmark-handler-dns
benchmark_dns.cpp
)

target_link_libraries(benchmark-handler-dns PRIVATE
Visor::Handler::Dns
${CONAN_LIBS_BENCHMARK})
81 changes: 81 additions & 0 deletions src/handlers/dns/tests/benchmark_dns.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

#include "../dns.h"
#include <benchmark/benchmark.h>
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wold-style-cast"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma clang diagnostic ignored "-Wc99-extensions"
#pragma GCC diagnostic ignored "-Wpedantic"
#include <IPv4Layer.h>
#include <PacketUtils.h>
#include <PcapFileDevice.h>
#pragma GCC diagnostic pop

using namespace visor::handler::dns;

static void BM_aggregateDomain(benchmark::State &state)
{
AggDomainResult result;
std::string domain{"biz.foo.bar.com"};
for (auto _ : state) {
result = aggregateDomain(domain);
}
}
BENCHMARK(BM_aggregateDomain);

static void BM_aggregateDomainLong(benchmark::State &state)
{
AggDomainResult result;
std::string domain{"long1.long2.long3.long4.long5.long6.long7.long8.biz.foo.bar.com"};
for (auto _ : state) {
result = aggregateDomain(domain);
}
}

BENCHMARK(BM_aggregateDomainLong);

static void BM_pcapReadNoParse(benchmark::State &state)
{

for (auto _ : state) {
auto reader = pcpp::IFileReaderDevice::getReader("fixtures/dns_udp_tcp_random.pcap");

if (!reader->open()) {
throw std::runtime_error("Cannot open pcap/pcapng file");
}

pcpp::RawPacket rawPacket;
while (reader->getNextPacket(rawPacket)) {
}

reader->close();
delete reader;
}
}
BENCHMARK(BM_pcapReadNoParse);

static void BM_pcapReadParse1(benchmark::State &state)
{

for (auto _ : state) {
auto reader = pcpp::IFileReaderDevice::getReader("fixtures/dns_udp_tcp_random.pcap");

if (!reader->open()) {
throw std::runtime_error("Cannot open pcap/pcapng file");
}

pcpp::RawPacket rawPacket;
while (reader->getNextPacket(rawPacket)) {
pcpp::Packet packet(&rawPacket, pcpp::OsiModelTransportLayer);
}

reader->close();
delete reader;
}
}
BENCHMARK(BM_pcapReadParse1);

BENCHMARK_MAIN();
2 changes: 0 additions & 2 deletions src/handlers/dns/tests/test_dns.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
#include <ProtocolType.h>
#include <catch2/catch.hpp>
#include <sstream>

#include "dns.h"

Expand Down
3 changes: 2 additions & 1 deletion src/inputs/pcap/PcapInputStream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -254,8 +254,9 @@ void PcapInputStream::_open_pcap(const std::string &fileName, const std::string
auto reader = pcpp::IFileReaderDevice::getReader(fileName.c_str());

// try to open the file device
if (!reader->open())
if (!reader->open()) {
throw PcapException("Cannot open pcap/pcapng file");
}

// set BPF filter if set by the user
if (bpfFilter != "") {
Expand Down