diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test-config.cpp | 1 | ||||
-rw-r--r-- | tests/test-statistics.cpp | 69 | ||||
-rw-r--r-- | tests/test-webserver.cpp | 1 |
3 files changed, 69 insertions, 2 deletions
diff --git a/tests/test-config.cpp b/tests/test-config.cpp index c16c519..fe482f8 100644 --- a/tests/test-config.cpp +++ b/tests/test-config.cpp @@ -41,6 +41,7 @@ BOOST_FIXTURE_TEST_CASE(config, ConfigFixture) <user>user1</user> <group>www-data</group> <threads>10</threads> + <statisticspath>stats.db</statisticspath> <!-- <plugin-directory>/usr/lib/webserver/plugins</plugin-directory> <plugin-directory>/usr/local/lib/webserver/plugins</plugin-directory> diff --git a/tests/test-statistics.cpp b/tests/test-statistics.cpp index 9ed7d06..fbc8cfb 100644 --- a/tests/test-statistics.cpp +++ b/tests/test-statistics.cpp @@ -6,23 +6,88 @@ #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/xml_parser.hpp> +#include <filesystem> #include <sstream> #include <string> #include "statistics.h" +#include "config.h" + using namespace std::string_literals; +namespace fs = std::filesystem; class StatisticsFixture { public: StatisticsFixture(){} ~StatisticsFixture(){} - void setup(){} - void teardown(){} + void setup() + { + std::error_code ec; + fs::remove("stats.db", ec); + } + void teardown() + { + std::error_code ec; + fs::remove("stats.db", ec); + } }; BOOST_FIXTURE_TEST_CASE(statistics, StatisticsFixture) { + { + Statistics stats; + + BOOST_CHECK_EQUAL(stats.getValues(), ""); + + stats.count(10, 1000, false, true, true); + + auto v{stats.getValues()}; + BOOST_CHECK_GT(v.size(), 0); + + auto pos{v.find(",")}; + BOOST_CHECK(pos != std::string::npos); + BOOST_CHECK_GT(pos, 0); + + std::string v2{v.substr(pos)}; + + BOOST_CHECK_EQUAL(v2, ",1,0,10,1000,1,0,10,1000,1,0,10,1000\n"); + + stats.save(); + + BOOST_CHECK_EQUAL(v2, ",1,0,10,1000,1,0,10,1000,1,0,10,1000\n"); + } + + { + Statistics stats("stats.db"); + auto v{stats.getValues()}; + BOOST_CHECK_GT(v.size(), 0); + + auto pos{v.find(",")}; + BOOST_CHECK(pos != std::string::npos); + BOOST_CHECK_GT(pos, 0); + + std::string v2{v.substr(pos)}; + + BOOST_CHECK_EQUAL(v2, ",1,0,10,1000,1,0,10,1000,1,0,10,1000\n"); + + stats.count(10, 1000, false, true, true); + BOOST_CHECK_EQUAL(stats.getValues().substr(pos), ",2,0,20,2000,2,0,20,2000,2,0,20,2000\n"); + stats.count(10, 1000, true, true, true); + BOOST_CHECK_EQUAL(stats.getValues().substr(pos), ",3,1,30,3000,3,1,30,3000,3,1,30,3000\n"); + stats.count(10, 1000, false, false, false); + BOOST_CHECK_EQUAL(stats.getValues().substr(pos), ",4,1,40,4000,3,1,30,3000,3,1,30,3000\n"); + stats.count(10, 1000, false, true, false); + BOOST_CHECK_EQUAL(stats.getValues().substr(pos), ",5,1,50,5000,4,1,40,4000,3,1,30,3000\n"); + stats.count(10, 1000, false, false, true); + BOOST_CHECK_EQUAL(stats.getValues().substr(pos), ",6,1,60,6000,4,1,40,4000,4,1,40,4000\n"); + } +} + +BOOST_FIXTURE_TEST_CASE(statistics_non_existing, StatisticsFixture) +{ + Statistics stats("nonexistingpath/stats.db"); + BOOST_CHECK_EQUAL(stats.getValues(), ""); } diff --git a/tests/test-webserver.cpp b/tests/test-webserver.cpp index 53aa9cc..ef3b15f 100644 --- a/tests/test-webserver.cpp +++ b/tests/test-webserver.cpp @@ -65,6 +65,7 @@ public: <user>www-data</user> <group>www-data</group> <threads>10</threads> + <statisticspath>stats.db</sttaisticspath> <plugin-directory>../plugins</plugin-directory> <sites> <site> |