Skip to content

Commit

Permalink
update config type
Browse files Browse the repository at this point in the history
  • Loading branch information
kevindiu committed Jun 30, 2023
1 parent 5cd1302 commit 21df055
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 45 deletions.
6 changes: 3 additions & 3 deletions internal/config/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ package config

// EgressFilter represents the EgressFilter configuration.
type EgressFilter struct {
Client *GRPCClient `json:"client,omitempty" yaml:"client"`
DistanceFilters []DistanceFilterConfig `json:"distance_filters,omitempty" yaml:"distance_filters"`
ObjectFilters []ObjectFilterConfig `json:"object_filters,omitempty" yaml:"object_filters"`
Client *GRPCClient `json:"client,omitempty" yaml:"client"`
DistanceFilters []*DistanceFilterConfig `json:"distance_filters,omitempty" yaml:"distance_filters"`
ObjectFilters []*ObjectFilterConfig `json:"object_filters,omitempty" yaml:"object_filters"`
}

// IngressFilter represents the IngressFilter configuration.
Expand Down
94 changes: 66 additions & 28 deletions internal/config/filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ import (
func TestEgressFilter_Bind(t *testing.T) {
type fields struct {
Client *GRPCClient
DistanceFilters []string
ObjectFilters []string
DistanceFilters []*DistanceFilterConfig
ObjectFilters []*ObjectFilterConfig
}
type want struct {
want *EgressFilter
Expand All @@ -53,20 +53,32 @@ func TestEgressFilter_Bind(t *testing.T) {
return test{
name: "return EgressFilter when the bind successes",
fields: fields{
DistanceFilters: []string{
"192.168.1.2",
DistanceFilters: []*DistanceFilterConfig{
{
Addr: "192.168.1.2",
Query: "distQuery",
},
},
ObjectFilters: []string{
"192.168.1.3",
ObjectFilters: []*ObjectFilterConfig{
{
Addr: "192.168.1.3",
Query: "objQuery",
},
},
},
want: want{
want: &EgressFilter{
DistanceFilters: []string{
"192.168.1.2",
DistanceFilters: []*DistanceFilterConfig{
{
Addr: "192.168.1.2",
Query: "distQuery",
},
},
ObjectFilters: []string{
"192.168.1.3",
ObjectFilters: []*ObjectFilterConfig{
{
Addr: "192.168.1.3",
Query: "objQuery",
},
},
},
},
Expand All @@ -76,21 +88,33 @@ func TestEgressFilter_Bind(t *testing.T) {
return test{
name: "return EgressFilter when the bind successes and the Client is not nil",
fields: fields{
DistanceFilters: []string{
"192.168.1.2",
DistanceFilters: []*DistanceFilterConfig{
{
Addr: "192.168.1.2",
Query: "distQuery",
},
},
ObjectFilters: []string{
"192.168.1.3",
ObjectFilters: []*ObjectFilterConfig{
{
Addr: "192.168.1.3",
Query: "objQuery",
},
},
Client: new(GRPCClient),
},
want: want{
want: &EgressFilter{
DistanceFilters: []string{
"192.168.1.2",
DistanceFilters: []*DistanceFilterConfig{
{
Addr: "192.168.1.2",
Query: "distQuery",
},
},
ObjectFilters: []string{
"192.168.1.3",
ObjectFilters: []*ObjectFilterConfig{
{
Addr: "192.168.1.3",
Query: "objQuery",
},
},
Client: &GRPCClient{
ConnectionPool: new(ConnectionPool),
Expand All @@ -106,17 +130,25 @@ func TestEgressFilter_Bind(t *testing.T) {
func() test {
suffix := "_FOR_TEST_EGRESS_FILTER_BIND"
m := map[string]string{
"DISTANCE_FILTERS" + suffix: "192.168.1.2",
"OBJECT_FILTERS" + suffix: "192.168.1.3",
"DISTANCE_FILTERS" + suffix: "192.168.1.2",
"OBJECT_FILTERS" + suffix: "192.168.1.3",
"DISTANCE_FILTERS_QUERY" + suffix: "distQuery",
"OBJECT_FILTERS_QUERY" + suffix: "objQuery",
}
return test{
name: "return EgressFilter when the bind successes and the data is loaded from the environment variable",
fields: fields{
DistanceFilters: []string{
"_DISTANCE_FILTERS" + suffix + "_",
DistanceFilters: []*DistanceFilterConfig{
{
Addr: "_DISTANCE_FILTERS" + suffix + "_",
Query: "_DISTANCE_FILTERS_QUERY" + suffix + "_",
},
},
ObjectFilters: []string{
"_OBJECT_FILTERS" + suffix + "_",
ObjectFilters: []*ObjectFilterConfig{
{
Addr: "_OBJECT_FILTERS" + suffix + "_",
Query: "_OBJECT_FILTERS_QUERY" + suffix + "_",
},
},
},
beforeFunc: func(t *testing.T) {
Expand All @@ -127,11 +159,17 @@ func TestEgressFilter_Bind(t *testing.T) {
},
want: want{
want: &EgressFilter{
DistanceFilters: []string{
"192.168.1.2",
DistanceFilters: []*DistanceFilterConfig{
{
Addr: "192.168.1.2",
Query: "distQuery",
},
},
ObjectFilters: []string{
"192.168.1.3",
ObjectFilters: []*ObjectFilterConfig{
{
Addr: "192.168.1.3",
Query: "objQuery",
},
},
},
},
Expand Down
24 changes: 12 additions & 12 deletions pkg/gateway/filter/handler/grpc/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ type server struct {
copts []grpc.CallOption
streamConcurrency int
Vectorizer string
DistanceFilters []config.DistanceFilterConfig
ObjectFilters []config.ObjectFilterConfig
DistanceFilters []*config.DistanceFilterConfig
ObjectFilters []*config.ObjectFilterConfig
SearchFilters []string
InsertFilters []string
UpdateFilters []string
Expand Down Expand Up @@ -1436,10 +1436,10 @@ func (s *server) Search(ctx context.Context, req *payload.Search_Request) (res *
}
filterConfigs = req.GetConfig().GetEgressFilters()
if filterConfigs != nil || s.DistanceFilters != nil {
filters := make([]config.DistanceFilterConfig, 0, len(filterConfigs)+len(s.DistanceFilters))
filters := make([]*config.DistanceFilterConfig, 0, len(filterConfigs)+len(s.DistanceFilters))
filters = append(filters, s.DistanceFilters...)
for _, c := range filterConfigs {
filters = append(filters, config.DistanceFilterConfig{
filters = append(filters, &config.DistanceFilterConfig{
Addr: net.JoinHostPort(c.GetTarget().GetHost(), uint16(c.GetTarget().GetPort())),
Query: c.Query.GetQuery(),
})
Expand Down Expand Up @@ -1527,10 +1527,10 @@ func (s *server) SearchByID(ctx context.Context, req *payload.Search_IDRequest)
}
filterConfigs := req.GetConfig().GetEgressFilters()
if filterConfigs != nil || s.DistanceFilters != nil {
filters := make([]config.DistanceFilterConfig, 0, len(filterConfigs)+len(s.DistanceFilters))
filters := make([]*config.DistanceFilterConfig, 0, len(filterConfigs)+len(s.DistanceFilters))
filters = append(filters, s.DistanceFilters...)
for _, c := range filterConfigs {
filters = append(filters, config.DistanceFilterConfig{
filters = append(filters, &config.DistanceFilterConfig{
Addr: net.JoinHostPort(c.GetTarget().GetHost(), uint16(c.GetTarget().GetPort())),
Query: c.Query.GetQuery(),
})
Expand Down Expand Up @@ -1932,10 +1932,10 @@ func (s *server) LinearSearch(ctx context.Context, req *payload.Search_Request)
}
filterConfigs = req.GetConfig().GetEgressFilters()
if filterConfigs != nil || s.DistanceFilters != nil {
filters := make([]config.DistanceFilterConfig, 0, len(filterConfigs)+len(s.DistanceFilters))
filters := make([]*config.DistanceFilterConfig, 0, len(filterConfigs)+len(s.DistanceFilters))
filters = append(filters, s.DistanceFilters...)
for _, c := range filterConfigs {
filters = append(filters, config.DistanceFilterConfig{
filters = append(filters, &config.DistanceFilterConfig{
Addr: net.JoinHostPort(c.GetTarget().GetHost(), uint16(c.GetTarget().GetPort())),
Query: c.Query.GetQuery(),
})
Expand Down Expand Up @@ -2019,10 +2019,10 @@ func (s *server) LinearSearchByID(ctx context.Context, req *payload.Search_IDReq
}
filterConfigs := req.GetConfig().GetEgressFilters()
if filterConfigs != nil || s.DistanceFilters != nil {
filters := make([]config.DistanceFilterConfig, 0, len(filterConfigs)+len(s.DistanceFilters))
filters := make([]*config.DistanceFilterConfig, 0, len(filterConfigs)+len(s.DistanceFilters))
filters = append(filters, s.DistanceFilters...)
for _, c := range filterConfigs {
filters = append(filters, config.DistanceFilterConfig{
filters = append(filters, &config.DistanceFilterConfig{
Addr: net.JoinHostPort(c.GetTarget().GetHost(), uint16(c.GetTarget().GetPort())),
Query: c.Query.GetQuery(),
})
Expand Down Expand Up @@ -3281,10 +3281,10 @@ func (s *server) GetObject(ctx context.Context, req *payload.Object_VectorReques
}
filterConfigs := req.GetFilters()
if filterConfigs != nil || s.ObjectFilters != nil {
filters := make([]config.ObjectFilterConfig, 0, len(filterConfigs)+len(s.ObjectFilters))
filters := make([]*config.ObjectFilterConfig, 0, len(filterConfigs)+len(s.ObjectFilters))
filters = append(filters, s.ObjectFilters...)
for _, c := range filterConfigs {
filters = append(filters, config.ObjectFilterConfig{
filters = append(filters, &config.ObjectFilterConfig{
Addr: net.JoinHostPort(c.GetTarget().GetHost(), uint16(c.GetTarget().GetPort())),
Query: c.Query.GetQuery(),
})
Expand Down
4 changes: 2 additions & 2 deletions pkg/gateway/filter/handler/grpc/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ func WithVectorizerTargets(addr string) Option {
}
}

func WithDistanceFilterTargets(cs ...config.DistanceFilterConfig) Option {
func WithDistanceFilterTargets(cs ...*config.DistanceFilterConfig) Option {
return func(s *server) {
if len(cs) == 0 {
return
Expand All @@ -125,7 +125,7 @@ func WithDistanceFilterTargets(cs ...config.DistanceFilterConfig) Option {
}
}

func WithObjectFilterTargets(cs ...config.ObjectFilterConfig) Option {
func WithObjectFilterTargets(cs ...*config.ObjectFilterConfig) Option {
return func(s *server) {
if len(cs) == 0 {
return
Expand Down

0 comments on commit 21df055

Please sign in to comment.