Skip to content

Commit

Permalink
Merge pull request netobserv#128 from ronensc/fix-addif-bug
Browse files Browse the repository at this point in the history
Fix a bug with add_if and scientific notation
  • Loading branch information
ronensc committed Mar 7, 2022
2 parents 39e66f8 + 849941b commit e90ba0a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 2 deletions.
4 changes: 2 additions & 2 deletions pkg/pipeline/transform/transform_network.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,13 @@ func (n *Network) Transform(inputEntry config.GenericMap) config.GenericMap {
outputEntries[rule.Output+"_Matched"] = true
}
case api.TransformNetworkOperationName("AddIf"):
expressionString := fmt.Sprintf("%v%s", outputEntries[rule.Input], rule.Parameters)
expressionString := fmt.Sprintf("val %s", rule.Parameters)
expression, err := govaluate.NewEvaluableExpression(expressionString)
if err != nil {
log.Errorf("Can't evaluate AddIf rule: %+v expression: %v. err %v", rule, expressionString, err)
continue
}
result, evaluateErr := expression.Evaluate(nil)
result, evaluateErr := expression.Evaluate(map[string]interface{}{"val": outputEntries[rule.Input]})
if evaluateErr == nil && result.(bool) {
outputEntries[rule.Output] = outputEntries[rule.Input]
outputEntries[rule.Output+"_Evaluate"] = true
Expand Down
36 changes: 36 additions & 0 deletions pkg/pipeline/transform/transform_network_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -277,3 +277,39 @@ parameters:
require.Equal(t, "10.0.0.0/24", output["match-10.0.*"])
require.NotEqual(t, "10.0.0.0/24", output["match-11.0.*"])
}

func Test_Transform_AddIfScientificNotation(t *testing.T) {
newNetworkTransform := Network{
api.TransformNetwork{
Rules: api.NetworkTransformRules{
api.NetworkTransformRule{
Input: "value",
Output: "bigger_than_10",
Type: "add_if",
Parameters: ">10",
},
api.NetworkTransformRule{
Input: "value",
Output: "smaller_than_10",
Type: "add_if",
Parameters: "<10",
},
},
},
}

var entry config.GenericMap
entry = config.GenericMap{
"value": 1.2345e67,
}
output := newNetworkTransform.Transform(entry)
require.Equal(t, true, output["bigger_than_10_Evaluate"])
require.Equal(t, 1.2345e67, output["bigger_than_10"])

entry = config.GenericMap{
"value": 1.2345e-67,
}
output = newNetworkTransform.Transform(entry)
require.Equal(t, true, output["smaller_than_10_Evaluate"])
require.Equal(t, 1.2345e-67, output["smaller_than_10"])
}

0 comments on commit e90ba0a

Please sign in to comment.