Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve unit test code coverage for image, publicip, securitygroup, keypair #163

Merged
1 commit merged into from Oct 31, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 56 additions & 1 deletion controllers/osccluster_publicip_controller_unit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,13 @@ var (
},
},
}

defaultLinkVmInitialize = infrastructurev1beta1.OscMachineSpec{
Node: infrastructurev1beta1.OscNode{
Vm: infrastructurev1beta1.OscVm{
PublicIpName: "test-publicip",
},
},
}
defaultPublicIpReconcile = infrastructurev1beta1.OscClusterSpec{
Network: infrastructurev1beta1.OscNetwork{
Net: infrastructurev1beta1.OscNet{
Expand Down Expand Up @@ -154,6 +160,55 @@ func TestGetPublicIpResourceId(t *testing.T) {
}
}

// TestLinkPublicIpResourceId has several tests to cover the code of the function getLinkPublicIpResourceId
func TestLinkPublicIpResourceId(t *testing.T) {
linkPublicIpTestCases := []struct {
name string
clusterSpec infrastructurev1beta1.OscClusterSpec
machineSpec infrastructurev1beta1.OscMachineSpec
expLinkPublicIpFound bool
expGetLinkPublicIpResourceIdErr error
}{
{
name: "get publicIpId",
clusterSpec: defaultPublicIpInitialize,
machineSpec: defaultLinkVmInitialize,
expLinkPublicIpFound: true,
expGetLinkPublicIpResourceIdErr: nil,
},
{
name: "can not get publicIpId",
clusterSpec: defaultPublicIpInitialize,
machineSpec: defaultLinkVmInitialize,
expLinkPublicIpFound: false,
expGetLinkPublicIpResourceIdErr: fmt.Errorf("test-publicip does not exist"),
},
}
for _, lpitc := range linkPublicIpTestCases {
t.Run(lpitc.name, func(t *testing.T) {
_, machineScope := SetupMachine(t, lpitc.name, lpitc.clusterSpec, lpitc.machineSpec)
publicIpsSpec := lpitc.clusterSpec.Network.PublicIps
vmPublicIpName := lpitc.machineSpec.Node.Vm.PublicIpName
for _, publicIpSpec := range publicIpsSpec {
publicIpName := publicIpSpec.Name + "-uid"
linkPublicIpId := "eipassoc-" + publicIpName
linkPublicIpRef := machineScope.GetLinkPublicIpRef()
linkPublicIpRef.ResourceMap = make(map[string]string)
if lpitc.expLinkPublicIpFound {
linkPublicIpRef.ResourceMap[vmPublicIpName] = linkPublicIpId
}
linkPublicIpResourceId, err := getLinkPublicIpResourceId(vmPublicIpName, machineScope)
if err != nil {
assert.Equal(t, lpitc.expGetLinkPublicIpResourceIdErr, err, "getLinkPublicIpResourceId() should return the same error")
} else {
assert.Nil(t, lpitc.expGetLinkPublicIpResourceIdErr)
}
t.Logf("Find linkPublicIpResourceId %s\n", linkPublicIpResourceId)
}
})
}
}

// TestCheckPublicIpFormatParameters has several tests to cover the code of the function checkPublicIpFormatParameters
func TestCheckPublicIpFormatParameters(t *testing.T) {
publicIpTestCases := []struct {
Expand Down
39 changes: 39 additions & 0 deletions controllers/osccluster_securitygroup_controller_unit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,34 @@ var (
},
},
}

defaultSecurityGroupTagInitialize = infrastructurev1beta1.OscClusterSpec{
Network: infrastructurev1beta1.OscNetwork{
ClusterName: "test-cluster",
Net: infrastructurev1beta1.OscNet{
Name: "test-net",
IpRange: "10.0.0.0/16",
},
SecurityGroups: []*infrastructurev1beta1.OscSecurityGroup{
{
Name: "test-securitygroup",
Description: "test securitygroup",
Tag: "OscK8sMainSG",
SecurityGroupRules: []infrastructurev1beta1.OscSecurityGroupRule{
{
Name: "test-securitygrouprule",
Flow: "Inbound",
IpProtocol: "tcp",
IpRange: "0.0.0.0/0",
FromPortRange: 6443,
ToPortRange: 6443,
},
},
},
},
},
}

defaultSecurityGroupReconcile = infrastructurev1beta1.OscClusterSpec{
Network: infrastructurev1beta1.OscNetwork{
ClusterName: "test-cluster",
Expand Down Expand Up @@ -966,6 +994,17 @@ func TestReconcileCreateSecurityGroupCreate(t *testing.T) {
expCreateSecurityGroupRuleErr: nil,
expReconcileSecurityGroupErr: nil,
},
{
name: "create securityGroupTag",
spec: defaultSecurityGroupTagInitialize,
expSecurityGroupRuleFound: false,
expCreateSecurityGroupRuleFound: true,
expGetSecurityGroupFromNetIdsErr: nil,
expCreateSecurityGroupErr: nil,
expGetSecurityGroupRuleErr: nil,
expCreateSecurityGroupRuleErr: nil,
expReconcileSecurityGroupErr: nil,
},
{
name: "failed to create securityGroupRule",

Expand Down
130 changes: 123 additions & 7 deletions controllers/oscmachine_image_controller_unit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,9 @@ func TestReconcileImageGet(t *testing.T) {
expImageFound bool
expImageNameFound bool
expImageErr bool
expGetImageIdErr error
expGetImageNameErr error
expGetImageErr error
expReconcileImageErr error
}{
{
Expand All @@ -200,23 +203,136 @@ func TestReconcileImageGet(t *testing.T) {
expImageFound: true,
expImageNameFound: true,
expReconcileImageErr: nil,
expGetImageIdErr: nil,
expGetImageNameErr: nil,
expGetImageErr: nil,
expImageErr: false,
},
{
name: "failed to get Image",
name: "reconcile image",
spec: defaultImageClusterInitialize,
machineSpec: infrastructurev1beta1.OscMachineSpec{
Node: infrastructurev1beta1.OscNode{
Image: infrastructurev1beta1.OscImage{
Name: "test-image",
ResourceId: "test-image-uid",
},
Vm: infrastructurev1beta1.OscVm{
Name: "test-vm",
ImageId: "omi-image",
},
},
},
expImageFound: true,
expImageNameFound: true,
expReconcileImageErr: nil,
expGetImageIdErr: nil,
expGetImageNameErr: nil,
expGetImageErr: nil,
expImageErr: false,
},
{
name: "failed to get image",
spec: defaultImageClusterInitialize,
machineSpec: infrastructurev1beta1.OscMachineSpec{
Node: infrastructurev1beta1.OscNode{
Image: infrastructurev1beta1.OscImage{
Name: "test-image",
ResourceId: "test-image-uid",
},
Vm: infrastructurev1beta1.OscVm{
Name: "test-vm",
ImageId: "omi-image",
},
},
},
expImageFound: true,
expImageNameFound: true,
expGetImageIdErr: nil,
expGetImageNameErr: nil,
expGetImageErr: fmt.Errorf("GetImage generic error"),
expReconcileImageErr: fmt.Errorf("GetImage generic error"),
expImageErr: true,
},
{
name: "find no image",
spec: defaultImageClusterInitialize,
machineSpec: infrastructurev1beta1.OscMachineSpec{
Node: infrastructurev1beta1.OscNode{
Image: infrastructurev1beta1.OscImage{
Name: "test-image",
ResourceId: "test-image-uid",
},
Vm: infrastructurev1beta1.OscVm{
Name: "test-vm",
ImageId: "omi-image",
},
},
},
expImageFound: true,
expImageNameFound: true,
expGetImageIdErr: nil,
expGetImageNameErr: nil,
expGetImageErr: nil,
expReconcileImageErr: nil,
expImageErr: true,
},
{
name: "failed to get imageName",
spec: defaultImageClusterInitialize,
machineSpec: infrastructurev1beta1.OscMachineSpec{
Node: infrastructurev1beta1.OscNode{
Vm: infrastructurev1beta1.OscVm{
ImageId: "omi-image",
},
},
},
expImageFound: false,
expImageNameFound: false,
expImageErr: true,
expGetImageIdErr: nil,
expGetImageNameErr: fmt.Errorf("GetImageName generic error"),
expGetImageErr: nil,
expReconcileImageErr: fmt.Errorf("GetImageName generic error"),
expImageErr: false,
},
{
name: "failed to get image",
spec: defaultImageClusterInitialize,
machineSpec: infrastructurev1beta1.OscMachineSpec{
Node: infrastructurev1beta1.OscNode{
Vm: infrastructurev1beta1.OscVm{
ImageId: "omi-image",
},
},
},
expImageFound: true,
expImageNameFound: false,
expGetImageIdErr: nil,
expGetImageNameErr: nil,
expGetImageErr: fmt.Errorf("GetImage generic error"),
expReconcileImageErr: fmt.Errorf("GetImage generic error"),
expImageErr: false,
},
{
name: "failed to get ImageId",
spec: defaultImageClusterInitialize,
machineSpec: infrastructurev1beta1.OscMachineSpec{
Node: infrastructurev1beta1.OscNode{
Image: infrastructurev1beta1.OscImage{
Name: "test-image",
},
Vm: infrastructurev1beta1.OscVm{
Name: "test-vm",
},
},
},
expImageFound: false,
expImageNameFound: true,
expImageErr: false,
expGetImageIdErr: fmt.Errorf("GetImageId generic error"),
expGetImageNameErr: nil,
expGetImageErr: nil,
expReconcileImageErr: fmt.Errorf("GetImageId generic error"),
},
}
for _, itc := range imageTestCases {
Expand All @@ -242,24 +358,24 @@ func TestReconcileImageGet(t *testing.T) {
mockOscimageInterface.
EXPECT().
GetImageId(gomock.Eq(imageName)).
Return(imageId, itc.expReconcileImageErr)
Return(imageId, itc.expGetImageIdErr)
} else {
mockOscimageInterface.
EXPECT().
GetImageName(gomock.Eq(imageId)).
Return(imageName, itc.expReconcileImageErr)
Return(imageName, itc.expGetImageNameErr)
}
if itc.expImageFound {
if !itc.expImageErr {
if itc.expImageErr {
mockOscimageInterface.
EXPECT().
GetImage(gomock.Eq(imageId)).
Return(&(*image.Images)[0], itc.expReconcileImageErr)
Return(nil, itc.expGetImageErr)
} else {
mockOscimageInterface.
EXPECT().
GetImage(gomock.Eq(imageId)).
Return(nil, itc.expReconcileImageErr)
Return(&(*image.Images)[0], itc.expGetImageErr)
}
}

Expand Down
Loading