Skip to content

Commit

Permalink
[testing] - add more coverage (#194)
Browse files Browse the repository at this point in the history
* add tests for filter and version

* exclude mock package from coverage since it's autogenerated

* add helpers test

* exclude autogenerated deepcopy from coverage
  • Loading branch information
AshleyDumaine authored Mar 16, 2024
1 parent 98de934 commit b67426d
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
.idea
bin/*
kind-logs-*
cover.out
cover.out*
kubeconfig*
.devbox/*
docs/book
Expand Down
4 changes: 3 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,9 @@ docs:

.PHONY: test
test: generate fmt vet envtest ## Run tests.
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(CACHE_BIN) -p path)" go test -race -timeout 60s ./... -coverprofile cover.out
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(CACHE_BIN) -p path)" go test -race -timeout 60s `go list ./... | grep -v ./mock` -coverprofile cover.out.tmp
grep -v "zz_generated.deepcopy.go" cover.out.tmp > cover.out
rm cover.out.tmp

.PHONY: e2etest
e2etest: generate local-deploy chainsaw
Expand Down
6 changes: 5 additions & 1 deletion cloud/services/loadbalancers.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@ func CreateNodeBalancer(ctx context.Context, clusterScope *scope.ClusterScope, l
Label: NBLabel,
Tags: tags,
}
linodeNBs, err := clusterScope.LinodeClient.ListNodeBalancers(ctx, linodego.NewListOptions(1, listFilter.String()))
filter, err := listFilter.String()
if err != nil {
return nil, err
}
linodeNBs, err := clusterScope.LinodeClient.ListNodeBalancers(ctx, linodego.NewListOptions(1, filter))
if err != nil {
logger.Info("Failed to list NodeBalancers", "error", err.Error())

Expand Down
6 changes: 5 additions & 1 deletion controller/linodemachine_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,11 @@ func (r *LinodeMachineReconciler) reconcileCreate(
Label: machineScope.LinodeMachine.Name,
Tags: tags,
}
linodeInstances, err := machineScope.LinodeClient.ListInstances(ctx, linodego.NewListOptions(1, listFilter.String()))
filter, err := listFilter.String()
if err != nil {
return nil, err
}
linodeInstances, err := machineScope.LinodeClient.ListInstances(ctx, linodego.NewListOptions(1, filter))
if err != nil {
logger.Error(err, "Failed to list Linode machine instances")

Expand Down
6 changes: 5 additions & 1 deletion controller/linodevpc_controller_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,11 @@ func (r *LinodeVPCReconciler) reconcileVPC(ctx context.Context, vpcScope *scope.
Label: createConfig.Label,
Tags: nil,
}
if vpcs, err := vpcScope.LinodeClient.ListVPCs(ctx, linodego.NewListOptions(1, listFilter.String())); err != nil {
filter, err := listFilter.String()
if err != nil {
return err
}
if vpcs, err := vpcScope.LinodeClient.ListVPCs(ctx, linodego.NewListOptions(1, filter)); err != nil {
logger.Error(err, "Failed to list VPCs")

return err
Expand Down
6 changes: 3 additions & 3 deletions util/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ func (f Filter) MarshalJSON() ([]byte, error) {

// String returns the string representation of the encoded value from
// [Filter.MarshalJSON].
func (f Filter) String() string {
func (f Filter) String() (string, error) {
p, err := f.MarshalJSON()
if err != nil {
panic("this should not have failed")
return "", err
}

return string(p)
return string(p), nil
}
54 changes: 54 additions & 0 deletions util/filter_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package util

import "testing"

func TestString(t *testing.T) {
t.Parallel()
tests := []struct {
name string
filter Filter
expectErr bool
}{{
name: "success ID",
filter: Filter{
ID: Pointer(123),
Label: "",
Tags: nil,
},
expectErr: false,
}, {
name: "success label",
filter: Filter{
ID: nil,
Label: "test",
Tags: nil,
},
expectErr: false,
}, {
name: "success tags",
filter: Filter{
ID: nil,
Label: "",
Tags: []string{"testtag"},
},
expectErr: false,
}, {
name: "failure unmarshal",
filter: Filter{
ID: nil,
Label: "",
Tags: []string{},
},
expectErr: true,
}}
for _, tt := range tests {
testcase := tt
t.Run(testcase.name, func(t *testing.T) {
t.Parallel()
_, err := testcase.filter.String()
if testcase.expectErr && err != nil {
t.Error("expected err but got nil")
}
})
}
}
51 changes: 51 additions & 0 deletions util/helpers_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package util

import (
"errors"
"testing"

"github.com/linode/linodego"
)

func TestIgnoreLinodeAPIError(t *testing.T) {
t.Parallel()
tests := []struct {
name string
err error
code int
shouldFilter bool
}{{
name: "Not Linode API error",
err: errors.New("foo"),
code: 0,
shouldFilter: false,
}, {
name: "Ignore not found Linode API error",
err: linodego.Error{
Response: nil,
Code: 400,
Message: "not found",
},
code: 400,
shouldFilter: true,
}, {
name: "Don't ignore not found Linode API error",
err: linodego.Error{
Response: nil,
Code: 400,
Message: "not found",
},
code: 500,
shouldFilter: false,
}}
for _, tt := range tests {
testcase := tt
t.Run(testcase.name, func(t *testing.T) {
t.Parallel()
err := IgnoreLinodeAPIError(testcase.err, testcase.code)
if testcase.shouldFilter && err != nil {
t.Error("expected err but got nil")
}
})
}
}
11 changes: 11 additions & 0 deletions version/version_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package version

import "testing"

func TestVersion(t *testing.T) {
t.Parallel()
vers := GetVersion()
if vers != "dev" {
t.Errorf("unset version should be dev, got %s", vers)
}
}

0 comments on commit b67426d

Please sign in to comment.