Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ build: build-dir build-pepcli build-papcli build-pdpserver build-plugin build-eg

.PHONY: test
test: cover-out test-pdp test-pdp-integration test-pdp-yast test-pdp-jast test-pdp-jcon test-local-selector test-pip-selector test-pep test-pip-server test-pip-client test-pip-genpkg test-plugin
go vet ./...

.PHONY: bench
bench: bench-pep bench-pip-server bench-pip-client bench-pdpserver-pkg bench-plugin
Expand Down
12 changes: 6 additions & 6 deletions contrib/coredns/policy/attrholder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,8 +359,8 @@ func TestDnstapList(t *testing.T) {

// empty/wrong log attribute
testutil.AssertDnstapList(t, ah.dnstapList(),
&pb.DnstapAttribute{"d0", "D0val"},
&pb.DnstapAttribute{"d", "Dval"},
&pb.DnstapAttribute{Id: "d0", Value: "D0val"},
&pb.DnstapAttribute{Id: "d", Value: "Dval"},
)

// log=1 - no attributes
Expand All @@ -370,14 +370,14 @@ func TestDnstapList(t *testing.T) {
// log=2
ah.addAttrList([]pdp.AttributeAssignment{pdp.MakeIntegerAssignment(attrNameLog, 2)})
testutil.AssertDnstapList(t, ah.dnstapList(),
&pb.DnstapAttribute{"d2", "D2val"},
&pb.DnstapAttribute{"d", "Dval"},
&pb.DnstapAttribute{Id: "d2", Value: "D2val"},
&pb.DnstapAttribute{Id: "d", Value: "Dval"},
)

// log=3 (out of range)
ah.addAttrList([]pdp.AttributeAssignment{pdp.MakeIntegerAssignment(attrNameLog, 3)})
testutil.AssertDnstapList(t, ah.dnstapList(),
&pb.DnstapAttribute{"d0", "D0val"},
&pb.DnstapAttribute{"d", "Dval"},
&pb.DnstapAttribute{Id: "d0", Value: "D0val"},
&pb.DnstapAttribute{Id: "d", Value: "Dval"},
)
}
4 changes: 2 additions & 2 deletions pep/benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -786,7 +786,7 @@ var (
}

decisionRequests []decisionRequest
rawRequests []pb.Msg
rawRequests []*pb.Msg
)

type testRequest3Keys struct {
Expand All @@ -805,7 +805,7 @@ func init() {
}
}

