From 213058e930e0b7d75a84a9093838a70ae43a5f25 Mon Sep 17 00:00:00 2001 From: Greg Dennis <5436032+greg-dennis@users.noreply.github.com> Date: Thu, 8 Feb 2024 16:07:27 -0500 Subject: [PATCH] Fix introspection target in binding (#2642) * fix introspection target * remove name argument from makeDialer * simplify binding_test a bit --- topologies/binding/binding.go | 10 +++---- topologies/binding/binding_test.go | 42 ++++++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/topologies/binding/binding.go b/topologies/binding/binding.go index dcabc88167f..bc7b23d11ec 100644 --- a/topologies/binding/binding.go +++ b/topologies/binding/binding.go @@ -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 { @@ -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) { @@ -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 @@ -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 } diff --git a/topologies/binding/binding_test.go b/topologies/binding/binding_test.go index 03158e34de6..0fff3026fdc 100644 --- a/topologies/binding/binding_test.go +++ b/topologies/binding/binding_test.go @@ -16,6 +16,7 @@ package binding import ( "context" + "fmt" "strings" "testing" "time" @@ -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" @@ -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 @@ -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) + } +}