GCC Code Coverage Report


Directory: src/
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 93.3% 14 / 0 / 15
Functions: 100.0% 3 / 0 / 3
Branches: 70.0% 7 / 0 / 10

storage/allocator/ssd/ssd_block_allocator.h
Line Branch Exec Source
1 #pragma once
2
3 #include <cstddef>
4 #include <cstdint>
5 #include <vector>
6
7 #include "base/factory.h"
8 #include "storage/kv_engine/base_kv.h"
9
10 class SsdBlockAllocator {
11 public:
12 struct ReadEntry {
13 uint64_t handle;
14 void* out_buf;
15 };
16
17 struct WriteEntry {
18 const void* data;
19 size_t data_size;
20 };
21
22 660 virtual ~SsdBlockAllocator() = default;
23
24 virtual uint64_t Alloc(size_t data_size) = 0;
25 virtual void Free(uint64_t handle) = 0;
26 virtual void Write(uint64_t handle, const void* data, size_t data_size) = 0;
27 virtual size_t Read(uint64_t handle, void* out_buf, size_t buf_size) = 0;
28 virtual uint64_t AllocAndWrite(const void* data, size_t data_size) = 0;
29 virtual size_t SlotCapacity(uint64_t handle) const = 0;
30
31 412 virtual void BatchRead(const std::vector<ReadEntry>& entries,
32 std::vector<size_t>& out_sizes) {
33 412 out_sizes.resize(entries.size());
34
2/2
✓ Branch 1 taken 21566 times.
✓ Branch 2 taken 412 times.
21978 for (size_t i = 0; i < entries.size(); ++i) {
35 21566 out_sizes[i] = Read(entries[i].handle,
36 21566 entries[i].out_buf,
37 21566 SlotCapacity(entries[i].handle));
38 }
39 412 }
40
41 virtual std::vector<uint64_t>
42 110 BatchAllocAndWrite(const std::vector<WriteEntry>& entries) {
43 110 std::vector<uint64_t> handles;
44
1/2
✓ Branch 2 taken 110 times.
✗ Branch 3 not taken.
110 handles.reserve(entries.size());
45
2/2
✓ Branch 4 taken 384 times.
✓ Branch 5 taken 110 times.
494 for (const auto& entry : entries) {
46
2/4
✓ Branch 1 taken 384 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 384 times.
✗ Branch 5 not taken.
384 handles.push_back(AllocAndWrite(entry.data, entry.data_size));
47 }
48 110 return handles;
49 }
50
51 static constexpr uint64_t kInvalidHandle = UINT64_MAX;
52 };
53