From 73553743f30d88b1e07c4656b45b2364411e398f Mon Sep 17 00:00:00 2001 From: Adi Date: Mon, 16 Jun 2025 19:45:33 +0300 Subject: [PATCH 1/3] Fixed bug were record_modifier.py could not find self._field_types --- flow/record/base.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flow/record/base.py b/flow/record/base.py index 47945d5c..c056961e 100644 --- a/flow/record/base.py +++ b/flow/record/base.py @@ -266,6 +266,9 @@ def __init__(self, name: str, records: list[Record | GroupedRecord]): self._desc = RecordDescriptor(self.name, [(f.typename, f.name) for f in self.flat_fields]) + # _field_types to maintain compatibility with RecordDescriptor + self._field_types = self._desc.recordType._field_types + def get_record_by_type(self, type_name: str) -> Record | None: """ Get record in a GroupedRecord by type_name. From 49b9001294c240149f7a76412cd9adf99f9f6958 Mon Sep 17 00:00:00 2001 From: Adi Date: Wed, 18 Jun 2025 14:42:53 +0300 Subject: [PATCH 2/3] Added regression test --- flow/record/base.py | 2 +- tests/test_record.py | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/flow/record/base.py b/flow/record/base.py index c056961e..6a54fab4 100644 --- a/flow/record/base.py +++ b/flow/record/base.py @@ -262,7 +262,7 @@ def __init__(self, name: str, records: list[Record | GroupedRecord]): self.fieldname_to_record[fname] = rec if fname not in required_fields: self.flat_fields.append(field) - # flat descriptor to maintain compatibility with Record + # Flat descriptor to maintain compatibility with Record self._desc = RecordDescriptor(self.name, [(f.typename, f.name) for f in self.flat_fields]) diff --git a/tests/test_record.py b/tests/test_record.py index 88360a43..ce3c8819 100644 --- a/tests/test_record.py +++ b/tests/test_record.py @@ -151,6 +151,17 @@ def test_grouped_record() -> None: ("string", "hello"), ], ) + excpected_field_types = { + "hello": fieldtypes.string, + "world": fieldtypes.string, + "count": fieldtypes.uint32, + "assignee": fieldtypes.string, + "profile": fieldtypes.string, + "_source": fieldtypes.string, + "_classification": fieldtypes.string, + "_generated": fieldtypes.datetime, + "_version": fieldtypes.varint, + } test_record = TestRecord("a", "b", 12345) meta_record = WQMetaRecord("me", "this is a test", "other hello") @@ -176,7 +187,7 @@ def test_grouped_record() -> None: assert len(grouped.records) == 2 - # test grouped._asdict + # Test grouped._asdict rdict = grouped._asdict() assert {"hello", "world", "count", "assignee", "profile"} <= set(rdict) @@ -185,6 +196,10 @@ def test_grouped_record() -> None: assert rdict["profile"] == "omg" assert rdict["count"] == 12345 + # Test gourped._field_types + assert grouped._field_types + assert grouped._field_types == excpected_field_types + def test_grouped_records_packing(tmp_path: Path) -> None: RecordA = RecordDescriptor( From b217d67677a4adc02053fa052e4086adb9f24804 Mon Sep 17 00:00:00 2001 From: Adi Date: Thu, 19 Jun 2025 12:14:23 +0300 Subject: [PATCH 3/3] Fixed typos --- tests/test_record.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_record.py b/tests/test_record.py index ce3c8819..00c471fb 100644 --- a/tests/test_record.py +++ b/tests/test_record.py @@ -151,7 +151,7 @@ def test_grouped_record() -> None: ("string", "hello"), ], ) - excpected_field_types = { + expected_field_types = { "hello": fieldtypes.string, "world": fieldtypes.string, "count": fieldtypes.uint32, @@ -196,9 +196,9 @@ def test_grouped_record() -> None: assert rdict["profile"] == "omg" assert rdict["count"] == 12345 - # Test gourped._field_types + # Test grouped._field_types assert grouped._field_types - assert grouped._field_types == excpected_field_types + assert grouped._field_types == expected_field_types def test_grouped_records_packing(tmp_path: Path) -> None: