GCC Code Coverage Report


Directory: src/
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 13 / 0 / 13
Functions: 100.0% 1 / 0 / 1
Branches: 55.8% 29 / 0 / 52

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 1064 inline EngineResolved ResolveEngine(BaseKVConfig cfg) {
17 1064 auto& j = cfg.json_config_;
18
19
3/4
✓ Branch 1 taken 1064 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1062 times.
1064 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 1062 times.
✗ Branch 2 not taken.
1062 j.contains("engine_type")
25
1/2
✓ Branch 1 taken 1028 times.
✗ Branch 2 not taken.
1028 ? j.at("engine_type").get<std::string>()
26
6/10
✓ Branch 0 taken 1028 times.
✓ Branch 1 taken 34 times.
✓ Branch 3 taken 1028 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 34 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 34 times.
✓ Branch 10 taken 1028 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
2090 : "KVEngineComposite";
27 static const std::set<std::string> kKnownEngines = {
28 "KVEngineComposite",
29 "KVEnginePetKV",
30 "KVEngineFasterKV",
31 "KVEngineHPSHashMap",
32 "KVEngineHPSRocksDB",
33
11/22
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 1054 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 32 taken 40 times.
✓ Branch 33 taken 8 times.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
1102 };
34
3/4
✓ Branch 1 taken 1062 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1060 times.
1062 if (!kKnownEngines.count(engine)) {
35
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);
36 }
37
38
1/2
✓ Branch 1 taken 1060 times.
✗ Branch 2 not taken.
2120 return EngineResolved{engine, std::move(cfg)};
39 1062 }
40
41 } // namespace base
42