From 0b34bd33d9b74e51adccba4b330b0bd264a7d24c Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 20 Dec 2025 15:08:37 +0000 Subject: Rename test utilities to avoid name conflict. --- test/Jamfile.jam | 8 ++-- test/perf-ingest.cpp | 2 +- test/test-ingest.cpp | 2 +- test/test-util.cpp | 100 -------------------------------------------------- test/test-util.hpp | 45 ----------------------- test/testing-util.cpp | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/testing-util.hpp | 45 +++++++++++++++++++++++ 7 files changed, 151 insertions(+), 151 deletions(-) delete mode 100644 test/test-util.cpp delete mode 100644 test/test-util.hpp create mode 100644 test/testing-util.cpp create mode 100644 test/testing-util.hpp diff --git a/test/Jamfile.jam b/test/Jamfile.jam index 493c5bc..6574046 100644 --- a/test/Jamfile.jam +++ b/test/Jamfile.jam @@ -15,8 +15,8 @@ project WebStat-Testing : requirements gcc,debug:-Wno-missing-field-initializers ; -lib test-util : - test-util.cpp +lib testing-util : + testing-util.cpp : ..//dbpp-postgresql ; @@ -26,7 +26,7 @@ run test-ingest.cpp : ../src/schema.sql : BOOST_TEST_DYN_LINK - test-util + testing-util ..//dbpp-postgresql boost_unit_test_framework dbpptestcore @@ -34,7 +34,7 @@ run test-ingest.cpp : ; exe perf-ingest : perf-ingest.cpp : - test-util + testing-util $(src)//webstat ..//dbpp-postgresql benchmark diff --git a/test/perf-ingest.cpp b/test/perf-ingest.cpp index 3251107..69212de 100644 --- a/test/perf-ingest.cpp +++ b/test/perf-ingest.cpp @@ -1,7 +1,7 @@ #include #include -#include "test-util.hpp" +#include "testing-util.hpp" #include #include diff --git a/test/test-ingest.cpp b/test/test-ingest.cpp index 9534a9f..7692234 100644 --- a/test/test-ingest.cpp +++ b/test/test-ingest.cpp @@ -2,7 +2,7 @@ #include #include -#include "test-util.hpp" +#include "testing-util.hpp" #include #include diff --git a/test/test-util.cpp b/test/test-util.cpp deleted file mode 100644 index 32c3003..0000000 --- a/test/test-util.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "test-util.hpp" -#include -#include - -namespace WebStat { - MockDB::MockDB() : - DB::PluginMock("webstat", {SRC_DIR / "schema.sql"}, "user=postgres dbname=postgres") { } - - MockDBPool::MockDBPool(std::string name) : DB::BasicConnectionPool(1, 1), name {std::move(name)} { } - - DB::ConnectionPtr - MockDBPool::createResource() const - { - return DB::MockDatabase::openConnectionTo(name); - } - - utsname - getTestUtsName(const std::string_view nodename) - { - utsname uts {}; - nodename.copy(uts.nodename, sizeof(uts.nodename)); - return uts; - } - - LogFile::LogFile(std::filesystem::path where, size_t entries) : path {std::move(where)} - { - std::random_device randDevice; - std::mt19937 generator(randDevice()); - - struct Strings { - std::vector vhosts; - std::vector ips; - std::vector paths; - std::vector qss; - std::vector refs; - std::vector uas; - }; - - Strings strings; - - auto genIp = [&generator]() { - static std::uniform_int_distribution octetDistrib {0, std::numeric_limits::max()}; - return std::format("{}.{}.{}.{}", octetDistrib(generator), octetDistrib(generator), octetDistrib(generator), - octetDistrib(generator) - - ); - }; - auto getStrGen = [&generator](size_t minLen, size_t maxLen) { - return [minLen, maxLen, &generator]() { - std::uniform_int_distribution charDistrib {'a', 'z'}; - std::uniform_int_distribution lenDistrib {minLen, maxLen}; - std::string out; - std::generate_n(std::back_inserter(out), lenDistrib(generator), [&generator, &charDistrib]() { - return charDistrib(generator); - }); - return out; - }; - }; - - for (auto & [out, count, stringGenerator] : - std::initializer_list &, size_t, std::function>> { - {strings.vhosts, 4, getStrGen(6, 20)}, - {strings.ips, 4, genIp}, - {strings.paths, 100, getStrGen(1, 50)}, - {strings.qss, 100, getStrGen(1, 50)}, - {strings.refs, 50, getStrGen(10, 50)}, - {strings.uas, 10, getStrGen(50, 70)}, - }) { - std::generate_n(std::back_inserter(out), count, stringGenerator); - } - strings.qss.emplace_back(""); - strings.refs.emplace_back("-"); - strings.uas.emplace_back("-"); - - constexpr size_t MISC_MIN = 1000; - constexpr size_t MISC_MAX = 10000; - constexpr uint64_t TICK_START = 1755710158296508; - std::uniform_int_distribution tickDistrib {MISC_MIN, MISC_MAX}; - std::uniform_int_distribution sizeDistrib {MISC_MIN, MISC_MAX}; - std::uniform_int_distribution durationDistrib {MISC_MIN, MISC_MAX}; - uint64_t tick = TICK_START; - auto randomString = [&generator](auto & stringSet) { - std::uniform_int_distribution choiceDistrib {0, stringSet.size() - 1}; - return stringSet[choiceDistrib(generator)]; - }; - - std::ofstream logfile {path}; - for (size_t line = 0; line < entries; ++line) { - std::println(logfile, R"LOG({} {} {} GET "/{}" "?{}" HTTP/1.1 200 {} {} "{}" "{}")LOG", - randomString(strings.vhosts), randomString(strings.ips), tick += tickDistrib(generator), - randomString(strings.paths), randomString(strings.qss), sizeDistrib(generator), - durationDistrib(generator), randomString(strings.refs), randomString(strings.uas)); - } - } - - LogFile::~LogFile() - { - std::filesystem::remove(path); - } -} diff --git a/test/test-util.hpp b/test/test-util.hpp deleted file mode 100644 index f933cba..0000000 --- a/test/test-util.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include - -namespace WebStat { -#define XSTR(s) STR(s) -#define STR(s) #s - inline const std::filesystem::path SRC_DIR(XSTR(SRC)); - inline const std::filesystem::path TEST_DIR(XSTR(TEST)); - inline const std::filesystem::path FIXTURE_DIR(XSTR(FIXTURES)); - inline const std::string FIXTURE_URL_BASE = "file://" + std::filesystem::canonical(FIXTURE_DIR).string(); -#undef XSTR -#undef STR - - struct MockDB : public DB::PluginMock { - MockDB(); - }; - - class MockDBPool : public DB::BasicConnectionPool { - public: - MockDBPool(std::string); - - protected: - DB::ConnectionPtr createResource() const; - - private: - std::string name; - }; - - template using ParseData = std::tuple; - - utsname getTestUtsName(std::string_view); - - struct LogFile { - LogFile(std::filesystem::path where, size_t entries); - ~LogFile(); - SPECIAL_MEMBERS_DELETE(LogFile); - - const std::filesystem::path path; - }; -} diff --git a/test/testing-util.cpp b/test/testing-util.cpp new file mode 100644 index 0000000..010b2c6 --- /dev/null +++ b/test/testing-util.cpp @@ -0,0 +1,100 @@ +#include "testing-util.hpp" +#include +#include + +namespace WebStat { + MockDB::MockDB() : + DB::PluginMock("webstat", {SRC_DIR / "schema.sql"}, "user=postgres dbname=postgres") { } + + MockDBPool::MockDBPool(std::string name) : DB::BasicConnectionPool(1, 1), name {std::move(name)} { } + + DB::ConnectionPtr + MockDBPool::createResource() const + { + return DB::MockDatabase::openConnectionTo(name); + } + + utsname + getTestUtsName(const std::string_view nodename) + { + utsname uts {}; + nodename.copy(uts.nodename, sizeof(uts.nodename)); + return uts; + } + + LogFile::LogFile(std::filesystem::path where, size_t entries) : path {std::move(where)} + { + std::random_device randDevice; + std::mt19937 generator(randDevice()); + + struct Strings { + std::vector vhosts; + std::vector ips; + std::vector paths; + std::vector qss; + std::vector refs; + std::vector uas; + }; + + Strings strings; + + auto genIp = [&generator]() { + static std::uniform_int_distribution octetDistrib {0, std::numeric_limits::max()}; + return std::format("{}.{}.{}.{}", octetDistrib(generator), octetDistrib(generator), octetDistrib(generator), + octetDistrib(generator) + + ); + }; + auto getStrGen = [&generator](size_t minLen, size_t maxLen) { + return [minLen, maxLen, &generator]() { + std::uniform_int_distribution charDistrib {'a', 'z'}; + std::uniform_int_distribution lenDistrib {minLen, maxLen}; + std::string out; + std::generate_n(std::back_inserter(out), lenDistrib(generator), [&generator, &charDistrib]() { + return charDistrib(generator); + }); + return out; + }; + }; + + for (auto & [out, count, stringGenerator] : + std::initializer_list &, size_t, std::function>> { + {strings.vhosts, 4, getStrGen(6, 20)}, + {strings.ips, 4, genIp}, + {strings.paths, 100, getStrGen(1, 50)}, + {strings.qss, 100, getStrGen(1, 50)}, + {strings.refs, 50, getStrGen(10, 50)}, + {strings.uas, 10, getStrGen(50, 70)}, + }) { + std::generate_n(std::back_inserter(out), count, stringGenerator); + } + strings.qss.emplace_back(""); + strings.refs.emplace_back("-"); + strings.uas.emplace_back("-"); + + constexpr size_t MISC_MIN = 1000; + constexpr size_t MISC_MAX = 10000; + constexpr uint64_t TICK_START = 1755710158296508; + std::uniform_int_distribution tickDistrib {MISC_MIN, MISC_MAX}; + std::uniform_int_distribution sizeDistrib {MISC_MIN, MISC_MAX}; + std::uniform_int_distribution durationDistrib {MISC_MIN, MISC_MAX}; + uint64_t tick = TICK_START; + auto randomString = [&generator](auto & stringSet) { + std::uniform_int_distribution choiceDistrib {0, stringSet.size() - 1}; + return stringSet[choiceDistrib(generator)]; + }; + + std::ofstream logfile {path}; + for (size_t line = 0; line < entries; ++line) { + std::println(logfile, R"LOG({} {} {} GET "/{}" "?{}" HTTP/1.1 200 {} {} "{}" "{}")LOG", + randomString(strings.vhosts), randomString(strings.ips), tick += tickDistrib(generator), + randomString(strings.paths), randomString(strings.qss), sizeDistrib(generator), + durationDistrib(generator), randomString(strings.refs), randomString(strings.uas)); + } + } + + LogFile::~LogFile() + { + std::filesystem::remove(path); + } +} diff --git a/test/testing-util.hpp b/test/testing-util.hpp new file mode 100644 index 0000000..f933cba --- /dev/null +++ b/test/testing-util.hpp @@ -0,0 +1,45 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace WebStat { +#define XSTR(s) STR(s) +#define STR(s) #s + inline const std::filesystem::path SRC_DIR(XSTR(SRC)); + inline const std::filesystem::path TEST_DIR(XSTR(TEST)); + inline const std::filesystem::path FIXTURE_DIR(XSTR(FIXTURES)); + inline const std::string FIXTURE_URL_BASE = "file://" + std::filesystem::canonical(FIXTURE_DIR).string(); +#undef XSTR +#undef STR + + struct MockDB : public DB::PluginMock { + MockDB(); + }; + + class MockDBPool : public DB::BasicConnectionPool { + public: + MockDBPool(std::string); + + protected: + DB::ConnectionPtr createResource() const; + + private: + std::string name; + }; + + template using ParseData = std::tuple; + + utsname getTestUtsName(std::string_view); + + struct LogFile { + LogFile(std::filesystem::path where, size_t entries); + ~LogFile(); + SPECIAL_MEMBERS_DELETE(LogFile); + + const std::filesystem::path path; + }; +} -- cgit v1.2.3