Directory: | cvmfs/ |
---|---|
File: | cvmfs/catalog_counters.cc |
Date: | 2025-05-11 02:35:43 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 48 | 53 | 90.6% |
Branches: | 12 | 14 | 85.7% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | /** | ||
2 | * This file is part of the CernVM File System. | ||
3 | */ | ||
4 | |||
5 | #include "catalog_counters.h" | ||
6 | |||
7 | #include "directory_entry.h" | ||
8 | #include "util/exception.h" | ||
9 | |||
10 | namespace catalog { | ||
11 | |||
12 | 711 | void DeltaCounters::ApplyDelta(const DirectoryEntry &dirent, const int delta) { | |
13 |
2/2✓ Branch 1 taken 450 times.
✓ Branch 2 taken 261 times.
|
711 | if (dirent.IsRegular()) { |
14 | 450 | self.regular_files += delta; | |
15 | 450 | self.file_size += delta * dirent.size(); | |
16 |
2/2✓ Branch 1 taken 20 times.
✓ Branch 2 taken 430 times.
|
450 | if (dirent.IsChunkedFile()) { |
17 | 20 | self.chunked_files += delta; | |
18 | 20 | self.chunked_file_size += delta * dirent.size(); | |
19 | } | ||
20 |
2/2✓ Branch 1 taken 3 times.
✓ Branch 2 taken 447 times.
|
450 | if (dirent.IsExternalFile()) { |
21 | 3 | self.externals += delta; | |
22 | 3 | self.external_file_size += delta * dirent.size(); | |
23 | } | ||
24 |
2/2✓ Branch 1 taken 22 times.
✓ Branch 2 taken 239 times.
|
261 | } else if (dirent.IsLink()) { |
25 | 22 | self.symlinks += delta; | |
26 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 235 times.
|
239 | } else if (dirent.IsSpecial()) { |
27 | 4 | self.specials += delta; | |
28 |
1/2✓ Branch 1 taken 235 times.
✗ Branch 2 not taken.
|
235 | } else if (dirent.IsDirectory()) { |
29 | 235 | self.directories += delta; | |
30 | } else { | ||
31 | ✗ | PANIC(NULL); | |
32 | } | ||
33 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 711 times.
|
711 | if (dirent.HasXattrs()) { |
34 | ✗ | self.xattrs += delta; | |
35 | } | ||
36 | 711 | } | |
37 | |||
38 | |||
39 | 41 | void DeltaCounters::PopulateToParent(DeltaCounters *parent) const { | |
40 | 41 | parent->subtree.Add(self); | |
41 | 41 | parent->subtree.Add(subtree); | |
42 | 41 | } | |
43 | |||
44 | ✗ | void DeltaCounters::RemoveFromSubtree(const DeltaCounters &child) { | |
45 | ✗ | subtree.Subtract(child.self); | |
46 | ✗ | subtree.Subtract(child.subtree); | |
47 | } | ||
48 | |||
49 | |||
50 | 4 | void Counters::ApplyDelta(const DeltaCounters &delta) { | |
51 | 4 | self.Add(delta.self); | |
52 | 4 | subtree.Add(delta.subtree); | |
53 | 4 | } | |
54 | |||
55 | |||
56 | 1 | void Counters::AddAsSubtree(DeltaCounters *delta) const { | |
57 | 1 | delta->subtree.Add(self); | |
58 | 1 | delta->subtree.Add(subtree); | |
59 | 1 | } | |
60 | |||
61 | 4 | void Counters::MergeIntoParent(DeltaCounters *parent_delta) const { | |
62 | 4 | parent_delta->self.Add(self); | |
63 | 4 | parent_delta->subtree.Subtract(self); | |
64 | 4 | } | |
65 | |||
66 | |||
67 | 62 | Counters_t Counters::GetSelfEntries() const { | |
68 | 62 | return self.regular_files + self.symlinks + self.specials + self.directories; | |
69 | } | ||
70 | |||
71 | |||
72 | 30 | Counters_t Counters::GetSubtreeEntries() const { | |
73 | 30 | return subtree.regular_files + subtree.symlinks + subtree.specials + | |
74 | 30 | subtree.directories; | |
75 | } | ||
76 | |||
77 | |||
78 | 28 | Counters_t Counters::GetAllEntries() const { | |
79 | 28 | return GetSelfEntries() + GetSubtreeEntries(); | |
80 | } | ||
81 | |||
82 | |||
83 | 7 | DeltaCounters Counters::Diff(const Counters &from, const Counters &to) { | |
84 | 7 | DeltaCounters result; | |
85 | 7 | result.self.Add(to.self); | |
86 | 7 | result.subtree.Add(to.subtree); | |
87 | 7 | result.self.Subtract(from.self); | |
88 | 7 | result.subtree.Subtract(from.subtree); | |
89 | 7 | return result; | |
90 | } | ||
91 | |||
92 | } // namespace catalog | ||
93 |