2727
2828class RedisBloomChainTest : public TestBase {
2929 protected:
30- explicit RedisBloomChainTest () { sb_chain_ = std::make_unique<redis::BloomChain>(storage_. get (), " sb_chain_ns " ); }
30+ explicit RedisBloomChainTest () = default;
3131 ~RedisBloomChainTest () override = default ;
3232
33- void SetUp () override { key_ = " test_sb_chain_key" ; }
33+ void SetUp () override {
34+ key_ = " test_sb_chain_key" ;
35+ sb_chain_ = std::make_unique<redis::BloomChain>(storage_.get (), " sb_chain_ns" );
36+ }
3437 void TearDown () override {}
3538
3639 std::unique_ptr<redis::BloomChain> sb_chain_;
@@ -48,8 +51,6 @@ TEST_F(RedisBloomChainTest, Reserve) {
4851 s = sb_chain_->Reserve (*ctx_, key_, capacity, error_rate, expansion);
4952 EXPECT_FALSE (s.ok ());
5053 EXPECT_EQ (s.ToString (), " Invalid argument: the key already exists" );
51-
52- s = sb_chain_->Del (*ctx_, key_);
5354}
5455
5556TEST_F (RedisBloomChainTest, BasicAddAndTest) {
@@ -79,5 +80,34 @@ TEST_F(RedisBloomChainTest, BasicAddAndTest) {
7980 EXPECT_TRUE (s.ok ());
8081 EXPECT_EQ (exist, false );
8182 }
82- s = sb_chain_->Del (*ctx_, key_);
83+ }
84+
85+ TEST_F (RedisBloomChainTest, DuplicateInsert) {
86+ std::string insert_items[] = {" item1" , " item2" , " item3" , " item101" , " item202" , " 303" };
87+ for (const auto & insert_item : insert_items) {
88+ redis::BloomFilterAddResult ret = redis::BloomFilterAddResult::kOk ;
89+ auto s = sb_chain_->Add (*ctx_, key_, insert_item, &ret);
90+ EXPECT_TRUE (s.ok ());
91+ EXPECT_EQ (ret, redis::BloomFilterAddResult::kOk );
92+ }
93+ std::vector<std::string> arrays;
94+ for (int64_t idx = 0 ; idx < 1000 ; ++idx) {
95+ arrays.push_back (" itemx" + std::to_string (idx));
96+ }
97+ std::vector<redis::BloomFilterAddResult> results;
98+ results.resize (arrays.size ());
99+ auto s = sb_chain_->MAdd (*ctx_, key_, arrays, &results);
100+ EXPECT_TRUE (s.ok ());
101+ arrays.clear ();
102+ for (int64_t idx = 1000 ; idx < 2000 ; ++idx) {
103+ arrays.push_back (" itemx" + std::to_string (idx));
104+ }
105+ s = sb_chain_->MAdd (*ctx_, key_, arrays, &results);
106+ EXPECT_TRUE (s.ok ());
107+ arrays.clear ();
108+ for (int64_t idx = 2000 ; idx < 3000 ; ++idx) {
109+ arrays.push_back (" itemx" + std::to_string (idx));
110+ }
111+ s = sb_chain_->MAdd (*ctx_, key_, arrays, &results);
112+ EXPECT_TRUE (s.ok ());
83113}
0 commit comments