vgc UTs part 4
Change-Id: I0e78854fefb8f0ad270a84bc88982f859a0d5995
diff --git a/internal/pkg/controller/auditdevice_test.go b/internal/pkg/controller/auditdevice_test.go
new file mode 100644
index 0000000..b2a76ea
--- /dev/null
+++ b/internal/pkg/controller/auditdevice_test.go
@@ -0,0 +1,163 @@
+/*
+* Copyright 2022-present Open Networking Foundation
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+ */
+
+package controller
+
+import (
+ "context"
+ "testing"
+ "voltha-go-controller/internal/pkg/holder"
+ "voltha-go-controller/internal/pkg/of"
+ "voltha-go-controller/internal/test/mocks"
+
+ "github.com/golang/mock/gomock"
+ "github.com/opencord/voltha-protos/v5/go/openflow_13"
+ "github.com/opencord/voltha-protos/v5/go/voltha"
+)
+
+func TestAuditDevice_DelExcessPorts(t *testing.T) {
+ type args struct {
+ cntx context.Context
+ eps []uint32
+ }
+ subFlows := map[uint64]*of.VoltSubFlow{}
+ vltSubFlow := &of.VoltSubFlow{
+ Priority: 100,
+ Cookie: 103112802816,
+ State: of.FlowAddSuccess,
+ Match: of.Match{
+ InPort: 1573376,
+ MatchVlan: 4096,
+ L4Protocol: 255,
+ },
+ Action: of.Action{
+ Metadata: 279189651712,
+ GoToTableID: 1,
+ MeterID: 1,
+ SetVlan: 4097,
+ Pcp: 8,
+ Output: 4,
+ },
+ }
+ subFlows[0] = vltSubFlow
+ portsByID := map[uint32]*DevicePort{}
+ portsByID[256] = &DevicePort{
+ Name: "SDX6320031",
+ ID: 256,
+ State: PortStateUp,
+ }
+ eps := []uint32{256}
+ device := &Device{
+ flows: subFlows,
+ PortsByID: portsByID,
+ ID: "SDX6320031",
+ }
+ tests := []struct {
+ name string
+ args args
+ }{
+ {
+ name: "AddFlowsTask_Start",
+ args: args{
+ cntx: context.Background(),
+ eps: eps,
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ad := &AuditDevice{
+ device: device,
+ }
+ appMock := mocks.NewMockApp(gomock.NewController(t))
+ NewController(ctx, appMock)
+ appMock.EXPECT().PortDownInd(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
+ appMock.EXPECT().PortDelInd(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
+ dbintf := mocks.NewMockDBIntf(gomock.NewController(t))
+ db = dbintf
+ dbintf.EXPECT().DelPort(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
+ ad.DelExcessPorts(tt.args.cntx, tt.args.eps)
+ })
+ }
+}
+
+func TestAuditDevice_Start(t *testing.T) {
+ type args struct {
+ ctx context.Context
+ taskID uint8
+ }
+ volthaClientMock := mocks.NewMockVolthaServiceClient(gomock.NewController(t))
+ volthaServiceClientHolder := &holder.VolthaServiceClientHolder{
+ VolthaSvcClient: volthaClientMock,
+ }
+ portsByID := map[uint32]*DevicePort{}
+ portsByID[16777216] = &DevicePort{
+ Name: "SDX6320031",
+ ID: 16777216,
+ State: PortStateUp,
+ }
+ device := &Device{
+ ID: "SDX6320031",
+ vclientHolder: volthaServiceClientHolder,
+ PortsByID: portsByID,
+ }
+ items := []*voltha.LogicalPort{}
+ item := &voltha.LogicalPort{
+ Id: "SDX6320031-1",
+ DeviceId: "SDX6320031",
+ DevicePortNo: 16777216,
+ OfpPort: &openflow_13.OfpPort{
+ PortNo: 16777216,
+ Name: "SDX6320031-1",
+ },
+ }
+ items = append(items, item)
+
+ ofpps := &voltha.LogicalPorts{
+ Items: items,
+ }
+ tests := []struct {
+ name string
+ args args
+ wantErr bool
+ }{
+ {
+ name: "AddFlowsTask_Start",
+ args: args{
+ ctx: context.Background(),
+ taskID: 0,
+ },
+ wantErr: false,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ad := &AuditDevice{
+ device: device,
+ }
+ volthaClientMock.EXPECT().ListLogicalDevicePorts(gomock.Any(), gomock.Any(), gomock.Any()).Return(ofpps, nil).AnyTimes()
+ appMock := mocks.NewMockApp(gomock.NewController(t))
+ NewController(ctx, appMock)
+ appMock.EXPECT().SetRebootFlag(gomock.Any()).AnyTimes()
+ appMock.EXPECT().PortDownInd(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
+ dbintf := mocks.NewMockDBIntf(gomock.NewController(t))
+ db = dbintf
+ dbintf.EXPECT().PutPort(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
+ if err := ad.Start(tt.args.ctx, tt.args.taskID); (err != nil) != tt.wantErr {
+ t.Errorf("AuditDevice.Start() error = %v, wantErr %v", err, tt.wantErr)
+ }
+ })
+ }
+}