Skip to content

Commit 47c265d

Browse files
committed
add tests
1 parent 8e02915 commit 47c265d

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

test/inte/realtime_write_inte_test.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,50 @@ TEST_F(RealtimeWriteInteTest, TestReadMemoryBeforePrepareCommit) {
546546
ASSERT_OK(writer->Close());
547547
}
548548

549+
TEST_F(RealtimeWriteInteTest, TestPlanExcludesRowsWrittenAfterMemoryEndOffset) {
550+
CreateTable(/*partition_keys=*/{});
551+
ASSERT_OK_AND_ASSIGN(std::shared_ptr<RealtimeContext> realtime_context,
552+
RealtimeContext::Create());
553+
ASSERT_OK_AND_ASSIGN(std::unique_ptr<FileStoreWrite> writer,
554+
CreateRealtimeWriter(realtime_context));
555+
556+
std::vector<Row> first_rows = MakeRows(/*first_id=*/0, /*count=*/10, /*partition=*/"p0");
557+
ASSERT_OK_AND_ASSIGN(std::unique_ptr<RecordBatch> first_batch,
558+
MakeBatch(first_rows, /*partitioned=*/false));
559+
ASSERT_OK(writer->Write(std::move(first_batch)));
560+
ASSERT_OK_AND_ASSIGN(std::shared_ptr<Plan> first_plan,
561+
CreatePlan(realtime_context, /*predicate=*/nullptr));
562+
ASSERT_EQ(1, first_plan->Splits().size());
563+
std::shared_ptr<RealtimeSplit> first_realtime_split =
564+
std::dynamic_pointer_cast<RealtimeSplit>(first_plan->Splits()[0]);
565+
ASSERT_NE(nullptr, first_realtime_split);
566+
ASSERT_EQ(10, first_realtime_split->MemoryEndOffset());
567+
568+
std::vector<Row> second_rows = MakeRows(/*first_id=*/10, /*count=*/5, /*partition=*/"p0");
569+
ASSERT_OK_AND_ASSIGN(std::unique_ptr<RecordBatch> second_batch,
570+
MakeBatch(second_rows, /*partitioned=*/false));
571+
ASSERT_OK(writer->Write(std::move(second_batch)));
572+
573+
ASSERT_OK_AND_ASSIGN(std::vector<Row> first_actual_rows,
574+
ReadRows(first_plan, realtime_context));
575+
ASSERT_EQ(first_rows, first_actual_rows);
576+
577+
ASSERT_OK_AND_ASSIGN(std::shared_ptr<Plan> second_plan,
578+
CreatePlan(realtime_context, /*predicate=*/nullptr));
579+
ASSERT_EQ(1, second_plan->Splits().size());
580+
std::shared_ptr<RealtimeSplit> second_realtime_split =
581+
std::dynamic_pointer_cast<RealtimeSplit>(second_plan->Splits()[0]);
582+
ASSERT_NE(nullptr, second_realtime_split);
583+
ASSERT_EQ(15, second_realtime_split->MemoryEndOffset());
584+
585+
std::vector<Row> expected_rows = first_rows;
586+
expected_rows.insert(expected_rows.end(), second_rows.begin(), second_rows.end());
587+
ASSERT_OK_AND_ASSIGN(std::vector<Row> second_actual_rows,
588+
ReadRows(second_plan, realtime_context));
589+
ASSERT_EQ(expected_rows, second_actual_rows);
590+
ASSERT_OK(writer->Close());
591+
}
592+
549593
TEST_F(RealtimeWriteInteTest, TestReadFailsAfterRealtimeSplitTicketExpires) {
550594
options_[Options::REALTIME_READ_VIEW_TTL] = "10 ms";
551595
CreateTable(/*partition_keys=*/{});

0 commit comments

Comments
 (0)