Directory: | cvmfs/ |
---|---|
File: | cvmfs/catalog_counters.cc |
Date: | 2025-08-31 02:39:21 |
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 | 14283 | void DeltaCounters::ApplyDelta(const DirectoryEntry &dirent, const int delta) { | |
13 |
2/2✓ Branch 1 taken 9304 times.
✓ Branch 2 taken 4979 times.
|
14283 | if (dirent.IsRegular()) { |
14 | 9304 | self.regular_files += delta; | |
15 | 9304 | self.file_size += delta * dirent.size(); | |
16 |
2/2✓ Branch 1 taken 66 times.
✓ Branch 2 taken 9238 times.
|
9304 | if (dirent.IsChunkedFile()) { |
17 | 66 | self.chunked_files += delta; | |
18 | 66 | self.chunked_file_size += delta * dirent.size(); | |
19 | } | ||
20 |
2/2✓ Branch 1 taken 12 times.
✓ Branch 2 taken 9292 times.
|
9304 | if (dirent.IsExternalFile()) { |
21 | 12 | self.externals += delta; | |
22 | 12 | self.external_file_size += delta * dirent.size(); | |
23 | } | ||
24 |
2/2✓ Branch 1 taken 195 times.
✓ Branch 2 taken 4784 times.
|
4979 | } else if (dirent.IsLink()) { |
25 | 195 | self.symlinks += delta; | |
26 |
2/2✓ Branch 1 taken 16 times.
✓ Branch 2 taken 4768 times.
|
4784 | } else if (dirent.IsSpecial()) { |
27 | 16 | self.specials += delta; | |
28 |
1/2✓ Branch 1 taken 4768 times.
✗ Branch 2 not taken.
|
4768 | } else if (dirent.IsDirectory()) { |
29 | 4768 | self.directories += delta; | |
30 | } else { | ||
31 | ✗ | PANIC(NULL); | |
32 | } | ||
33 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 14283 times.
|
14283 | if (dirent.HasXattrs()) { |
34 | ✗ | self.xattrs += delta; | |
35 | } | ||
36 | 14283 | } | |
37 | |||
38 | |||
39 | 858 | void DeltaCounters::PopulateToParent(DeltaCounters *parent) const { | |
40 | 858 | parent->subtree.Add(self); | |
41 | 858 | parent->subtree.Add(subtree); | |
42 | 858 | } | |
43 | |||
44 | ✗ | void DeltaCounters::RemoveFromSubtree(const DeltaCounters &child) { | |
45 | ✗ | subtree.Subtract(child.self); | |
46 | ✗ | subtree.Subtract(child.subtree); | |
47 | } | ||
48 | |||
49 | |||
50 | 76 | void Counters::ApplyDelta(const DeltaCounters &delta) { | |
51 | 76 | self.Add(delta.self); | |
52 | 76 | subtree.Add(delta.subtree); | |
53 | 76 | } | |
54 | |||
55 | |||
56 | 4 | void Counters::AddAsSubtree(DeltaCounters *delta) const { | |
57 | 4 | delta->subtree.Add(self); | |
58 | 4 | delta->subtree.Add(subtree); | |
59 | 4 | } | |
60 | |||
61 | 76 | void Counters::MergeIntoParent(DeltaCounters *parent_delta) const { | |
62 | 76 | parent_delta->self.Add(self); | |
63 | 76 | parent_delta->subtree.Subtract(self); | |
64 | 76 | } | |
65 | |||
66 | |||
67 | 916 | Counters_t Counters::GetSelfEntries() const { | |
68 | 916 | return self.regular_files + self.symlinks + self.specials + self.directories; | |
69 | } | ||
70 | |||
71 | |||
72 | 391 | Counters_t Counters::GetSubtreeEntries() const { | |
73 | 391 | return subtree.regular_files + subtree.symlinks + subtree.specials | |
74 | 391 | + subtree.directories; | |
75 | } | ||
76 | |||
77 | |||
78 | 383 | Counters_t Counters::GetAllEntries() const { | |
79 | 383 | return GetSelfEntries() + GetSubtreeEntries(); | |
80 | } | ||
81 | |||
82 | |||
83 | 57 | DeltaCounters Counters::Diff(const Counters &from, const Counters &to) { | |
84 | 57 | DeltaCounters result; | |
85 | 57 | result.self.Add(to.self); | |
86 | 57 | result.subtree.Add(to.subtree); | |
87 | 57 | result.self.Subtract(from.self); | |
88 | 57 | result.subtree.Subtract(from.subtree); | |
89 | 57 | return result; | |
90 | } | ||
91 | |||
92 | } // namespace catalog | ||
93 |