diff --git a/cmd/gnmi/gnmi.go b/cmd/gnmi/gnmi.go index 0f30b05abff9dc56f4db082503ecc792a9713c1e..ba24d802ddb593aae76b97cd5e54f46802914c03 100644 --- a/cmd/gnmi/gnmi.go +++ b/cmd/gnmi/gnmi.go @@ -25,24 +25,13 @@ func main() { if err != nil { log.Debug(err) } - pnd := nucleus.NewPND("openconfig", "test description", sbi) - if err := pnd.AddDevice(device); err != nil { + pnd, err := nucleus.NewPND("openconfig", "test description", sbi) + if err != nil { log.Fatal(err) } - - cfg := &gnmi.Config{ - Addr: "[fdfd::ce05]:6030", - Username: "admin", - Password: "arista", - Encoding: gpb.Encoding_JSON_IETF, - } - transport, err := nucleus.NewGnmiTransport(cfg) - if err != nil { + if err := pnd.AddDevice(device); err != nil { log.Fatal(err) } - transport.SetNode = sbi.SetNode() - - device.Transport = transport p := []string{"/interfaces/interface"} errors := 0 diff --git a/nucleus/gnmi_transport_test.go b/nucleus/gnmi_transport_test.go index b36a4a542e8fe2dae3f9f7e5e43b2164963afc5b..3cd5cc2d706978b141299b51a97250466751e51e 100644 --- a/nucleus/gnmi_transport_test.go +++ b/nucleus/gnmi_transport_test.go @@ -55,16 +55,62 @@ func mockTransport() Gnmi { return Gnmi{ SetNode: nil, RespChan: make(chan *gpb.SubscribeResponse), + Options: newGnmiTransportOptions(), config: gnmiConfig, client: &mocks.GNMIClient{}, } } +func newGnmiTransportOptions() *GnmiTransportOptions { + return &GnmiTransportOptions{ + Username: "test", + Password: "test", + Addr: "localhost:13371", + SetNode: nil, + RespChan: make(chan *gpb.SubscribeResponse), + Encoding: gpb.Encoding_PROTO, + } +} + var gnmiConfig *gnmi.Config var startGnmiTarget chan string var stopGnmiTarget chan bool var mockContext = mock.MatchedBy(func(ctx context.Context) bool { return true }) +func TestNewGnmiTransport(t *testing.T) { + gnmiTransport := mockTransport() + type args struct { + opts *GnmiTransportOptions + } + tests := []struct { + name string + args args + want *Gnmi + wantErr bool + }{ + { + name: "default", + args: args{ + opts: newGnmiTransportOptions(), + }, + want: &gnmiTransport, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := NewGnmiTransport(tt.args.opts) + if (err != nil) != tt.wantErr { + t.Errorf("NewGnmiTransport() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("NewGnmiTransport() = %v, want %v", got, tt.want) + } + }) + } +} + func TestGnmi_Capabilities(t *testing.T) { transport := mockTransport() capabilityResponse := &gpb.CapabilityResponse{ diff --git a/nucleus/principalNetworkDomain_test.go b/nucleus/principalNetworkDomain_test.go index db95582e17e9e65dab90e56c26709d97b374629b..622be43e8187e8dad710f2c2d3f675f0f99cfb89 100644 --- a/nucleus/principalNetworkDomain_test.go +++ b/nucleus/principalNetworkDomain_test.go @@ -36,6 +36,7 @@ func testSetupPnd() { func mockDevice() Device { return Device{ + Uuid: mdid, GoStruct: nil, SBI: &OpenConfig{}, Transport: &mocks.Transport{}, @@ -168,7 +169,7 @@ func Test_destroy(t *testing.T) { func Test_pndImplementation_AddDevice(t *testing.T) { type args struct { - device *Device + device interface{} } tests := []struct { name string @@ -177,25 +178,51 @@ func Test_pndImplementation_AddDevice(t *testing.T) { }{ { name: "default", - args: args{device: &Device{ - Uuid: did, - }}, + args: args{ + device: &Device{ + Uuid: did, + }, + }, wantErr: false, }, + { + name: "already exists", + args: args{ + device: &Device{ + Uuid: did, + }, + }, + wantErr: true, + }, + { + name: "fails wrong type", + args: args{device: &pndImplementation{ + id: did, + }}, + wantErr: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { pnd := newPnd() - if err := pnd.AddDevice(tt.args.device); (err != nil) != tt.wantErr { - t.Errorf("AddDevice() error = %v, wantErr %v", err, tt.wantErr) + if tt.name == "already exists" { + pnd.devices.store[did] = &Device{Uuid: did} } - _, ok := pnd.devices.store[did] - if !ok { - t.Errorf("AddDevice() Device %v not in device store %v", - tt.args.device, pnd.devices) + err := pnd.AddDevice(tt.args.device) + if (err != nil) != tt.wantErr { + t.Errorf("AddDevice() error = %v, wantErr %v", err, tt.wantErr) } - if err := pnd.devices.delete(did); err != nil { - t.Error(err) + if tt.name != "fails wrong type" { + if err == nil { + _, ok := pnd.devices.store[did] + if !ok { + t.Errorf("AddDevice() Device %v not in device store %v", + tt.args.device, pnd.devices) + } + if err := pnd.devices.delete(did); err != nil { + t.Error(err) + } + } } }) } @@ -203,7 +230,7 @@ func Test_pndImplementation_AddDevice(t *testing.T) { func Test_pndImplementation_AddSbi(t *testing.T) { type args struct { - sbi SouthboundInterface + sbi interface{} } tests := []struct { name string @@ -219,20 +246,46 @@ func Test_pndImplementation_AddSbi(t *testing.T) { }, wantErr: false, }, + { + name: "already exists", + args: args{ + sbi: &OpenConfig{ + id: defaultSbiId, + }, + }, + wantErr: true, + }, + { + name: "fails wrong type", + args: args{ + sbi: &pndImplementation{ + id: defaultSbiId, + }, + }, + wantErr: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { pnd := newPnd() - if err := pnd.AddSbi(tt.args.sbi); (err != nil) != tt.wantErr { - t.Errorf("AddSbi() error = %v, wantErr %v", err, tt.wantErr) + if tt.name == "already exists" { + pnd.sbic.store[defaultSbiId] = tt.args.sbi.(*OpenConfig) } - _, ok := pnd.sbic.store[defaultSbiId] - if !ok { - t.Errorf("AddSbi() SBI %v not in device store %v", - tt.args.sbi, pnd.GetSBIs()) + err := pnd.AddSbi(tt.args.sbi) + if (err != nil) != tt.wantErr { + t.Errorf("AddSbi() error = %v, wantErr %v", err, tt.wantErr) } - if err := pnd.sbic.delete(defaultSbiId); err != nil { - t.Error(err) + if tt.name != "fails wrong type" { + if err == nil { + _, ok := pnd.sbic.store[defaultSbiId] + if !ok { + t.Errorf("AddSbi() SBI %v not in device store %v", + tt.args.sbi, pnd.GetSBIs()) + } + if err := pnd.sbic.delete(defaultSbiId); err != nil { + t.Error(err) + } + } } }) } @@ -369,12 +422,18 @@ func Test_pndImplementation_MarshalDevice(t *testing.T) { want string wantErr bool }{ - {name: "default", args: args{did}, want: "{\n\t\"Acl\": null,\n\t\"Bgp\": null,\n\t\"Components\": null,\n\t\"Interfaces\": null,\n\t\"LocalRoutes\": null,\n\t\"Messages\": null,\n\t\"NetworkInstances\": null,\n\t\"RoutingPolicy\": null,\n\t\"System\": null\n}", wantErr: false}, + { + name: "default", + args: args{did}, + want: "{\n\t\"Acl\": null,\n\t\"Bgp\": null,\n\t\"Components\": null,\n\t\"Interfaces\": null,\n\t\"LocalRoutes\": null,\n\t\"Messages\": null,\n\t\"NetworkInstances\": null,\n\t\"RoutingPolicy\": null,\n\t\"System\": null\n}", + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { pnd := newPnd() d := &Device{ + Uuid: tt.args.uuid, GoStruct: &openconfig.Device{}, SBI: nil, Transport: nil,