From d40abebdeed3bea88e954b02feb51f698c9c0083 Mon Sep 17 00:00:00 2001 From: Manuel Kieweg <mail@manuelkieweg.de> Date: Thu, 18 Feb 2021 14:57:00 +0000 Subject: [PATCH] GNMI Transport and PND tests complete --- nucleus/gnmi_transport_test.go | 33 ++++---- nucleus/principalNetworkDomain_test.go | 109 ++++++++++++++----------- 2 files changed, 82 insertions(+), 60 deletions(-) diff --git a/nucleus/gnmi_transport_test.go b/nucleus/gnmi_transport_test.go index dd9e73e7b..ba05a018a 100644 --- a/nucleus/gnmi_transport_test.go +++ b/nucleus/gnmi_transport_test.go @@ -35,13 +35,6 @@ func testSetupGnmi() { Encoding: gpb.Encoding_PROTO, } - transport = &Gnmi{ - SetNode: nil, - RespChan: make(chan *gpb.SubscribeResponse), - config: gnmiConfig, - client: &mocks.GNMIClient{}, - } - startGnmiTarget = make(chan string) stopGnmiTarget = make(chan bool) go targetRunner() @@ -56,13 +49,22 @@ func targetRunner() { } } -var transport *Gnmi +func mockTransport() Gnmi { + return Gnmi{ + SetNode: nil, + RespChan: make(chan *gpb.SubscribeResponse), + config: gnmiConfig, + client: &mocks.GNMIClient{}, + } +} + var gnmiConfig *gnmi.Config var startGnmiTarget chan string var stopGnmiTarget chan bool var mockContext = mock.MatchedBy(func(ctx context.Context) bool { return true }) func TestGnmi_Capabilities(t *testing.T) { + transport := mockTransport() capabilityResponse := &gpb.CapabilityResponse{ SupportedModels: nil, SupportedEncodings: []gpb.Encoding{gpb.Encoding_PROTO, gpb.Encoding_JSON_IETF, gpb.Encoding_JSON}, @@ -93,7 +95,7 @@ func TestGnmi_Capabilities(t *testing.T) { }{ { name: "mock", - fields: fields{transport: transport}, + fields: fields{transport: &transport}, args: args{ endpoint: gnmiConfig.Addr, runEndpoint: false, @@ -151,6 +153,7 @@ func TestGnmi_Close(t *testing.T) { } func TestGnmi_Get(t *testing.T) { + transport := mockTransport() getRequest := &gpb.GetRequest{ Prefix: nil, Path: nil, @@ -201,14 +204,14 @@ func TestGnmi_Get(t *testing.T) { }, { name: "mock", - fields: fields{transport: transport}, + fields: fields{transport: &transport}, args: args{}, want: getResponse, wantErr: false, }, { name: "endpoint", - fields: fields{transport: transport}, + fields: fields{transport: &transport}, args: args{ runEndpoint: true, }, @@ -237,6 +240,7 @@ func TestGnmi_Get(t *testing.T) { } func TestGnmi_GetConfig(t *testing.T) { + transport := mockTransport() type fields struct { transport *Gnmi } @@ -247,7 +251,7 @@ func TestGnmi_GetConfig(t *testing.T) { }{ { name: "default", - fields: fields{transport: transport}, + fields: fields{transport: &transport}, want: gnmiConfig, }, } @@ -455,6 +459,7 @@ func TestGnmi_get(t *testing.T) { } func TestGnmi_getWithRequest(t *testing.T) { + transport := mockTransport() reqFullNode := &gpb.GetRequest{} reqInterfacesWildcard := &gpb.GetRequest{} respFullNode := &gpb.GetResponse{} @@ -504,7 +509,7 @@ func TestGnmi_getWithRequest(t *testing.T) { }{ { name: "getFullNode", - fields: fields{transport: transport}, + fields: fields{transport: &transport}, args: args{ request: reqFullNode, }, @@ -513,7 +518,7 @@ func TestGnmi_getWithRequest(t *testing.T) { }, { name: "getInterfacesWildcard", - fields: fields{transport: transport}, + fields: fields{transport: &transport}, args: args{ request: reqInterfacesWildcard, }, diff --git a/nucleus/principalNetworkDomain_test.go b/nucleus/principalNetworkDomain_test.go index 784ccab6c..18dbf2dde 100644 --- a/nucleus/principalNetworkDomain_test.go +++ b/nucleus/principalNetworkDomain_test.go @@ -22,33 +22,36 @@ func testSetupPnd() { if err != nil { log.Fatal(err) } +} - defaultPnd = &pndImplementation{ - name: "default", - description: "default test pnd", - sbi: map[string]SouthboundInterface{"default": &OpenConfig{}}, - devices: map[uuid.UUID]*Device{}, - } - - deviceWithMockTransport = &Device{ +func mockDevice() Device { + return Device{ GoStruct: nil, SBI: &OpenConfig{}, Config: DeviceConfig{ Uuid: mdid, - Address: "", - Username: "", - Password: "", + Address: "mock://localhost", + Username: "mock", + Password: "mock", }, Transport: &mocks.Transport{}, } } -var defaultPnd *pndImplementation +func freshPnd() pndImplementation { + return pndImplementation{ + name: "default", + description: "default test pnd", + sbi: map[string]SouthboundInterface{"default": &OpenConfig{}}, + devices: map[uuid.UUID]*Device{}, + } +} + var did uuid.UUID var mdid uuid.UUID -var deviceWithMockTransport *Device func TestNewPND(t *testing.T) { + pnd := freshPnd() type args struct { name string description string @@ -66,7 +69,7 @@ func TestNewPND(t *testing.T) { description: "default test pnd", sbi: &OpenConfig{}, }, - want: defaultPnd, + want: &pnd, }, } for _, tt := range tests { @@ -115,16 +118,17 @@ func Test_pndImplementation_AddDevice(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := defaultPnd.AddDevice(tt.args.device); (err != nil) != tt.wantErr { + pnd := freshPnd() + if err := pnd.AddDevice(tt.args.device); (err != nil) != tt.wantErr { t.Errorf("AddDevice() error = %v, wantErr %v", err, tt.wantErr) } - _, ok := defaultPnd.devices[did] + _, ok := pnd.devices[did] if !ok { t.Errorf("AddDevice() Device %v not in device store %v", - tt.args.device, defaultPnd.devices) + tt.args.device, pnd.devices) } + delete(pnd.devices, did) }) - delete(defaultPnd.devices, did) } } @@ -141,16 +145,17 @@ func Test_pndImplementation_AddSbi(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := defaultPnd.AddSbi(tt.args.sbi); (err != nil) != tt.wantErr { + pnd := freshPnd() + if err := pnd.AddSbi(tt.args.sbi); (err != nil) != tt.wantErr { t.Errorf("AddSbi() error = %v, wantErr %v", err, tt.wantErr) } - _, ok := defaultPnd.GetSBIs()[tt.args.sbi.SbiIdentifier()] + _, ok := pnd.GetSBIs()[tt.args.sbi.SbiIdentifier()] if !ok { t.Errorf("AddSbi() SBI %v not in device store %v", - tt.args.sbi, defaultPnd.GetSBIs()) + tt.args.sbi, pnd.GetSBIs()) } + delete(pnd.sbi, tt.args.sbi.SbiIdentifier()) }) - delete(defaultPnd.sbi, tt.args.sbi.SbiIdentifier()) } } @@ -175,12 +180,13 @@ func Test_pndImplementation_ContainsDevice(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - defaultPnd.devices[tt.args.uuid] = tt.args.device - if got := defaultPnd.ContainsDevice(tt.args.uuid); got != tt.want { + pnd := freshPnd() + pnd.devices[did] = tt.args.device + if got := pnd.ContainsDevice(tt.args.uuid); got != tt.want { t.Errorf("ContainsDevice() = %v, want %v", got, tt.want) } + delete(pnd.devices, did) }) - delete(defaultPnd.devices, did) } } @@ -222,7 +228,8 @@ func Test_pndImplementation_GetDescription(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := defaultPnd.GetDescription(); got != tt.want { + pnd := freshPnd() + if got := pnd.GetDescription(); got != tt.want { t.Errorf("GetDescription() = %v, want %v", got, tt.want) } }) @@ -238,7 +245,8 @@ func Test_pndImplementation_GetName(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := defaultPnd.GetName(); got != tt.want { + pnd := freshPnd() + if got := pnd.GetName(); got != tt.want { t.Errorf("GetName() = %v, want %v", got, tt.want) } }) @@ -246,15 +254,16 @@ func Test_pndImplementation_GetName(t *testing.T) { } func Test_pndImplementation_GetSBIs(t *testing.T) { + pnd := freshPnd() tests := []struct { name string want map[string]SouthboundInterface }{ - {name: "default", want: defaultPnd.sbi}, + {name: "default", want: pnd.sbi}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := defaultPnd.GetSBIs(); !reflect.DeepEqual(got, tt.want) { + if got := pnd.GetSBIs(); !reflect.DeepEqual(got, tt.want) { t.Errorf("GetSBIs() = %v, want %v", got, tt.want) } }) @@ -275,6 +284,7 @@ func Test_pndImplementation_MarshalDevice(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + pnd := freshPnd() d := &Device{ GoStruct: &openconfig.Device{}, SBI: nil, @@ -286,8 +296,8 @@ func Test_pndImplementation_MarshalDevice(t *testing.T) { }, Transport: nil, } - _ = defaultPnd.addDevice(d) - got, err := defaultPnd.MarshalDevice(tt.args.uuid) + _ = pnd.addDevice(d) + got, err := pnd.MarshalDevice(tt.args.uuid) if (err != nil) != tt.wantErr { t.Errorf("MarshalDevice() error = %v, wantErr %v", err, tt.wantErr) return @@ -295,6 +305,7 @@ func Test_pndImplementation_MarshalDevice(t *testing.T) { if got != tt.want { t.Errorf("MarshalDevice() got = %v, want %v", got, tt.want) } + delete(pnd.devices, did) }) } } @@ -312,14 +323,15 @@ func Test_pndImplementation_RemoveDevice(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + pnd := freshPnd() d := &Device{Config: DeviceConfig{Uuid: did}} - _ = defaultPnd.addDevice(d) - if err := defaultPnd.RemoveDevice(tt.args.uuid); (err != nil) != tt.wantErr { + _ = pnd.addDevice(d) + if err := pnd.RemoveDevice(tt.args.uuid); (err != nil) != tt.wantErr { t.Errorf("RemoveDevice() error = %v, wantErr %v", err, tt.wantErr) } - _, ok := defaultPnd.devices[did] + _, ok := pnd.devices[did] if ok { - t.Errorf("RemoveDevice() device %v still in device store %v", d, defaultPnd.devices) + t.Errorf("RemoveDevice() device %v still in device store %v", d, pnd.devices) } }) } @@ -338,13 +350,14 @@ func Test_pndImplementation_RemoveSbi(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - _ = defaultPnd.addSbi(&OpenConfig{}) - if err := defaultPnd.RemoveSbi(tt.args.sbiIdentifier); (err != nil) != tt.wantErr { + pnd := freshPnd() + _ = pnd.addSbi(&OpenConfig{}) + if err := pnd.RemoveSbi(tt.args.sbiIdentifier); (err != nil) != tt.wantErr { t.Errorf("RemoveSbi() error = %v, wantErr %v", err, tt.wantErr) } - sbi, ok := defaultPnd.sbi[tt.args.sbiIdentifier] + sbi, ok := pnd.sbi[tt.args.sbiIdentifier] if ok { - t.Errorf("RemoveDevice() SBI %v still in SBI store %v", sbi, defaultPnd.sbi) + t.Errorf("RemoveDevice() SBI %v still in SBI store %v", sbi, pnd.sbi) } }) } @@ -382,16 +395,18 @@ func Test_pndImplementation_Request(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + deviceWithMockTransport := mockDevice() + pnd := freshPnd() tr := deviceWithMockTransport.Transport.(*mocks.Transport) tr.On("Get", mockContext, mock.Anything).Return(mock.Anything, tt.args.rErr) tr.On("ProcessResponse", mock.Anything, mock.Anything, mock.Anything).Return(tt.args.rErr) - _ = defaultPnd.addDevice(deviceWithMockTransport) - if err := defaultPnd.Request(tt.args.uuid, tt.args.path); (err != nil) != tt.wantErr { + _ = pnd.addDevice(&deviceWithMockTransport) + if err := pnd.Request(tt.args.uuid, tt.args.path); (err != nil) != tt.wantErr { t.Errorf("Request() error = %v, wantErr %v", err, tt.wantErr) } + delete(pnd.devices, mdid) }) } - delete(defaultPnd.devices, mdid) } func Test_pndImplementation_RequestAll(t *testing.T) { @@ -417,7 +432,7 @@ func Test_pndImplementation_RequestAll(t *testing.T) { { name: "error", args: args{ - uuid: uuid.UUID{}, + uuid: did, path: "", rErr: errors.New("deliberate test fail"), }, @@ -426,14 +441,16 @@ func Test_pndImplementation_RequestAll(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { + deviceWithMockTransport := mockDevice() + pnd := freshPnd() tr := deviceWithMockTransport.Transport.(*mocks.Transport) tr.On("Get", mockContext, mock.Anything).Return(mock.Anything, tt.args.rErr) tr.On("ProcessResponse", mock.Anything, mock.Anything, mock.Anything).Return(tt.args.rErr) - _ = defaultPnd.addDevice(deviceWithMockTransport) - if err := defaultPnd.RequestAll(tt.args.path); (err != nil) != tt.wantErr { + _ = pnd.addDevice(&deviceWithMockTransport) + if err := pnd.RequestAll(tt.args.path); (err != nil) != tt.wantErr { t.Errorf("RequestAll() error = %v, wantErr %v", err, tt.wantErr) } + delete(pnd.devices, mdid) }) - delete(defaultPnd.devices, mdid) } } -- GitLab