Skip to content
This repository was archived by the owner on Sep 27, 2019. It is now read-only.

Commit 7e38591

Browse files
author
Aaron Tian
committed
Separate the update log buffer test
1 parent 1ba0f23 commit 7e38591

File tree

1 file changed

+98
-3
lines changed

1 file changed

+98
-3
lines changed

test/logging/log_buffer_test.cpp

Lines changed: 98 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,14 @@ TEST_F(LogBufferTests, InsertLogBufferTest) {
7878
values.push_back(val3);
7979
insert_record.SetValuesArray(reinterpret_cast<char *>(values.data()), static_cast<uint32_t>(values.size()));
8080
log_buffer->WriteRecord(insert_record);
81-
size_t buffer_size1 = sizeof(int32_t) + sizeof(int8_t) + sizeof(int64_t) * 3 + sizeof(int64_t) * 4 +
81+
size_t buffer_size = sizeof(int32_t) + sizeof(int8_t) + sizeof(int64_t) * 3 + sizeof(int64_t) * 4 +
8282
sizeof(double) * 3;
83-
EXPECT_EQ(buffer_size1, log_buffer->GetSize());
83+
EXPECT_EQ(buffer_size, log_buffer->GetSize());
8484

8585
ReferenceSerializeInput log_buffer_input(log_buffer->GetData(), log_buffer->GetSize());
8686

8787
// Insert record
88-
EXPECT_EQ(buffer_size1 - sizeof(int32_t), log_buffer_input.ReadInt());
88+
EXPECT_EQ(buffer_size - sizeof(int32_t), log_buffer_input.ReadInt());
8989
EXPECT_EQ(static_cast<int>(LogRecordType::TUPLE_INSERT), log_buffer_input.ReadEnumInSingleByte());
9090
EXPECT_EQ(txn_id, log_buffer_input.ReadLong());
9191
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
@@ -99,6 +99,101 @@ TEST_F(LogBufferTests, InsertLogBufferTest) {
9999
EXPECT_EQ(value3, log_buffer_input.ReadDouble());
100100
}
101101

102+
TEST_F(LogBufferTests, UpdateLogBufferTest) {
103+
oid_t block = 1, offset = 16, new_block = 1, new_offset = 24;
104+
ItemPointer location(block, offset);
105+
ItemPointer new_location(new_block, new_offset);
106+
eid_t epoch_id = 3;
107+
txn_id_t txn_id = 99;
108+
cid_t commit_id = 98;
109+
oid_t database_id = 10;
110+
oid_t table_id = 20;
111+
oid_t tile_group_id = 30;
112+
double value1 = 9.1, value2 = 9.2, value3 = 9.3;
113+
oid_t target_oid1 = 2, target_oid2 = 4, target_oid3 = 5;
114+
115+
logging::LogBuffer *log_buffer;
116+
log_buffer = new logging::LogBuffer(logging::LogManager::GetInstance().GetTransactionBufferSize());
117+
118+
// TILES
119+
std::vector<std::string> tile_column_names;
120+
std::vector<std::vector<std::string>> column_names;
121+
122+
tile_column_names.push_back("INTEGER COL");
123+
column_names.push_back(tile_column_names);
124+
125+
std::vector<catalog::Schema> schemas;
126+
std::vector<catalog::Column> columns;
127+
128+
// SCHEMA
129+
catalog::Column column1(type::TypeId::INTEGER, type::Type::GetTypeSize(type::TypeId::INTEGER),
130+
"A", true);
131+
columns.push_back(column1);
132+
133+
std::unique_ptr<catalog::Schema> schema1(new catalog::Schema(columns));
134+
schemas.push_back(*schema1);
135+
136+
std::map<oid_t, std::pair<oid_t, oid_t>> column_map;
137+
column_map[0] = std::make_pair(0, 0);
138+
139+
std::shared_ptr<storage::TileGroup> tile_group(storage::TileGroupFactory::GetTileGroup(
140+
database_id, table_id, tile_group_id, nullptr, schemas, column_map, 3));
141+
catalog::Manager::GetInstance().AddTileGroup(block, tile_group);
142+
143+
logging::LogRecord insert_record = logging::LogRecordFactory::CreateTupleRecord(
144+
LogRecordType::TUPLE_INSERT, location, epoch_id, txn_id, commit_id);
145+
logging::LogRecord update_record = logging::LogRecordFactory::CreateTupleRecord(
146+
LogRecordType::TUPLE_UPDATE, location, new_location, epoch_id, txn_id,
147+
commit_id);
148+
149+
EXPECT_EQ(log_buffer->GetThreshold(), logging::LogManager::GetInstance().GetTransactionBufferSize());
150+
151+
type::Value val1 = type::ValueFactory::GetDecimalValue(value1);
152+
type::Value val2 = type::ValueFactory::GetDecimalValue(value2);
153+
type::Value val3 = type::ValueFactory::GetDecimalValue(value3);
154+
std::vector<type::Value> values;
155+
values.push_back(val1);
156+
values.push_back(val2);
157+
values.push_back(val3);
158+
expression::AbstractExpression *expr = nullptr;
159+
planner::DerivedAttribute tmp_att(expr);
160+
Target target1 = std::make_pair(target_oid1, tmp_att);
161+
Target target2 = std::make_pair(target_oid2, tmp_att);
162+
Target target3 = std::make_pair(target_oid3, tmp_att);
163+
TargetList *target_list = new TargetList;
164+
target_list->push_back(target1);
165+
target_list->push_back(target2);
166+
target_list->push_back(target3);
167+
update_record.SetOffsetsArray(target_list);
168+
update_record.SetValuesArray(reinterpret_cast<char *>(values.data()), static_cast<uint32_t>(values.size()));
169+
log_buffer->WriteRecord(update_record);
170+
size_t buffer_size = sizeof(int32_t) + sizeof(int8_t) + sizeof(int64_t) * 3 + sizeof(int64_t) * 7 +
171+
(sizeof(int32_t) + sizeof(double)) * 3;
172+
EXPECT_EQ(buffer_size, log_buffer->GetSize());
173+
174+
ReferenceSerializeInput log_buffer_input(log_buffer->GetData(), log_buffer->GetSize());
175+
176+
// Update Record
177+
EXPECT_EQ(buffer_size - sizeof(int32_t), log_buffer_input.ReadInt());
178+
EXPECT_EQ(static_cast<int>(LogRecordType::TUPLE_UPDATE), log_buffer_input.ReadEnumInSingleByte());
179+
EXPECT_EQ(txn_id, log_buffer_input.ReadLong());
180+
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
181+
EXPECT_EQ(commit_id, log_buffer_input.ReadLong());
182+
EXPECT_EQ(database_id, log_buffer_input.ReadLong());
183+
EXPECT_EQ(table_id, log_buffer_input.ReadLong());
184+
EXPECT_EQ(block, log_buffer_input.ReadLong());
185+
EXPECT_EQ(offset, log_buffer_input.ReadLong());
186+
EXPECT_EQ(new_block, log_buffer_input.ReadLong());
187+
EXPECT_EQ(new_offset, log_buffer_input.ReadLong());
188+
EXPECT_EQ(update_record.GetNumValues(), log_buffer_input.ReadLong());
189+
EXPECT_EQ(target_oid1, log_buffer_input.ReadInt());
190+
EXPECT_EQ(value1, log_buffer_input.ReadDouble());
191+
EXPECT_EQ(target_oid2, log_buffer_input.ReadInt());
192+
EXPECT_EQ(value2, log_buffer_input.ReadDouble());
193+
EXPECT_EQ(target_oid3, log_buffer_input.ReadInt());
194+
EXPECT_EQ(value3, log_buffer_input.ReadDouble());
195+
}
196+
102197
TEST_F(LogBufferTests, LogBufferTest) {
103198
oid_t block = 1, offset = 16, old_block = 1, old_offset = 8, new_block = 1,
104199
new_offset = 24;

0 commit comments

Comments
 (0)