Skip to content

Commit

Permalink
Fix introspection target in binding (openconfig#2642)
Browse files Browse the repository at this point in the history
* fix introspection target

* remove name argument from makeDialer

* simplify binding_test a bit
  • Loading branch information
greg-dennis authored and frasieroh committed Feb 9, 2024
1 parent 789aa5d commit 70f8d30
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 10 deletions.
10 changes: 5 additions & 5 deletions topologies/binding/binding.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ func (d *staticDUT) Dialer(svc introspect.Service) (*introspect.Dialer, error) {
return nil, fmt.Errorf("no known DUT service %v", svc)
}
bopts := d.r.grpc(d.dev, params)
return makeDialer(d.Name(), params, bopts)
return makeDialer(params, bopts)
}

func (d *staticDUT) reset(ctx context.Context) error {
Expand Down Expand Up @@ -239,7 +239,7 @@ func (a *staticATE) Dialer(svc introspect.Service) (*introspect.Dialer, error) {
return nil, fmt.Errorf("no known ATE service %v", svc)
}
bopts := a.r.grpc(a.dev, params)
return makeDialer(a.Name(), params, bopts)
return makeDialer(params, bopts)
}

func (a *staticATE) DialGNMI(ctx context.Context, opts ...grpc.DialOption) (gpb.GNMIClient, error) {
Expand Down Expand Up @@ -564,7 +564,7 @@ func dialOpts(bopts *bindpb.Options) ([]grpc.DialOption, error) {
return opts, nil
}

func makeDialer(name string, params *svcParams, bopts *bindpb.Options) (*introspect.Dialer, error) {
func makeDialer(params *svcParams, bopts *bindpb.Options) (*introspect.Dialer, error) {
opts, err := dialOpts(bopts)
if err != nil {
return nil, err
Expand All @@ -577,9 +577,9 @@ func makeDialer(name string, params *svcParams, bopts *bindpb.Options) (*introsp
ctx, cancelFunc = context.WithTimeout(ctx, time.Duration(bopts.Timeout)*time.Second)
defer cancelFunc()
}
return grpcDialContextFn(ctx, bopts.Target, opts...)
return grpcDialContextFn(ctx, target, opts...)
},
DialTarget: fmt.Sprintf("%s:%d", name, params.port),
DialTarget: bopts.Target,
DialOpts: opts,
}, nil
}
Expand Down
42 changes: 37 additions & 5 deletions topologies/binding/binding_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package binding

import (
"context"
"fmt"
"strings"
"testing"
"time"
Expand All @@ -24,6 +25,7 @@ import (
"github.com/open-traffic-generator/snappi/gosnappi"
bindpb "github.com/openconfig/featureprofiles/topologies/proto/binding"
"github.com/openconfig/ondatra/binding"
"github.com/openconfig/ondatra/binding/introspect"
opb "github.com/openconfig/ondatra/proto"
"google.golang.org/grpc"
"google.golang.org/protobuf/testing/protocmp"
Expand Down Expand Up @@ -225,11 +227,8 @@ func TestReservation_Error(t *testing.T) {
func TestDialOTGTimeout(t *testing.T) {
const timeoutSecs = 42
a := &staticATE{
AbstractATE: &binding.AbstractATE{Dims: &binding.Dims{Name: "my_ate"}},
r: resolver{&bindpb.Binding{}},
dev: &bindpb.Device{Otg: &bindpb.Options{
Timeout: timeoutSecs,
}},
r: resolver{&bindpb.Binding{}},
dev: &bindpb.Device{Otg: &bindpb.Options{Timeout: timeoutSecs}},
}
grpcDialContextFn = func(context.Context, string, ...grpc.DialOption) (*grpc.ClientConn, error) {
return nil, nil
Expand All @@ -256,3 +255,36 @@ func (a *captureAPI) NewGrpcTransport() gosnappi.GrpcTransport {
a.gotTransport = a.Api.NewGrpcTransport()
return a.gotTransport
}

func TestDialer(t *testing.T) {
const (
wantDevName = "mydev"
wantDevPort = 1234
)
fakeSvc := introspect.Service("fake")
dutSvcParams[fakeSvc] = &svcParams{
port: wantDevPort,
optsFn: func(d *bindpb.Device) *bindpb.Options { return nil },
}
d := &staticDUT{
r: resolver{&bindpb.Binding{}},
dev: &bindpb.Device{Name: wantDevName},
}

dialer, err := d.Dialer(fakeSvc)
if err != nil {
t.Fatalf("Dialer() got err: %v", err)
}
if dialer.DevicePort != wantDevPort {
t.Errorf("Dialer() got DevicePort %v, want %v", dialer.DevicePort, wantDevPort)
}
if dialer.DialFunc == nil {
t.Errorf("Dialer() got nil DialFunc, want non-nil DialFunc")
}
if len(dialer.DialOpts) == 0 {
t.Errorf("Dialer() got empty DialOpts, want non-empty DialOpts")
}
if wantTarget := fmt.Sprintf("%v:%v", wantDevName, wantDevPort); dialer.DialTarget != wantTarget {
t.Errorf("Dialer() got Target %v, want %v", dialer.DialTarget, wantTarget)
}
}

0 comments on commit 70f8d30

Please sign in to comment.