rawRequests = make([]pb.Msg, len(decisionRequests))
rawRequests = make([]*pb.Msg, len(decisionRequests))
for i := range rawRequests {
b := make([]byte, 128)

Expand Down
24 changes: 12 additions & 12 deletions pep/marshal.go
Original file line number Diff line number Diff line change
Expand Up @@ -230,16 +230,16 @@ var (
typeCacheLock = sync.RWMutex{}
)

func makeRequest(v interface{}) (pb.Msg, error) {
func makeRequest(v interface{}) (*pb.Msg, error) {
switch v := v.(type) {
case []byte:
return pb.Msg{Body: v}, nil
return &pb.Msg{Body: v}, nil

case pb.Msg:
return v, nil
return &v, nil

case *pb.Msg:
return *v, nil
return v, nil
}

var (
Expand All @@ -254,22 +254,22 @@ func makeRequest(v interface{}) (pb.Msg, error) {
}

if err != nil {
return pb.Msg{}, err
return &pb.Msg{}, err
}

return pb.Msg{Body: b}, nil
return &pb.Msg{Body: b}, nil
}

func makeRequestWithBuffer(v interface{}, b []byte) (pb.Msg, error) {
func makeRequestWithBuffer(v interface{}, b []byte) (*pb.Msg, error) {
switch v := v.(type) {
case []byte:
return pb.Msg{Body: v}, nil
return &pb.Msg{Body: v}, nil

case pb.Msg:
return v, nil
return &v, nil

case *pb.Msg:
return *v, nil
return v, nil
}

var (
Expand All @@ -283,10 +283,10 @@ func makeRequestWithBuffer(v interface{}, b []byte) (pb.Msg, error) {
n, err = marshalValueToBuffer(reflect.ValueOf(v), b)
}
if err != nil {
return pb.Msg{}, err
return &pb.Msg{}, err
}

return pb.Msg{Body: b[:n]}, nil
return &pb.Msg{Body: b[:n]}, nil
}

func marshalValue(v reflect.Value) ([]byte, error) {
Expand Down
14 changes: 7 additions & 7 deletions pep/stream.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,29 +94,29 @@ func (s *stream) drop() {
s.stream.Store(ssNil)
}

func (s *stream) validate(m *pb.Msg) (pb.Msg, error) {
func (s *stream) validate(m *pb.Msg) (*pb.Msg, error) {
sp := s.stream.Load().(*pb.PDP_NewValidationStreamClient)
if sp == nil {
return pb.Msg{}, errStreamWrongState
return &pb.Msg{}, errStreamWrongState
}

err := (*sp).Send(m)
if err != nil {
if err == balancer.ErrTransientFailure {
return pb.Msg{}, errConnFailure
return &pb.Msg{}, errConnFailure
}

return pb.Msg{}, errStreamFailure
return &pb.Msg{}, errStreamFailure
}

res, err := (*sp).Recv()
if err != nil {
if err == balancer.ErrTransientFailure {
return pb.Msg{}, errConnFailure
return &pb.Msg{}, errConnFailure
}

return pb.Msg{}, errStreamFailure
return &pb.Msg{}, errStreamFailure
}

return *res, nil
return res, nil
}
14 changes: 7 additions & 7 deletions pep/streaming_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const (
scsClosed
)

type validator func(m *pb.Msg) (pb.Msg, error)
type validator func(m *pb.Msg) (*pb.Msg, error)

type streamingClient struct {
opts options
Expand Down Expand Up @@ -112,7 +112,7 @@ func (c *streamingClient) Close() {

func (c *streamingClient) Validate(in, out interface{}) error {
var (
m pb.Msg
m *pb.Msg
err error
)

Expand All @@ -137,7 +137,7 @@ func (c *streamingClient) Validate(in, out interface{}) error {
if c.cache != nil {
var b []byte
if b, err = c.cache.Get(string(m.Body)); err == nil {
err = fillResponse(pb.Msg{Body: b}, out)
err = fillResponse(&pb.Msg{Body: b}, out)
if c.opts.onCacheHitHandler != nil {
if err != nil {
c.opts.onCacheHitHandler.Handle(in, b, err)
Expand All @@ -158,7 +158,7 @@ func (c *streamingClient) Validate(in, out interface{}) error {
}

for i := 0; i < len(c.conns); i++ {
r, err := c.validate(&m)
r, err := c.validate(m)
if err == nil {
if c.cache != nil {
c.cache.Set(string(m.Body), r.Body)
Expand All @@ -180,7 +180,7 @@ func (c *streamingClient) Validate(in, out interface{}) error {
}

func (c *streamingClient) makeSimpleValidator() validator {
return func(m *pb.Msg) (pb.Msg, error) {
return func(m *pb.Msg) (*pb.Msg, error) {
conn := c.conns[0]
r, err := conn.validate(m)
if err == errConnFailure {
Expand All @@ -192,7 +192,7 @@ func (c *streamingClient) makeSimpleValidator() validator {
}

func (c *streamingClient) makeRoundRobinValidator() validator {
return func(m *pb.Msg) (pb.Msg, error) {
return func(m *pb.Msg) (*pb.Msg, error) {
i := int((atomic.AddUint64(c.counter, 1) - 1) % uint64(len(c.conns)))
conn := c.conns[i]
r, err := conn.validate(m)
Expand All @@ -205,7 +205,7 @@ func (c *streamingClient) makeRoundRobinValidator() validator {
}

func (c *streamingClient) makeHotSpotValidator() validator {
return func(m *pb.Msg) (pb.Msg, error) {
return func(m *pb.Msg) (*pb.Msg, error) {
total := uint64(len(c.conns))
start := atomic.LoadUint64(c.counter)
i := int(start % total)
Expand Down
2 changes: 1 addition & 1 deletion pep/streaming_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ func TestStreamingClientValidationWithCache(t *testing.T) {
ei, err := it.Value()
if err != nil {
t.Errorf("can't get value from cache: %s", err)
} else if err := fillResponse(pb.Msg{Body: ei.Value()}, &out); err != nil {
} else if err := fillResponse(&pb.Msg{Body: ei.Value()}, &out); err != nil {
t.Errorf("can't unmarshal response from cache: %s", err)
} else if out.Effect != pdp.EffectPermit || out.Reason != nil || out.X != "AllPermitRule" {
t.Errorf("got unexpected response from cache: %s", out)
Expand Down
12 changes: 6 additions & 6 deletions pep/streaming_connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -479,10 +479,10 @@ func (c *streamConn) putStream(s boundStream) error {
return nil
}

func (c *streamConn) validate(m *pb.Msg) (pb.Msg, error) {
func (c *streamConn) validate(m *pb.Msg) (*pb.Msg, error) {
s, err := c.getStream()
if err != nil {
return pb.Msg{}, err
return &pb.Msg{}, err
}

r, err := s.s.validate(m)
Expand All @@ -493,21 +493,21 @@ func (c *streamConn) validate(m *pb.Msg) (pb.Msg, error) {
s.retry <- s
}

return pb.Msg{}, err
return &pb.Msg{}, err
}

c.putStream(s)
return r, nil
}

func (c *streamConn) tryValidate(m *pb.Msg) (pb.Msg, bool, error) {
func (c *streamConn) tryValidate(m *pb.Msg) (*pb.Msg, bool, error) {
s, ok, err := c.tryGetStream()
if err != nil {
return pb.Msg{}, false, err
return &pb.Msg{}, false, err
}

if !ok {
return pb.Msg{}, false, nil
return &pb.Msg{}, false, nil
}

r, err := s.s.validate(m)
Expand Down
8 changes: 4 additions & 4 deletions pep/unary_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ func (c *unaryClient) Validate(in, out interface{}) error {
}

var (
req pb.Msg
req *pb.Msg
err error
)

Expand All @@ -178,7 +178,7 @@ func (c *unaryClient) Validate(in, out interface{}) error {
if c.cache != nil {
var b []byte
if b, err = c.cache.Get(string(req.Body)); err == nil {
err = fillResponse(pb.Msg{Body: b}, out)
err = fillResponse(&pb.Msg{Body: b}, out)
if c.opts.onCacheHitHandler != nil {
if err != nil {
c.opts.onCacheHitHandler.Handle(in, b, err)
Expand All @@ -201,7 +201,7 @@ func (c *unaryClient) Validate(in, out interface{}) error {
defer cancelFn()
}

res, err := (*uc).Validate(ctx, &req, grpc.FailFast(false))
res, err := (*uc).Validate(ctx, req, grpc.FailFast(false))
if err != nil {
return err
}
Expand All @@ -210,5 +210,5 @@ func (c *unaryClient) Validate(in, out interface{}) error {
c.cache.Set(string(req.Body), res.Body)
}

return fillResponse(*res, out)
return fillResponse(res, out)
}
2 changes: 1 addition & 1 deletion pep/unary_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func TestUnaryClientValidationWithCache(t *testing.T) {
ei, err := it.Value()
if err != nil {
t.Errorf("can't get value from cache: %s", err)
} else if err := fillResponse(pb.Msg{Body: ei.Value()}, &out); err != nil {
} else if err := fillResponse(&pb.Msg{Body: ei.Value()}, &out); err != nil {
t.Errorf("can't unmarshal response from cache: %s", err)
} else if out.Effect != pdp.EffectPermit || out.Reason != nil || out.X != "AllPermitRule" {
t.Errorf("got unexpected response from cache: %s", out)
Expand Down
6 changes: 4 additions & 2 deletions pep/unmarshal.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@ var (
}
)

func fillResponse(res pb.Msg, v interface{}) error {
func fillResponse(res *pb.Msg, v interface{}) error {
switch v := v.(type) {
case *pb.Msg:
*v = res
// pb.Msg can't be copied
v = new(pb.Msg)
v.Body = res.Body
return nil

case *pdp.Response:
Expand Down
2 changes: 1 addition & 1 deletion pep/unmarshal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ func TestUnmarshalInvalidStructures(t *testing.T) {
}

func TestFillResponse(t *testing.T) {
r := pb.Msg{
r := &pb.Msg{
Body: TestResponse,
}

Expand Down
Loading