src/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
13 / 13
100.0%
Branches:
30 / 54
55.6%
Functions:
1 / 1
100.0%

storage/kv_engine/engine_selector.h
Line Branch Exec Source
1 #pragma once
2
3 #include <set>
4 #include <stdexcept>
5 #include <string>
6
7 #include "base_kv.h"
8
9 namespace base {
10
11 struct EngineResolved {
12 std::string engine;
13 BaseKVConfig cfg;
14 };
15
16 1112 inline EngineResolved ResolveEngine(BaseKVConfig cfg) {
17 1112 auto& j = cfg.json_config_;
18
19
3/4
✓ Branch 1 taken 1112 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1110 times.
1112 if (j.contains("external_engine_type")) {
20
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 throw std::invalid_argument(
21 4 "external_engine_type is removed; use engine_type");
22 }
23 const std::string engine =
24
1/2
✓ Branch 1 taken 1110 times.
✗ Branch 2 not taken.
1110 j.contains("engine_type")
25
1/2
✓ Branch 1 taken 1072 times.
✗ Branch 2 not taken.
1072 ? j.at("engine_type").get<std::string>()
26
6/10
✓ Branch 0 taken 1072 times.
✓ Branch 1 taken 38 times.
✓ Branch 3 taken 1072 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 38 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 38 times.
✓ Branch 10 taken 1072 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
2182 : "KVEngineComposite";
27 static const std::set<std::string> kKnownEngines = {
28 "KVEngineComposite",
29 "KVEnginePetKV",
30 "KVEngineDETable",
31 "KVEngineFasterKV",
32 "KVEngineHPSHashMap",
33 "KVEngineHPSRocksDB",
34
12/24
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 1102 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 8 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 8 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 8 times.
✗ Branch 28 not taken.
✓ Branch 31 taken 8 times.
✗ Branch 32 not taken.
✓ Branch 36 taken 48 times.
✓ Branch 37 taken 8 times.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
1158 };
35
3/4
✓ Branch 1 taken 1110 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1108 times.
1110 if (!kKnownEngines.count(engine)) {
36
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
2 throw std::invalid_argument("unknown engine_type: " + engine);
37 }
38
39
1/2
✓ Branch 1 taken 1108 times.
✗ Branch 2 not taken.
2216 return EngineResolved{engine, std::move(cfg)};
40 1110 }
41
42 } // namespace base
43