FTTH-55780 [UT coverage for VGC upto 47%]
Change-Id: I6503d90643d214ac2fa7e21d5a39a44913019ad7
diff --git a/internal/pkg/application/igmpgroup_test.go b/internal/pkg/application/igmpgroup_test.go
new file mode 100644
index 0000000..aec7f45
--- /dev/null
+++ b/internal/pkg/application/igmpgroup_test.go
@@ -0,0 +1,253 @@
+/*
+* 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 application
+
+import (
+ "context"
+ "net"
+ "reflect"
+ "testing"
+ "time"
+ "voltha-go-controller/internal/pkg/of"
+ "voltha-go-controller/internal/test/mocks"
+
+ "github.com/golang/mock/gomock"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestNewIgmpGroup(t *testing.T) {
+ type args struct {
+ name string
+ vlan of.VlanType
+ }
+ group := &IgmpGroup{
+ GroupName: "test_key",
+ }
+ tests := []struct {
+ name string
+ args args
+ want *IgmpGroup
+ }{
+ {
+ name: "NewIgmpGroup",
+ args: args{
+ name: "test_key",
+ },
+ want: group,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ got := NewIgmpGroup(tt.args.name, tt.args.vlan)
+ assert.NotNil(t, got)
+ })
+ }
+}
+
+func TestIgmpGroup_IgmpGroupInit(t *testing.T) {
+ type args struct {
+ name string
+ gip net.IP
+ mvp *MvlanProfile
+ }
+ grp := make(map[string]*MvlanGroup)
+ grp["test_key"] = &MvlanGroup{
+ Name: "test_key",
+ IsStatic: true,
+ }
+ tests := []struct {
+ name string
+ args args
+ }{
+ {
+ name: "IgmpGroupInit",
+ args: args{
+ name: "test_key",
+ gip: AllSystemsMulticastGroupIP,
+ mvp: &MvlanProfile{
+ Version: "test_version",
+ Name: "test_key",
+ Groups: grp,
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ig := &IgmpGroup{}
+ ig.IgmpGroupInit(tt.args.name, tt.args.gip, tt.args.mvp)
+ })
+ }
+}
+
+func TestIgmpGroup_IgmpGroupReInit(t *testing.T) {
+ type args struct {
+ cntx context.Context
+ name string
+ gip net.IP
+ }
+ tests := []struct {
+ name string
+ args args
+ }{
+ {
+ name: "IgmpGroupInit",
+ args: args{
+ cntx: context.Background(),
+ name: "test_key",
+ gip: AllSystemsMulticastGroupIP,
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ig := &IgmpGroup{}
+ ig.IgmpGroupReInit(tt.args.cntx, tt.args.name, tt.args.gip)
+ })
+ }
+}
+
+func TestIgmpGroup_DeleteIgmpGroupDevice(t *testing.T) {
+ type args struct {
+ cntx context.Context
+ device string
+ }
+ devices := map[string]*IgmpGroupDevice{}
+ igmpDevice := &IgmpGroupDevice{
+ Device: "SDX6320031",
+ SerialNo: "SDX6320031",
+ GroupName: "group1",
+ Mvlan: of.VlanAny,
+ }
+ devices["SDX6320031"] = igmpDevice
+ tests := []struct {
+ name string
+ args args
+ }{
+ {
+ name: "DeleteIgmpGroupDevice",
+ args: args{
+ cntx: context.Background(),
+ device: "SDX6320031",
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ig := &IgmpGroup{
+ Devices: devices,
+ }
+ dbintf := mocks.NewMockDBIntf(gomock.NewController(t))
+ db = dbintf
+ dbintf.EXPECT().DelIgmpDevice(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
+ ig.DeleteIgmpGroupDevice(tt.args.cntx, tt.args.device)
+ })
+ }
+}
+
+func TestIgmpGroup_removeExpiredGroupFromDevice(t *testing.T) {
+ type args struct {
+ cntx context.Context
+ }
+ PendingGroupForDevice := make(map[string]time.Time)
+ PendingGroupForDevice["SDX6320031"] = time.Now().Add(time.Duration(GroupExpiryTime) * time.Minute)
+ tests := []struct {
+ name string
+ args args
+ }{
+ {
+ name: "DeleteIgmpGroupDevice",
+ args: args{
+ cntx: context.Background(),
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ig := &IgmpGroup{
+ PendingGroupForDevice: PendingGroupForDevice,
+ }
+ ig.removeExpiredGroupFromDevice(tt.args.cntx)
+ })
+ }
+}
+
+func TestIgmpGroup_GetAllIgmpChannel(t *testing.T) {
+ devices := map[string]*IgmpGroupDevice{}
+ igmpDevice := &IgmpGroupDevice{
+ Device: "SDX6320031",
+ SerialNo: "SDX6320031",
+ GroupName: "group1",
+ Mvlan: of.VlanAny,
+ }
+ devices["SDX6320031"] = igmpDevice
+ tests := []struct {
+ name string
+ want map[string]string
+ }{
+ {
+ name: "GetAllIgmpChannel",
+ want: make(map[string]string),
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ig := &IgmpGroup{
+ Devices: devices,
+ }
+ if got := ig.GetAllIgmpChannel(); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("IgmpGroup.GetAllIgmpChannel() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
+
+func TestIgmpGroup_GetAllIgmpChannelForDevice(t *testing.T) {
+ type args struct {
+ deviceID string
+ }
+ devices := map[string]*IgmpGroupDevice{}
+ igmpDevice := &IgmpGroupDevice{
+ Device: "SDX6320031",
+ SerialNo: "SDX6320031",
+ GroupName: "group1",
+ Mvlan: of.VlanAny,
+ }
+ devices["SDX6320031"] = igmpDevice
+ tests := []struct {
+ name string
+ args args
+ want map[string]string
+ }{
+ {
+ name: "GetAllIgmpChannelForDevice",
+ args: args{
+ deviceID: "SDX6320031",
+ },
+ want: make(map[string]string),
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ ig := &IgmpGroup{
+ Devices: devices,
+ }
+ if got := ig.GetAllIgmpChannelForDevice(tt.args.deviceID); !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("IgmpGroup.GetAllIgmpChannelForDevice() = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}