1212
1313#include " base/gtest.h"
1414#include " core/mi_memory_resource.h"
15+ #include " glog/logging.h"
1516
1617extern " C" {
1718#include " redis/zmalloc.h"
@@ -405,33 +406,33 @@ TEST_F(IntrusiveStringSetTest, XtremeScanGrow) {
405406 EXPECT_EQ (seen.size (), to_see.size ());
406407}
407408
408- // TEST_F(IntrusiveStringSetTest, Pop) {
409- // constexpr size_t num_items = 8;
410- // unordered_set<string> to_insert;
409+ TEST_F (IntrusiveStringSetTest, Pop) {
410+ constexpr size_t num_items = 8 ;
411+ unordered_set<string> to_insert;
411412
412- // while (to_insert.size() != num_items) {
413- // auto str = random_string(generator_, 10);
414- // if (to_insert.count(str)) {
415- // continue;
416- // }
413+ while (to_insert.size () != num_items) {
414+ auto str = random_string (generator_, 10 );
415+ if (to_insert.count (str)) {
416+ continue ;
417+ }
417418
418- // to_insert.insert(str);
419- // EXPECT_TRUE(ss_->Add(str));
420- // }
419+ to_insert.insert (str);
420+ EXPECT_TRUE (ss_->Add (str));
421+ }
421422
422- // while (!ss_->Empty()) {
423- // size_t size = ss_->UpperBoundSize();
424- // auto str = ss_->Pop();
425- // DCHECK(ss_->UpperBoundSize() == to_insert.size() - 1);
426- // DCHECK(str.has_value() );
427- // DCHECK(to_insert.count(str.value( )));
428- // DCHECK_EQ(ss_->UpperBoundSize(), size - 1);
429- // to_insert.erase(str.value( ));
430- // }
423+ while (!ss_->Empty ()) {
424+ size_t size = ss_->UpperBoundSize ();
425+ auto str = ss_->Pop ();
426+ DCHECK (ss_->UpperBoundSize () == to_insert.size () - 1 );
427+ DCHECK (str);
428+ DCHECK (to_insert.count (std::string ( str.Key () )));
429+ DCHECK_EQ (ss_->UpperBoundSize (), size - 1 );
430+ to_insert.erase (std::string ( str.Key () ));
431+ }
431432
432- // DCHECK(ss_->Empty());
433- // DCHECK(to_insert.empty());
434- // }
433+ DCHECK (ss_->Empty ());
434+ DCHECK (to_insert.empty ());
435+ }
435436
436437// TEST_F(IntrusiveStringSetTest, Iteration) {
437438// ss_->Add("foo");
@@ -461,15 +462,15 @@ TEST_F(IntrusiveStringSetTest, XtremeScanGrow) {
461462// EXPECT_EQ(to_insert.size(), 0);
462463// }
463464
464- // TEST_F(IntrusiveStringSetTest, SetFieldExpireHasExpiry) {
465- // EXPECT_TRUE(ss_->Add("k1", 100));
466- // auto k = ss_->Find("k1");
467- // EXPECT_TRUE(k.HasExpiry());
468- // EXPECT_EQ(k.ExpiryTime(), 100);
469- // k.SetExpiryTime(1);
470- // EXPECT_TRUE(k.HasExpiry());
471- // EXPECT_EQ(k.ExpiryTime(), 1);
472- // }
465+ TEST_F (IntrusiveStringSetTest, SetFieldExpireHasExpiry) {
466+ EXPECT_TRUE (ss_->Add (" k1" , 100 ));
467+ auto k = ss_->Find (" k1" );
468+ EXPECT_TRUE (k.HasExpiry ());
469+ EXPECT_EQ (k.ExpiryTime (), 100 );
470+ k.SetExpiryTime (1 );
471+ EXPECT_TRUE (k.HasExpiry ());
472+ EXPECT_EQ (k.ExpiryTime (), 1 );
473+ }
473474
474475// TEST_F(IntrusiveStringSetTest, SetFieldExpireNoHasExpiry) {
475476// EXPECT_TRUE(ss_->Add("k1"));
@@ -558,14 +559,14 @@ TEST_F(IntrusiveStringSetTest, XtremeScanGrow) {
558559// }
559560// }
560561
561- // size_t memUsed(StringSet & obj) {
562+ // size_t memUsed(IntrusiveStringSet & obj) {
562563// return obj.ObjMallocUsed() + obj.SetMallocUsed();
563564// }
564565
565566// void BM_Clone(benchmark::State& state) {
566567// vector<string> strs;
567568// mt19937 generator(0);
568- // StringSet ss1, ss2;
569+ // IntrusiveStringSet ss1, ss2;
569570// unsigned elems = state.range(0);
570571// for (size_t i = 0; i < elems; ++i) {
571572// string str = random_string(generator, 10);
@@ -588,7 +589,7 @@ TEST_F(IntrusiveStringSetTest, XtremeScanGrow) {
588589// unsigned elems = state.range(0);
589590// vector<string> strs;
590591// mt19937 generator(0);
591- // StringSet ss1, ss2;
592+ // IntrusiveStringSet ss1, ss2;
592593// for (size_t i = 0; i < elems; ++i) {
593594// string str = random_string(generator, 10);
594595// ss1.Add(str);
@@ -619,30 +620,30 @@ TEST_F(IntrusiveStringSetTest, XtremeScanGrow) {
619620// }
620621// BENCHMARK(BM_Clear)->ArgName("elements")->Arg(32000);
621622
622- // void BM_Add(benchmark::State& state) {
623- // vector<string> strs;
624- // mt19937 generator(0);
625- // StringSet ss;
626- // unsigned elems = state.range(0);
627- // unsigned keySize = state.range(1);
628- // for (size_t i = 0; i < elems; ++i) {
629- // string str = random_string(generator, keySize);
630- // strs.push_back(str);
631- // }
632- // ss.Reserve(elems);
633- // while (state.KeepRunning()) {
634- // for (auto& str : strs)
635- // ss.Add(str);
636- // state.PauseTiming();
637- // state.counters["Memory_Used"] = memUsed(ss);
638- // ss.Clear();
639- // ss.Reserve(elems);
640- // state.ResumeTiming();
641- // }
642- // }
643- // BENCHMARK(BM_Add)
644- // ->ArgNames({"elements", "Key Size"})
645- // ->ArgsProduct({{1000, 10000, 100000}, {10, 100, 1000}});
623+ void BM_Add (benchmark::State& state) {
624+ vector<string> strs;
625+ mt19937 generator (0 );
626+ IntrusiveStringSet ss;
627+ unsigned elems = state.range (0 );
628+ unsigned keySize = state.range (1 );
629+ for (size_t i = 0 ; i < elems; ++i) {
630+ string str = random_string (generator, keySize);
631+ strs.push_back (str);
632+ }
633+ ss.Reserve (elems);
634+ while (state.KeepRunning ()) {
635+ for (auto & str : strs)
636+ ss.Add (str);
637+ state.PauseTiming ();
638+ // state.counters["Memory_Used"] = memUsed(ss);
639+ ss.Clear ();
640+ ss.Reserve (elems);
641+ state.ResumeTiming ();
642+ }
643+ }
644+ BENCHMARK (BM_Add)
645+ ->ArgNames ({" elements" , " Key Size" })
646+ ->ArgsProduct({{1000 , 10000 , 100000 }, {10 , 100 , 1000 }});
646647
647648// void BM_AddMany(benchmark::State& state) {
648649// vector<string> strs;
0 commit comments