MCPcopy Create free account
hub / github.com/apache/impala / ValidateMemBlockStatus

Method ValidateMemBlockStatus

be/src/runtime/io/disk-file-test.cc:39–73  ·  view source on GitHub ↗

last_status is the MemBlock's last status it is going to reach other than MemBlockStatus::DISABLED.

Source from the content-addressed store, hash-verified

37// last_status is the MemBlock's last status it is going to reach other than
38// MemBlockStatus::DISABLED.
39void DiskFileTest::ValidateMemBlockStatus(MemBlockStatus last_status) {
40 const int block_id = 0;
41 const int64_t block_size = 1024;
42 bool expect_reserved = last_status >= MemBlockStatus::RESERVED;
43 bool expect_alloc = last_status >= MemBlockStatus::ALLOC;
44 bool reserved = false;
45 bool alloc = false;
46 MemBlock block(block_id);
47 ASSERT_TRUE(block.data() == nullptr);
48 ASSERT_TRUE(block.IsStatus(MemBlockStatus::UNINIT));
49 if (last_status == MemBlockStatus::UNINIT) goto end;
50 block.SetStatus(MemBlockStatus::RESERVED);
51 ASSERT_TRUE(block.IsStatus(MemBlockStatus::RESERVED));
52 if (last_status == MemBlockStatus::RESERVED) goto end;
53 {
54 unique_lock<SpinLock> read_buffer_lock(*(block.GetLock()));
55 EXPECT_OK(block.AllocLocked(read_buffer_lock, block_size));
56 }
57 ASSERT_TRUE(block.IsStatus(MemBlockStatus::ALLOC));
58 ASSERT_TRUE(block.data() != nullptr);
59 if (last_status == MemBlockStatus::ALLOC) goto end;
60 ASSERT_EQ(last_status, MemBlockStatus::WRITTEN);
61 memset(block.data(), 1, block_size);
62 block.SetStatus(MemBlockStatus::WRITTEN);
63 ASSERT_TRUE(block.IsStatus(MemBlockStatus::WRITTEN));
64 for (int i = 0; i < block_size; i++) {
65 EXPECT_EQ(block.data()[i], 1);
66 }
67end:
68 block.Delete(&reserved, &alloc);
69 ASSERT_EQ(reserved, expect_reserved);
70 ASSERT_EQ(alloc, expect_alloc);
71 ASSERT_TRUE(block.IsStatus(MemBlockStatus::DISABLED));
72 ASSERT_TRUE(block.data() == nullptr);
73}
74
75void DiskFileTest::ValidateMemBlockStatusTransition(MemBlock& block,
76 MemBlockStatus old_status, MemBlockStatus new_status, bool expect_success) {

Callers

nothing calls this directly

Calls 6

IsStatusMethod · 0.80
AllocLockedMethod · 0.80
dataMethod · 0.45
SetStatusMethod · 0.45
GetLockMethod · 0.45
DeleteMethod · 0.45

Tested by

no test coverage detected