Skip to content

Commit b1f649c

Browse files
committed
Issue 40: Unit-test for CRD
* This is a exploratory exercise on writing unit-test for data_collector.go and nic_job_list.go * The nic_job_list_test.go works but data_collector_test.go does not * The tests themselves are basic to establish a familiarity in writing tests
1 parent b28f5db commit b1f649c

File tree

2 files changed

+118
-0
lines changed

2 files changed

+118
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package data_collector
2+
3+
import (
4+
helmClient "github.com/mittwald/go-helm-client"
5+
crdClient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
6+
"k8s.io/client-go/kubernetes"
7+
"k8s.io/client-go/rest"
8+
metricsClient "k8s.io/metrics/pkg/client/clientset/versioned"
9+
"log"
10+
"os"
11+
"testing"
12+
)
13+
14+
func TestDataCollector_AllNamespacesExist(t *testing.T) {
15+
type fields struct {
16+
BaseDir string
17+
Namespaces []string
18+
Logger *log.Logger
19+
LogFile *os.File
20+
K8sRestConfig *rest.Config
21+
K8sCoreClientSet *kubernetes.Clientset
22+
K8sCrdClientSet *crdClient.Clientset
23+
K8sMetricsClientSet *metricsClient.Clientset
24+
K8sHelmClientSet map[string]helmClient.Client
25+
}
26+
27+
var (
28+
logger *log.Logger = log.New(os.Stdout, "TEST: ", log.LstdFlags)
29+
logFile, _ = os.Create("/path/to/logfile") // Make sure to handle the error in real code.
30+
restConfig *rest.Config = &rest.Config{ /* ... */ }
31+
//coreClientSet *kubernetes.Clientset = /* ... */
32+
//crdClientSet *crdClient.Clientset = crdClient.NewForConfig(config)
33+
//metricsClientSet *metricsClient.Clientset = /* ... */
34+
//helmClientSets map[string]helmClient.Client = /* ... */
35+
)
36+
37+
//crdClientSet *crdClient.Clientset = crdClient.NewForConfig(config)
38+
39+
tests := []struct {
40+
name string
41+
fields fields
42+
want bool
43+
}{
44+
{
45+
name: "Test Case 1",
46+
fields: fields{
47+
BaseDir: "/path/to/base",
48+
Namespaces: []string{"default", "kube-system"},
49+
Logger: logger,
50+
LogFile: logFile,
51+
K8sRestConfig: restConfig,
52+
//K8sCoreClientSet: coreClientSet,
53+
//K8sCrdClientSet: crdClientSet,
54+
//K8sMetricsClientSet: metricsClientSet,
55+
//K8sHelmClientSet: helmClientSets,
56+
},
57+
want: true,
58+
},
59+
// You can add more test cases as needed.
60+
}
61+
for _, tt := range tests {
62+
t.Run(tt.name, func(t *testing.T) {
63+
c := &DataCollector{
64+
BaseDir: tt.fields.BaseDir,
65+
Namespaces: tt.fields.Namespaces,
66+
Logger: tt.fields.Logger,
67+
LogFile: tt.fields.LogFile,
68+
K8sRestConfig: tt.fields.K8sRestConfig,
69+
K8sCoreClientSet: tt.fields.K8sCoreClientSet,
70+
K8sCrdClientSet: tt.fields.K8sCrdClientSet,
71+
K8sMetricsClientSet: tt.fields.K8sMetricsClientSet,
72+
K8sHelmClientSet: tt.fields.K8sHelmClientSet,
73+
}
74+
if got := c.AllNamespacesExist(); got != tt.want {
75+
t.Errorf("AllNamespacesExist() = %v, want %v", got, tt.want)
76+
}
77+
})
78+
}
79+
}

pkg/jobs/nic_job_list_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package jobs
2+
3+
import (
4+
"context"
5+
"github.com/nginxinc/nginx-k8s-supportpkg/pkg/data_collector"
6+
"reflect"
7+
"testing"
8+
"time"
9+
)
10+
11+
func TestNICJobList(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
want []Job
15+
}{
16+
// TODO: Add test cases.
17+
{
18+
name: "test-1",
19+
want: []Job{
20+
{
21+
Name: "pod-list",
22+
Timeout: time.Second * 10,
23+
Execute: func(dc *data_collector.DataCollector, ctx context.Context, ch chan JobResult) {
24+
jobResult := JobResult{Files: make(map[string][]byte), Error: nil}
25+
ch <- jobResult
26+
},
27+
},
28+
},
29+
},
30+
}
31+
32+
for _, tt := range tests {
33+
t.Run(tt.name, func(t *testing.T) {
34+
if got := NICJobList(); !reflect.DeepEqual(got, tt.want) {
35+
t.Errorf("NICJobList() = %v, want %v", got, tt.want)
36+
}
37+
})
38+
}
39+
}

0 commit comments

Comments
 (0)