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

Commit 1ba0f23

Browse files
author
Aaron Tian
committed
Separate the insert log buffer test
1 parent 2b752da commit 1ba0f23

File tree

1 file changed

+77
-3
lines changed

1 file changed

+77
-3
lines changed

test/logging/log_buffer_test.cpp

Lines changed: 77 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,80 @@ namespace test {
2525

2626
class LogBufferTests : public PelotonTest {};
2727

28+
TEST_F(LogBufferTests, InsertLogBufferTest) {
29+
oid_t block = 1, offset = 16;
30+
ItemPointer location(block, offset);
31+
eid_t epoch_id = 3;
32+
txn_id_t txn_id = 99;
33+
cid_t commit_id = 98;
34+
oid_t database_id = 10;
35+
oid_t table_id = 20;
36+
oid_t tile_group_id = 30;
37+
double value1 = 9.1, value2 = 9.2, value3 = 9.3;
38+
39+
logging::LogBuffer *log_buffer;
40+
log_buffer = new logging::LogBuffer(logging::LogManager::GetInstance().GetTransactionBufferSize());
41+
42+
// TILES
43+
std::vector<std::string> tile_column_names;
44+
std::vector<std::vector<std::string>> column_names;
45+
46+
tile_column_names.push_back("INTEGER COL");
47+
column_names.push_back(tile_column_names);
48+
49+
std::vector<catalog::Schema> schemas;
50+
std::vector<catalog::Column> columns;
51+
52+
// SCHEMA
53+
catalog::Column column1(type::TypeId::INTEGER, type::Type::GetTypeSize(type::TypeId::INTEGER),
54+
"A", true);
55+
columns.push_back(column1);
56+
57+
std::unique_ptr<catalog::Schema> schema1(new catalog::Schema(columns));
58+
schemas.push_back(*schema1);
59+
60+
std::map<oid_t, std::pair<oid_t, oid_t>> column_map;
61+
column_map[0] = std::make_pair(0, 0);
62+
63+
std::shared_ptr<storage::TileGroup> tile_group(storage::TileGroupFactory::GetTileGroup(
64+
database_id, table_id, tile_group_id, nullptr, schemas, column_map, 3));
65+
catalog::Manager::GetInstance().AddTileGroup(block, tile_group);
66+
67+
logging::LogRecord insert_record = logging::LogRecordFactory::CreateTupleRecord(
68+
LogRecordType::TUPLE_INSERT, location, epoch_id, txn_id, commit_id);
69+
70+
EXPECT_EQ(log_buffer->GetThreshold(), logging::LogManager::GetInstance().GetTransactionBufferSize());
71+
72+
type::Value val1 = type::ValueFactory::GetDecimalValue(value1);
73+
type::Value val2 = type::ValueFactory::GetDecimalValue(value2);
74+
type::Value val3 = type::ValueFactory::GetDecimalValue(value3);
75+
std::vector<type::Value> values;
76+
values.push_back(val1);
77+
values.push_back(val2);
78+
values.push_back(val3);
79+
insert_record.SetValuesArray(reinterpret_cast<char *>(values.data()), static_cast<uint32_t>(values.size()));
80+
log_buffer->WriteRecord(insert_record);
81+
size_t buffer_size1 = sizeof(int32_t) + sizeof(int8_t) + sizeof(int64_t) * 3 + sizeof(int64_t) * 4 +
82+
sizeof(double) * 3;
83+
EXPECT_EQ(buffer_size1, log_buffer->GetSize());
84+
85+
ReferenceSerializeInput log_buffer_input(log_buffer->GetData(), log_buffer->GetSize());
86+
87+
// Insert record
88+
EXPECT_EQ(buffer_size1 - sizeof(int32_t), log_buffer_input.ReadInt());
89+
EXPECT_EQ(static_cast<int>(LogRecordType::TUPLE_INSERT), log_buffer_input.ReadEnumInSingleByte());
90+
EXPECT_EQ(txn_id, log_buffer_input.ReadLong());
91+
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
92+
EXPECT_EQ(commit_id, log_buffer_input.ReadLong());
93+
EXPECT_EQ(database_id, log_buffer_input.ReadLong());
94+
EXPECT_EQ(table_id, log_buffer_input.ReadLong());
95+
EXPECT_EQ(block, log_buffer_input.ReadLong());
96+
EXPECT_EQ(offset, log_buffer_input.ReadLong());
97+
EXPECT_EQ(value1, log_buffer_input.ReadDouble());
98+
EXPECT_EQ(value2, log_buffer_input.ReadDouble());
99+
EXPECT_EQ(value3, log_buffer_input.ReadDouble());
100+
}
101+
28102
TEST_F(LogBufferTests, LogBufferTest) {
29103
oid_t block = 1, offset = 16, old_block = 1, old_offset = 8, new_block = 1,
30104
new_offset = 24;
@@ -115,8 +189,8 @@ TEST_F(LogBufferTests, LogBufferTest) {
115189
// Insert record
116190
EXPECT_EQ(buffer_size1 - sizeof(int32_t), log_buffer_input.ReadInt());
117191
EXPECT_EQ(static_cast<int>(LogRecordType::TUPLE_INSERT), log_buffer_input.ReadEnumInSingleByte());
118-
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
119192
EXPECT_EQ(txn_id, log_buffer_input.ReadLong());
193+
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
120194
EXPECT_EQ(commit_id, log_buffer_input.ReadLong());
121195
EXPECT_EQ(database_id, log_buffer_input.ReadLong());
122196
EXPECT_EQ(table_id, log_buffer_input.ReadLong());
@@ -129,8 +203,8 @@ TEST_F(LogBufferTests, LogBufferTest) {
129203
// Update Record
130204
EXPECT_EQ(buffer_size2 - sizeof(int32_t), log_buffer_input.ReadInt());
131205
EXPECT_EQ(static_cast<int>(LogRecordType::TUPLE_UPDATE), log_buffer_input.ReadEnumInSingleByte());
132-
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
133206
EXPECT_EQ(txn_id, log_buffer_input.ReadLong());
207+
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
134208
EXPECT_EQ(commit_id, log_buffer_input.ReadLong());
135209
EXPECT_EQ(database_id, log_buffer_input.ReadLong());
136210
EXPECT_EQ(table_id, log_buffer_input.ReadLong());
@@ -149,8 +223,8 @@ TEST_F(LogBufferTests, LogBufferTest) {
149223
// Delete record
150224
EXPECT_EQ(buffer_size3 - sizeof(int32_t), log_buffer_input.ReadInt());
151225
EXPECT_EQ(static_cast<int>(LogRecordType::TUPLE_DELETE), log_buffer_input.ReadEnumInSingleByte());
152-
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
153226
EXPECT_EQ(txn_id, log_buffer_input.ReadLong());
227+
EXPECT_EQ(epoch_id, log_buffer_input.ReadLong());
154228
EXPECT_EQ(commit_id, log_buffer_input.ReadLong());
155229
EXPECT_EQ(database_id, log_buffer_input.ReadLong());
156230
EXPECT_EQ(table_id, log_buffer_input.ReadLong());

0 commit comments

Comments
 (0)