44import pytest
55
66from event import Event , EventType , Process
7- from utils import get_metric_value
87
98
10- def get_inode_removed_count (fact_config ):
11- """
12- Query Prometheus metrics to get the count of removed inodes.
13-
14- Args:
15- fact_config: The fact configuration tuple (config dict, config file path).
16-
17- Returns:
18- The current value of host_scanner_scan{label="InodeRemoved"} metric.
19- """
20- value = get_metric_value (fact_config , "host_scanner_scan" , {"label" : "InodeRemoved" })
21- return int (value ) if value is not None else 0
22-
23-
24- def get_kernel_rmdir_processed (fact_config ):
25- """
26- Query Prometheus metrics to get the count of processed (non-ignored) rmdir events.
27-
28- Args:
29- fact_config: The fact configuration tuple (config dict, config file path).
30-
31- Returns:
32- The difference between Total and Ignored kernel_path_rmdir_events.
33- """
34- total_str = get_metric_value (fact_config , "kernel_path_rmdir_events" , {"label" : "Total" })
35- ignored_str = get_metric_value (fact_config , "kernel_path_rmdir_events" , {"label" : "Ignored" })
9+ def get_inode_removed_count (metrics ):
10+ return metrics .snapshot ().get ("host_scanner_scan" , label = "InodeRemoved" )
3611
37- total = int (total_str ) if total_str is not None else 0
38- ignored = int (ignored_str ) if ignored_str is not None else 0
3912
13+ def get_kernel_rmdir_processed (metrics ):
14+ ss = metrics .snapshot ()
15+ total = ss .get ("kernel_path_rmdir_events" , label = "Total" )
16+ ignored = ss .get ("kernel_path_rmdir_events" , label = "Ignored" )
4017 return total - ignored
4118
4219
@@ -46,7 +23,7 @@ def get_kernel_rmdir_processed(fact_config):
4623 pytest .param ('файл' , id = 'Cyrillic' ),
4724 pytest .param ('日本語' , id = 'Japanese' ),
4825])
49- def test_rmdir_empty (monitored_dir , server , fact_config , dirname ):
26+ def test_rmdir_empty (monitored_dir , server , metrics , dirname ):
5027 """
5128 Tests that removing an empty directory properly cleans up inode tracking.
5229
@@ -60,14 +37,14 @@ def test_rmdir_empty(monitored_dir, server, fact_config, dirname):
6037 Args:
6138 monitored_dir: Temporary directory path for creating the test directory.
6239 server: The server instance to communicate with.
63- fact_config : The fact configuration .
40+ metrics : The metrics client fixture .
6441 dirname: Directory name to test (including UTF-8 variants).
6542 """
6643 process = Process .from_proc ()
6744
6845 # Get baseline metric counts
69- initial_inode_removed = get_inode_removed_count (fact_config )
70- initial_kernel_rmdir = get_kernel_rmdir_processed (fact_config )
46+ initial_inode_removed = get_inode_removed_count (metrics )
47+ initial_kernel_rmdir = get_kernel_rmdir_processed (metrics )
7148
7249 # Create a directory
7350 test_dir = os .path .join (monitored_dir , dirname )
@@ -94,7 +71,7 @@ def test_rmdir_empty(monitored_dir, server, fact_config, dirname):
9471 server .wait_events ([e2 ])
9572
9673 # Check that file deletion incremented the metric by exactly 1
97- count_after_file = get_inode_removed_count (fact_config )
74+ count_after_file = get_inode_removed_count (metrics )
9875 file_delta = count_after_file - initial_inode_removed
9976 assert file_delta == 1 , \
10077 f"Expected exactly 1 inode removed for file deletion, got { file_delta } "
@@ -103,8 +80,8 @@ def test_rmdir_empty(monitored_dir, server, fact_config, dirname):
10380 os .rmdir (test_dir )
10481
10582 # Check metrics after directory deletion
106- final_inode_removed = get_inode_removed_count (fact_config )
107- final_kernel_rmdir = get_kernel_rmdir_processed (fact_config )
83+ final_inode_removed = get_inode_removed_count (metrics )
84+ final_kernel_rmdir = get_kernel_rmdir_processed (metrics )
10885
10986 inode_delta = final_inode_removed - initial_inode_removed
11087 kernel_delta = final_kernel_rmdir - initial_kernel_rmdir
@@ -115,7 +92,7 @@ def test_rmdir_empty(monitored_dir, server, fact_config, dirname):
11592 f"Expected exactly 1 kernel rmdir event processed, got { kernel_delta } "
11693
11794
118- def test_rmdir_recursive (monitored_dir , server , fact_config ):
95+ def test_rmdir_recursive (monitored_dir , server , metrics ):
11996 """
12097 Tests that removing a directory tree recursively cleans up all inode tracking.
12198
@@ -130,13 +107,13 @@ def test_rmdir_recursive(monitored_dir, server, fact_config):
130107 Args:
131108 monitored_dir: Temporary directory path for creating test directories.
132109 server: The server instance to communicate with.
133- fact_config : The fact configuration .
110+ metrics : The metrics client fixture .
134111 """
135112 process = Process .from_proc ()
136113
137114 # Get baseline metric counts
138- initial_inode_removed = get_inode_removed_count (fact_config )
139- initial_kernel_rmdir = get_kernel_rmdir_processed (fact_config )
115+ initial_inode_removed = get_inode_removed_count (metrics )
116+ initial_kernel_rmdir = get_kernel_rmdir_processed (metrics )
140117
141118 # Create nested directories
142119 level1 = os .path .join (monitored_dir , 'level1' )
@@ -186,8 +163,8 @@ def test_rmdir_recursive(monitored_dir, server, fact_config):
186163 server .wait_events (unlink_events )
187164
188165 # Check that all inodes and kernel events were tracked
189- final_inode_removed = get_inode_removed_count (fact_config )
190- final_kernel_rmdir = get_kernel_rmdir_processed (fact_config )
166+ final_inode_removed = get_inode_removed_count (metrics )
167+ final_kernel_rmdir = get_kernel_rmdir_processed (metrics )
191168
192169 inode_delta = final_inode_removed - initial_inode_removed
193170 kernel_delta = final_kernel_rmdir - initial_kernel_rmdir
@@ -198,7 +175,7 @@ def test_rmdir_recursive(monitored_dir, server, fact_config):
198175 f"Expected exactly 3 kernel rmdir events processed, got { kernel_delta } "
199176
200177
201- def test_rmdir_ignored (monitored_dir , ignored_dir , server , fact_config ):
178+ def test_rmdir_ignored (monitored_dir , ignored_dir , server , metrics ):
202179 """
203180 Tests that directories removed outside monitored paths don't affect tracking.
204181
@@ -208,13 +185,13 @@ def test_rmdir_ignored(monitored_dir, ignored_dir, server, fact_config):
208185 monitored_dir: Temporary directory path that is monitored.
209186 ignored_dir: Temporary directory path that is not monitored.
210187 server: The server instance to communicate with.
211- fact_config : The fact configuration .
188+ metrics : The metrics client fixture .
212189 """
213190 process = Process .from_proc ()
214191
215192 # Get baseline metric counts
216- initial_inode_removed = get_inode_removed_count (fact_config )
217- initial_kernel_rmdir = get_kernel_rmdir_processed (fact_config )
193+ initial_inode_removed = get_inode_removed_count (metrics )
194+ initial_kernel_rmdir = get_kernel_rmdir_processed (metrics )
218195
219196 # Create directory in ignored path
220197 ignored_subdir = os .path .join (ignored_dir , 'ignored_subdir' )
@@ -228,8 +205,8 @@ def test_rmdir_ignored(monitored_dir, ignored_dir, server, fact_config):
228205 os .rmdir (ignored_subdir )
229206
230207 # Metrics should not have changed
231- inode_after_ignored = get_inode_removed_count (fact_config )
232- kernel_after_ignored = get_kernel_rmdir_processed (fact_config )
208+ inode_after_ignored = get_inode_removed_count (metrics )
209+ kernel_after_ignored = get_kernel_rmdir_processed (metrics )
233210 assert inode_after_ignored == initial_inode_removed , \
234211 f"Ignored path operations should not increment inode_removed metric"
235212 assert kernel_after_ignored == initial_kernel_rmdir , \
@@ -260,8 +237,8 @@ def test_rmdir_ignored(monitored_dir, ignored_dir, server, fact_config):
260237 server .wait_events (deletion_events )
261238
262239 # Metrics should have incremented by exactly 2 inodes and 1 kernel rmdir
263- final_inode_removed = get_inode_removed_count (fact_config )
264- final_kernel_rmdir = get_kernel_rmdir_processed (fact_config )
240+ final_inode_removed = get_inode_removed_count (metrics )
241+ final_kernel_rmdir = get_kernel_rmdir_processed (metrics )
265242
266243 inode_delta = final_inode_removed - initial_inode_removed
267244 kernel_delta = final_kernel_rmdir - initial_kernel_rmdir
@@ -272,7 +249,7 @@ def test_rmdir_ignored(monitored_dir, ignored_dir, server, fact_config):
272249 f"Expected exactly 1 kernel rmdir event processed, got { kernel_delta } "
273250
274251
275- def test_rmdir_with_parent_inode (monitored_dir , server , fact_config ):
252+ def test_rmdir_with_parent_inode (monitored_dir , server , metrics ):
276253 """
277254 Tests that directory deletion properly handles parent inode relationships.
278255
@@ -282,13 +259,13 @@ def test_rmdir_with_parent_inode(monitored_dir, server, fact_config):
282259 Args:
283260 monitored_dir: Temporary directory path for creating test directories.
284261 server: The server instance to communicate with.
285- fact_config : The fact configuration .
262+ metrics : The metrics client fixture .
286263 """
287264 process = Process .from_proc ()
288265
289266 # Get baseline metric counts
290- initial_inode_removed = get_inode_removed_count (fact_config )
291- initial_kernel_rmdir = get_kernel_rmdir_processed (fact_config )
267+ initial_inode_removed = get_inode_removed_count (metrics )
268+ initial_kernel_rmdir = get_kernel_rmdir_processed (metrics )
292269
293270 # Create a subdirectory
294271 subdir = os .path .join (monitored_dir , 'subdir' )
@@ -325,8 +302,8 @@ def test_rmdir_with_parent_inode(monitored_dir, server, fact_config):
325302 server .wait_events (deletion_events )
326303
327304 # Check metrics incremented (file + subdir)
328- inode_after_subdir = get_inode_removed_count (fact_config )
329- kernel_after_subdir = get_kernel_rmdir_processed (fact_config )
305+ inode_after_subdir = get_inode_removed_count (metrics )
306+ kernel_after_subdir = get_kernel_rmdir_processed (metrics )
330307
331308 inode_delta_subdir = inode_after_subdir - initial_inode_removed
332309 kernel_delta_subdir = kernel_after_subdir - initial_kernel_rmdir
@@ -356,8 +333,8 @@ def test_rmdir_with_parent_inode(monitored_dir, server, fact_config):
356333
357334 # Final metric check: should be 3 total inodes (test_file, subdir, new_file)
358335 # and 1 total kernel rmdir (subdir)
359- final_inode_removed = get_inode_removed_count (fact_config )
360- final_kernel_rmdir = get_kernel_rmdir_processed (fact_config )
336+ final_inode_removed = get_inode_removed_count (metrics )
337+ final_kernel_rmdir = get_kernel_rmdir_processed (metrics )
361338
362339 inode_total_delta = final_inode_removed - initial_inode_removed
363340 kernel_total_delta = final_kernel_rmdir - initial_kernel_rmdir
0 commit comments