6 #include <gtest/gtest.h>
9 #include "../mb_data.h"
10 #include "../resource_pool.h"
11 #include "./test_key.h"
13 #define MB_DIR "/var/tmp/mabain_test/"
15 using namespace mabain;
19 class UpdateTest : public ::testing::Test
25 virtual ~UpdateTest() {
29 virtual void SetUp() {
30 std::string cmd = std::string("mkdir -p ") + MB_DIR;
31 if(system(cmd.c_str()) != 0) {
33 cmd = std::string("rm ") + MB_DIR + "_*";
34 if(system(cmd.c_str()) != 0) {
36 db = new DB(MB_DIR, CONSTS::WriterOptions());
38 virtual void TearDown() {
40 ResourcePool::getInstance().RemoveAll();
47 TEST_F(UpdateTest, Update_all)
49 TestKey tkey(MABAIN_TEST_KEY_TYPE_INT);
50 TestKey tkey1(MABAIN_TEST_KEY_TYPE_SHA_128);
54 for(int i = 0; i < num; i++) {
55 key = tkey.get_key(i);
56 rval = db->Add(key, key);
57 EXPECT_EQ(rval, MBError::SUCCESS);
58 key = tkey1.get_key(i);
59 rval = db->Add(key, key);
60 EXPECT_EQ(rval, MBError::SUCCESS);
62 for(int i = 0; i < num; i++) {
63 key = tkey.get_key(i);
64 rval = db->Add(key, key);
65 EXPECT_EQ(rval, MBError::IN_DICT);
66 key = tkey1.get_key(i);
67 rval = db->Add(key, key);
68 EXPECT_EQ(rval, MBError::IN_DICT);
70 key = tkey.get_key(i);
71 rval = db->Add(key, key+"_new", true);
72 EXPECT_EQ(rval, MBError::SUCCESS);
73 key = tkey1.get_key(i);
74 rval = db->Add(key, key+"_new", true);
75 EXPECT_EQ(rval, MBError::SUCCESS);
79 for(int i = 0; i < num; i++) {
80 key = tkey.get_key(i);
81 rval = db->Find(key, mbd);
82 EXPECT_EQ(rval, MBError::SUCCESS);
83 EXPECT_EQ(std::string((const char*)mbd.buff, mbd.data_len)==key+"_new", true);
84 key = tkey1.get_key(i);
85 rval = db->Find(key, mbd);
86 EXPECT_EQ(rval, MBError::SUCCESS);
87 EXPECT_EQ(std::string((const char*)mbd.buff, mbd.data_len)==key+"_new", true);
91 TEST_F(UpdateTest, Update_random)
94 TestKey tkey(MABAIN_TEST_KEY_TYPE_INT);
95 TestKey tkey1(MABAIN_TEST_KEY_TYPE_SHA_128);
101 added = new bool[num];
102 for(int i = 0; i < num; i++) {
106 for(int i = 0; i < num; i++) {
107 if(rand() % 100 < 21)
110 key = tkey.get_key(i);
111 rval = db->Add(key, key);
112 EXPECT_EQ(rval, MBError::SUCCESS);
113 key = tkey1.get_key(i);
114 rval = db->Add(key, key);
115 EXPECT_EQ(rval, MBError::SUCCESS);
118 for(int i = 0; i < num; i++) {
120 key = tkey.get_key(i);
121 rval = db->Add(key, key);
122 EXPECT_EQ(rval, MBError::IN_DICT);
123 key = tkey1.get_key(i);
124 rval = db->Add(key, key);
125 EXPECT_EQ(rval, MBError::IN_DICT);
127 key = tkey.get_key(i);
128 rval = db->Add(key, key+"_new", true);
129 EXPECT_EQ(rval, MBError::SUCCESS);
130 key = tkey1.get_key(i);
131 rval = db->Add(key, key+"_new", true);
132 EXPECT_EQ(rval, MBError::SUCCESS);
134 key = tkey.get_key(i);
135 rval = db->Add(key, key);
136 EXPECT_EQ(rval, MBError::SUCCESS);
137 key = tkey1.get_key(i);
138 rval = db->Add(key, key);
139 EXPECT_EQ(rval, MBError::SUCCESS);
145 for(int i = 0; i < num; i++) {
146 key = tkey.get_key(i);
147 rval = db->Find(key, mbd);
148 EXPECT_EQ(rval, MBError::SUCCESS);
152 EXPECT_EQ(std::string((const char*)mbd.buff, mbd.data_len)==value, true);
153 key = tkey1.get_key(i);
154 rval = db->Find(key, mbd);
158 EXPECT_EQ(rval, MBError::SUCCESS);
159 EXPECT_EQ(std::string((const char*)mbd.buff, mbd.data_len)==value, true);