Filtra eventi watchdog con USN journal
This commit is contained in:
52
tests/test_usn_journal.py
Normal file
52
tests/test_usn_journal.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import struct
|
||||
|
||||
from bakrest.usn_journal import (
|
||||
USN_REASON_BASIC_INFO_CHANGE,
|
||||
USN_REASON_CLOSE,
|
||||
USN_REASON_DATA_EXTEND,
|
||||
USN_REASON_DATA_OVERWRITE,
|
||||
USN_REASON_FILE_CREATE,
|
||||
USN_REASON_RENAME_NEW_NAME,
|
||||
is_meaningful_usn_reason,
|
||||
parse_usn_records,
|
||||
)
|
||||
|
||||
|
||||
def test_usn_reason_filter_accepts_real_data_changes() -> None:
|
||||
assert is_meaningful_usn_reason(USN_REASON_DATA_OVERWRITE)
|
||||
assert is_meaningful_usn_reason(USN_REASON_DATA_EXTEND | USN_REASON_CLOSE)
|
||||
assert is_meaningful_usn_reason(USN_REASON_FILE_CREATE)
|
||||
assert is_meaningful_usn_reason(USN_REASON_RENAME_NEW_NAME)
|
||||
|
||||
|
||||
def test_usn_reason_filter_rejects_metadata_only_changes() -> None:
|
||||
assert not is_meaningful_usn_reason(USN_REASON_BASIC_INFO_CHANGE)
|
||||
assert not is_meaningful_usn_reason(USN_REASON_CLOSE)
|
||||
|
||||
|
||||
def test_parse_usn_record_v2_reason_and_file_reference() -> None:
|
||||
record = bytearray(64)
|
||||
struct.pack_into("<IHH", record, 0, 64, 2, 0)
|
||||
struct.pack_into("<Q", record, 8, 12345)
|
||||
struct.pack_into("<I", record, 40, USN_REASON_DATA_OVERWRITE)
|
||||
|
||||
records = parse_usn_records(bytes(record))
|
||||
|
||||
assert len(records) == 1
|
||||
assert records[0].file_reference_number == 12345
|
||||
assert records[0].reason == USN_REASON_DATA_OVERWRITE
|
||||
|
||||
|
||||
def test_parse_usn_record_v3_reason_and_file_reference() -> None:
|
||||
record = bytearray(80)
|
||||
struct.pack_into("<IHH", record, 0, 80, 3, 0)
|
||||
record[8:24] = (12345).to_bytes(16, "little")
|
||||
struct.pack_into("<I", record, 56, USN_REASON_FILE_CREATE)
|
||||
|
||||
records = parse_usn_records(bytes(record))
|
||||
|
||||
assert len(records) == 1
|
||||
assert records[0].file_reference_number == 12345
|
||||
assert records[0].reason == USN_REASON_FILE_CREATE
|
||||
Reference in New Issue
Block a user