init
This commit is contained in:
44
tests/gen/gen.go
Normal file
44
tests/gen/gen.go
Normal file
@ -0,0 +1,44 @@
|
||||
package gen
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"google.golang.org/protobuf/proto"
|
||||
"google.golang.org/protobuf/reflect/protodesc"
|
||||
"google.golang.org/protobuf/types/known/anypb"
|
||||
|
||||
test "go.linka.cloud/protofilters/tests/pb"
|
||||
)
|
||||
|
||||
func Gen() {
|
||||
t := &test.Test{StringField: "whatever..."}
|
||||
tf, err := os.Create("test.bin")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
defer tf.Close()
|
||||
a, err := anypb.New(t)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
b, err := proto.Marshal(a)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
if _, err := tf.Write(b); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
tdf, err := os.Create("test.file-descriptor.bin")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
defer tdf.Close()
|
||||
b, err = proto.Marshal(protodesc.ToFileDescriptorProto(t.ProtoReflect().Descriptor().ParentFile()))
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
if _, err := tdf.Write(b); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
}
|
60
tests/main.go
Normal file
60
tests/main.go
Normal file
@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
"google.golang.org/protobuf/proto"
|
||||
"google.golang.org/protobuf/reflect/protodesc"
|
||||
"google.golang.org/protobuf/reflect/protoregistry"
|
||||
"google.golang.org/protobuf/types/descriptorpb"
|
||||
"google.golang.org/protobuf/types/dynamicpb"
|
||||
"google.golang.org/protobuf/types/known/anypb"
|
||||
|
||||
ff "go.linka.cloud/protofilters"
|
||||
"go.linka.cloud/protofilters/matcher"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// gen.Gen()
|
||||
b, err := ioutil.ReadFile("test.file-descriptor.bin")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
var fdp descriptorpb.FileDescriptorProto
|
||||
if err := proto.Unmarshal(b, &fdp); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
fd, err := protodesc.NewFile(&fdp, protoregistry.GlobalFiles)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
// protodesc.NewFile(d.)
|
||||
d := dynamicpb.NewMessage(fd.Messages().Get(0))
|
||||
b, err = ioutil.ReadFile("test.bin")
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
a := anypb.Any{}
|
||||
if err := proto.Unmarshal(b, &a); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
if err := anypb.UnmarshalTo(&a, d, proto.UnmarshalOptions{}); err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
logrus.Infof("%+v", d)
|
||||
logrus.Info(d.ProtoReflect().Descriptor().FullName())
|
||||
filter := &ff.FieldFilter{
|
||||
Field: "string_field",
|
||||
// Filter: ff.StringRegex(".*....*"),
|
||||
Filter: ff.StringIN("", "whatever..."),
|
||||
}
|
||||
ok, err := matcher.MatchFilters(d, filter)
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
if !ok {
|
||||
logrus.Fatal("reg ex not found")
|
||||
}
|
||||
logrus.Infof("%v match %v", d, filter)
|
||||
}
|
Reference in New Issue
Block a user