mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-27 20:52:03 +08:00

* fix: pipelines postgres support and multitenancy * fix: minor fixes * fix: address minor comments * fix: rename package pipelinetypes
88 lines
2.1 KiB
Go
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"
|
|
}
|
|
`), ×tampParserOp)
|
|
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)
|
|
|
|
}
|