Skip to content

Commit

Permalink
Separate metrika-streaming protoparser_test
Browse files Browse the repository at this point in the history
Preparation for archive-export test.

Move streaming test `.go` for separated file and its data to folder
commit_hash:e9a831323c5a57a0b5e9973afb1b37afdb0f5319
  • Loading branch information
boooec committed Feb 21, 2025
1 parent d51b894 commit 7b304a4
Show file tree
Hide file tree
Showing 8 changed files with 262 additions and 254 deletions.
9 changes: 5 additions & 4 deletions .mapping.json
Original file line number Diff line number Diff line change
Expand Up @@ -1106,14 +1106,15 @@
"pkg/parsers/registry/protobuf/parser_config_proto_common.go":"transfer_manager/go/pkg/parsers/registry/protobuf/parser_config_proto_common.go",
"pkg/parsers/registry/protobuf/parser_config_proto_lb.go":"transfer_manager/go/pkg/parsers/registry/protobuf/parser_config_proto_lb.go",
"pkg/parsers/registry/protobuf/parser_proto.go":"transfer_manager/go/pkg/parsers/registry/protobuf/parser_proto.go",
"pkg/parsers/registry/protobuf/protoparser/gotest/extract_message.desc":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/extract_message.desc",
"pkg/parsers/registry/protobuf/protoparser/gotest/metrika-streaming-data/metrika_cloud_export_hit_log.desc":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/metrika-streaming-data/metrika_cloud_export_hit_log.desc",
"pkg/parsers/registry/protobuf/protoparser/gotest/metrika-streaming-data/metrika_cloud_export_hit_log.proto":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/metrika-streaming-data/metrika_cloud_export_hit_log.proto",
"pkg/parsers/registry/protobuf/protoparser/gotest/metrika-streaming-data/metrika_cloud_export_hit_log_data.bin":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/metrika-streaming-data/metrika_cloud_export_hit_log_data.bin",
"pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples",
"pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples/extract_message.desc":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples/extract_message.desc",
"pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples/metrika_cloud_export_hit_log.desc":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples/metrika_cloud_export_hit_log.desc",
"pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples/metrika_cloud_export_hit_log.proto":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples/metrika_cloud_export_hit_log.proto",
"pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples/metrika_cloud_export_hit_log_data.bin":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples/metrika_cloud_export_hit_log_data.bin",
"pkg/parsers/registry/protobuf/protoparser/gotest/prototest":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/prototest",
"pkg/parsers/registry/protobuf/protoparser/gotest/prototest/std_data_types.pb.go":"",
"pkg/parsers/registry/protobuf/protoparser/gotest/prototest/std_data_types.proto":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/prototest/std_data_types.proto",
"pkg/parsers/registry/protobuf/protoparser/metrika_streaming_data_test.go":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/metrika_streaming_data_test.go",
"pkg/parsers/registry/protobuf/protoparser/proto_parser.go":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/proto_parser.go",
"pkg/parsers/registry/protobuf/protoparser/proto_parser_config.go":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/proto_parser_config.go",
"pkg/parsers/registry/protobuf/protoparser/proto_parser_config_test.go":"transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/proto_parser_config_test.go",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
package protoparser

import (
"fmt"
"testing"

"github.com/doublecloud/transfer/pkg/abstract"
"github.com/doublecloud/transfer/pkg/parsers"
"github.com/doublecloud/transfer/pkg/parsers/registry/protobuf/protoscanner"
"github.com/stretchr/testify/require"
)

