Skip to content

Commit

Permalink
fix bug generic adder (#540)
Browse files Browse the repository at this point in the history
  • Loading branch information
ekneg54 authored Mar 14, 2024
1 parent 4380901 commit 7b5bc82
Show file tree
Hide file tree
Showing 4 changed files with 216 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

### Bugfix

* fix `generic_adder` not creating new field from type `list`

## v10.0.3
### Bugfix
* fix loading of configuration inside the `AutoRuleCorpusTester` for `logprep test integration`
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Calculator\n",
"\n",
"This presentations goal it to introduce the features of the `Calculator` and how to configure it."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The challenge\n",
"\n",
"I want calculate with field values."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"from this:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"document = {\n",
" 'message': {\n",
" \"time_in_ms\": \"bla\",\n",
" \"tags\": [\"hello\"]\n",
" }\n",
" }"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"to this:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"expected = {\n",
" 'message': {\n",
" \"time_in_ms\": \"bla\",\n",
" \"tags\": [\"hello\", \"new\"]\n",
" }\n",
" }"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create rule and processor"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"create the rule:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"create the processor config:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"processor_config = {\n",
" \"almighty generic adder\":{ \n",
" \"type\": \"generic_adder\",\n",
" \"specific_rules\": [{\"filter\": \"*\", \"generic_adder\": {\"extend_target_list\": True, \"add\": {\"message.tags\": \"New\"}} }],\n",
" \"generic_rules\": [],\n",
" }\n",
" }"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"create the processor with the factory:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"generic_adder"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from unittest import mock\n",
"from logprep.factory import Factory\n",
"\n",
"mock_logger = mock.MagicMock()\n",
"calculator = Factory.create(processor_config, mock_logger)\n",
"calculator"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Process event"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"before: {'message': {'time_in_ms': 'bla', 'tags': ['hello']}}\n",
"after: {'message': {'time_in_ms': 'bla', 'tags': ['hello', 'New']}}\n",
"False\n"
]
}
],
"source": [
"from copy import deepcopy\n",
"mydocument = deepcopy(document)\n",
"\n",
"\n",
"print(f\"before: {mydocument}\")\n",
"calculator.process(mydocument)\n",
"print(f\"after: {mydocument}\")\n",
"print(mydocument == expected)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.11.0 ('.venv': venv)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.7"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "586280540a85d3e21edc698fe7b86af2848b9b02644e6c22463da25c40a3f1be"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
4 changes: 2 additions & 2 deletions logprep/processor/generic_adder/rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@

from attrs import define, field, validators

from logprep.processor.base.rule import Rule, InvalidRuleDefinitionError
from logprep.processor.base.rule import InvalidRuleDefinitionError, Rule
from logprep.processor.field_manager.rule import FieldManagerRule
from logprep.util.getter import GetterFactory

Expand All @@ -119,7 +119,7 @@ class Config(Rule.Config):
add: dict = field(
validator=validators.deep_mapping(
key_validator=validators.instance_of(str),
value_validator=validators.instance_of((str, bool)),
value_validator=validators.instance_of((str, bool, list)),
),
default={},
)
Expand Down
13 changes: 13 additions & 0 deletions tests/unit/processor/generic_adder/test_generic_adder.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,19 @@ class TestGenericAdder(BaseProcessorTestCase):
"dotted": {"added": {"field": "yet_another_value"}},
},
),
(
"Extend list field with 'extend_target_list' enabled",
{
"filter": "*",
"generic_adder": {
"add": {
"some_added_field": ["some value"],
},
},
},
{"extend_generic_test": "Test"},
{"extend_generic_test": "Test", "some_added_field": ["some value"]},
),
]

failure_test_cases = [ # testcase, rule, event, expected, error_message
Expand Down

0 comments on commit 7b5bc82

Please sign in to comment.