Nityananda Gohain 1dfebed93a
fix: pipelines postgres support and multitenancy (#7371)
* fix: pipelines postgres support and multitenancy

* fix: minor fixes

* fix: address minor comments

* fix: rename package pipelinetypes
2025-03-24 10:17:12 +05:30

88 lines
2.1 KiB
Go

package logparsingpipeline
import (
"context"
"encoding/json"
"strings"
"testing"
"time"
"github.com/SigNoz/signoz/pkg/query-service/model"
v3 "github.com/SigNoz/signoz/pkg/query-service/model/v3"
"github.com/SigNoz/signoz/pkg/types/pipelinetypes"
"github.com/stretchr/testify/require"
)
func TestTimestampParsingProcessor(t *testing.T) {
require := require.New(t)
testPipelines := []pipelinetypes.GettablePipeline{
{
StoreablePipeline: pipelinetypes.StoreablePipeline{
OrderID: 1,
Name: "pipeline1",
Alias: "pipeline1",
Enabled: true,
},
Filter: &v3.FilterSet{
Operator: "AND",
Items: []v3.FilterItem{
{
Key: v3.AttributeKey{
Key: "method",
DataType: v3.AttributeKeyDataTypeString,
Type: v3.AttributeKeyTypeTag,
},
Operator: "=",
Value: "GET",
},
},
},
Config: []pipelinetypes.PipelineOperator{},
},
}
var timestampParserOp pipelinetypes.PipelineOperator
err := json.Unmarshal([]byte(`
{
"orderId": 1,
"enabled": true,
"type": "time_parser",
"name": "Test timestamp parser",
"id": "test-timestamp-parser",
"parse_from": "attributes.test_timestamp",
"layout_type": "strptime",
"layout": "%Y-%m-%dT%H:%M:%S.%f%z"
}
`), &timestampParserOp)
require.Nil(err)
testPipelines[0].Config = append(testPipelines[0].Config, timestampParserOp)
testTimestampStr := "2023-11-27T12:03:28.239907+0530"
testLog := makeTestSignozLog(
"test log",
map[string]interface{}{
"method": "GET",
"test_timestamp": testTimestampStr,
},
)
result, collectorWarnAndErrorLogs, err := SimulatePipelinesProcessing(
context.Background(),
testPipelines,
[]model.SignozLog{
testLog,
},
)
require.Nil(err)
require.Equal(1, len(result))
require.Equal(0, len(collectorWarnAndErrorLogs), strings.Join(collectorWarnAndErrorLogs, "\n"))
processed := result[0]
expectedTimestamp, err := time.Parse("2006-01-02T15:04:05.999999-0700", testTimestampStr)
require.Nil(err)
require.Equal(uint64(expectedTimestamp.UnixNano()), processed.Timestamp)
}