func TestDoCloudStreamingExportHits(t *testing.T) {
testCases := getCloudStreamingExportHitsTestCases(t)
pMsg := parsers.Message{
Offset: 1,
SeqNo: 1,
Value: protoSampleContent(t, "metrika-streaming-data/metrika_cloud_export_hit_log_data.bin"),
}

for i, test := range testCases {
t.Run(fmt.Sprintf("case_%d", i), func(t *testing.T) {
par, err := NewProtoParser(&test.conf, getSourceStatsMock())
require.NoError(t, err)

actual := par.Do(pMsg, abstract.NewPartition("", 0))

unparsed := parsers.ExtractUnparsed(actual)
if len(unparsed) > 0 {
require.FailNow(t, "unexpected unparsed items", unparsed)
}

checkColsEqual(t, actual)

for _, item := range actual {
require.Equal(t, test.colsLen, len(item.ColumnNames))
}
})
}
}

func getCloudStreamingExportHitsTestCases(t *testing.T) []struct {
conf ProtoParserConfig
colsLen int
} {

res := []struct {
conf ProtoParserConfig
colsLen int
}{
{
conf: ProtoParserConfig{},
colsLen: 92,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
},
PrimaryKeys: []string{
"TransferID",
"WatchID",
},
},
colsLen: 2,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
},
PrimaryKeys: []string{
"WatchID",
},
},
colsLen: 2,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
{
Name: "WatchID",
Required: true,
},
},
PrimaryKeys: []string{
"WatchID",
},
},
colsLen: 2,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
{
Name: "WatchID",
Required: true,
},
},
},
colsLen: 2,
},
{
conf: ProtoParserConfig{
AddSyntheticKeys: true,
},
colsLen: 95,
},
{
conf: ProtoParserConfig{
AddSyntheticKeys: true,
AddSystemColumns: true,
},
colsLen: 97,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
},
AddSyntheticKeys: true,
},
colsLen: 4,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
},
PrimaryKeys: []string{
"TransferID",
},
AddSyntheticKeys: true,
},
colsLen: 4,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
},
PrimaryKeys: []string{
"WatchID",
},
AddSyntheticKeys: true,
},
colsLen: 5,
},
{
conf: ProtoParserConfig{
PrimaryKeys: []string{
"WatchID",
},
AddSyntheticKeys: true,
},
colsLen: 95,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
},
AddSyntheticKeys: true,
AddSystemColumns: true,
},
colsLen: 97,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
},
PrimaryKeys: []string{
"TransferID",
},
AddSyntheticKeys: true,
AddSystemColumns: true,
},
colsLen: 97,
},
{
conf: ProtoParserConfig{
IncludeColumns: []ColParams{
{
Name: "TransferID",
Required: true,
},
},
PrimaryKeys: []string{
"TransferID",
"WatchID",
},
AddSyntheticKeys: true,
AddSystemColumns: true,
},
colsLen: 97,
},
{
conf: ProtoParserConfig{
PrimaryKeys: []string{
"TransferID",
},
AddSyntheticKeys: true,
AddSystemColumns: true,
},
colsLen: 97,
},
}

rootMsgDesc, err := extractMessageDesc(
protoSampleContent(t, "metrika-streaming-data/metrika_cloud_export_hit_log.desc"),
"CloudTransferHitList",
)
require.NoError(t, err)

embeddedMsgDesc, ok := extractEmbeddedRepeatedMsgDesc(rootMsgDesc)
require.True(t, ok)

for i := range res {
res[i].conf.ScannerMessageDesc = rootMsgDesc
res[i].conf.ProtoMessageDesc = embeddedMsgDesc
res[i].conf.ProtoScannerType = protoscanner.ScannerTypeRepeated
res[i].conf.LineSplitter = abstract.LfLineSplitterDoNotSplit
}

return res
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
)

func protoSampleContent(t *testing.T, filename string) []byte {
fp := yatest.SourcePath(filepath.Join("transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/proto-samples", filename))
fp := yatest.SourcePath(filepath.Join("transfer_manager/go/pkg/parsers/registry/protobuf/protoparser/gotest/", filename))
fileContent, err := os.ReadFile(fp)
require.NoError(t, err)
require.Positive(t, len(fileContent))
Expand Down
Loading

0 comments on commit 7b304a4

Please sign in to comment.