add unit test for decaying hash set

This commit is contained in:
Jeff Becker 2019-12-30 15:52:10 -05:00
parent a9c9fe9c24
commit 562f3f07ab
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05
5 changed files with 47 additions and 1 deletions

View File

@ -18,6 +18,7 @@ set(LIB_UTIL_SRC
util/common.cpp
util/encode.cpp
util/endian.cpp
util/decaying_hashset.cpp
util/fs.cpp
util/json.cpp
util/logging/android_logger.cpp

View File

@ -0,0 +1 @@
#include <util/decaying_hashset.hpp>

View File

@ -45,7 +45,7 @@ namespace llarp
auto itr = m_Values.begin();
while(itr != m_Values.end())
{
if(itr->second >= now)
if(itr->second <= now)
itr = m_Values.erase(itr);
else
++itr;

View File

@ -38,6 +38,7 @@ list(APPEND TEST_SRC
util/test_llarp_util_aligned.cpp
util/test_llarp_util_bencode.cpp
util/test_llarp_util_bits.cpp
util/test_llarp_util_decaying_hashset.cpp
util/test_llarp_util_encode.cpp
util/test_llarp_util_printer.cpp
util/test_llarp_utils_str.cpp

View File

@ -0,0 +1,43 @@
#include <util/decaying_hashset.hpp>
#include <router_id.hpp>
#include <gtest/gtest.h>
struct DecayingHashSetTest : public ::testing::Test
{
};
TEST_F(DecayingHashSetTest, TestDecayDeterministc)
{
static constexpr llarp_time_t timeout = 5;
static constexpr llarp_time_t now = 1;
llarp::util::DecayingHashSet< llarp::RouterID > hashset(timeout);
const llarp::RouterID zero;
ASSERT_TRUE(zero.IsZero());
ASSERT_FALSE(hashset.Contains(zero));
ASSERT_TRUE(hashset.Insert(zero, now));
ASSERT_TRUE(hashset.Contains(zero));
hashset.Decay(now + 1);
ASSERT_TRUE(hashset.Contains(zero));
hashset.Decay(now + timeout);
ASSERT_FALSE(hashset.Contains(zero));
hashset.Decay(now + timeout + 1);
ASSERT_FALSE(hashset.Contains(zero));
}
TEST_F(DecayingHashSetTest, TestDecay)
{
static constexpr llarp_time_t timeout = 5;
const llarp_time_t now = llarp::time_now_ms();
llarp::util::DecayingHashSet< llarp::RouterID > hashset(timeout);
const llarp::RouterID zero;
ASSERT_TRUE(zero.IsZero());
ASSERT_FALSE(hashset.Contains(zero));
ASSERT_TRUE(hashset.Insert(zero));
ASSERT_TRUE(hashset.Contains(zero));
hashset.Decay(now + 1);
ASSERT_TRUE(hashset.Contains(zero));
hashset.Decay(now + timeout);
ASSERT_FALSE(hashset.Contains(zero));
hashset.Decay(now + timeout + 1);
ASSERT_FALSE(hashset.Contains(zero));
}