Skip to content

Commit e4a5cfd

Browse files
committed
add ut for vcctl template command
Signed-off-by: HaoJie Liu <[email protected]>
1 parent cbe316d commit e4a5cfd

File tree

2 files changed

+200
-0
lines changed

2 files changed

+200
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package job
2+
3+
import (
4+
"encoding/json"
5+
"io/ioutil"
6+
"net/http"
7+
"net/http/httptest"
8+
"os"
9+
"strings"
10+
"testing"
11+
12+
"github.com/spf13/cobra"
13+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
14+
15+
"volcano.sh/apis/pkg/apis/batch/v1alpha1"
16+
)
17+
18+
func TestGenerateJobTemplate(t *testing.T) {
19+
response := v1alpha1.Job{}
20+
jobTemplate := &unstructured.Unstructured{
21+
Object: map[string]interface{}{
22+
"kind": "JobTemplate",
23+
"apiVersion": "batch.volcano.sh/v1alpha1",
24+
},
25+
}
26+
27+
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
28+
w.Header().Set("Content-Type", "application/json")
29+
30+
if strings.Contains(r.URL.String(), "jobtemplates") {
31+
val, err := json.Marshal(jobTemplate)
32+
if err == nil {
33+
w.Write(val)
34+
}
35+
return
36+
}
37+
val, err := json.Marshal(response)
38+
if err == nil {
39+
w.Write(val)
40+
}
41+
})
42+
43+
server := httptest.NewServer(handler)
44+
defer server.Close()
45+
46+
fileName := "testJob.yaml"
47+
val, err := json.Marshal(response)
48+
if err != nil {
49+
panic(err)
50+
}
51+
err = ioutil.WriteFile(fileName, val, os.ModePerm)
52+
if err != nil {
53+
panic(err)
54+
}
55+
defer os.Remove(fileName)
56+
57+
testCases := []struct {
58+
Name string
59+
ExpectValue error
60+
FileName string
61+
}{
62+
{
63+
Name: "GenerateTemplate",
64+
ExpectValue: nil,
65+
},
66+
{
67+
Name: "GenerateTemplateWithFile",
68+
FileName: fileName,
69+
ExpectValue: nil,
70+
},
71+
}
72+
73+
for i, testcase := range testCases {
74+
generateJobTemplateFlags = &generateTemplateFlags{
75+
commonFlags: commonFlags{
76+
Master: server.URL,
77+
},
78+
JobName: "test",
79+
Namespace: "test",
80+
}
81+
if testcase.FileName != "" {
82+
generateJobTemplateFlags.FileName = testcase.FileName
83+
}
84+
85+
err := GenerateJobTemplate()
86+
if err != nil {
87+
t.Errorf("case %d (%s): expected: %v, got %v ", i, testcase.Name, testcase.ExpectValue, err)
88+
}
89+
}
90+
91+
}
92+
93+
func TestInitTemplateGenerateFlags(t *testing.T) {
94+
var cmd cobra.Command
95+
InitTemplateGenerateFlags(&cmd)
96+
97+
if cmd.Flag("namespace") == nil {
98+
t.Errorf("Could not find the flag namespace")
99+
}
100+
}

pkg/cli/job/template_run_test.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package job
2+
3+
import (
4+
"encoding/json"
5+
"io/ioutil"
6+
"net/http"
7+
"net/http/httptest"
8+
"os"
9+
"strings"
10+
"testing"
11+
12+
"github.com/spf13/cobra"
13+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
14+
15+
"volcano.sh/apis/pkg/apis/batch/v1alpha1"
16+
)
17+
18+
func TestRunJobTemplate(t *testing.T) {
19+
response := v1alpha1.Job{}
20+
jobTemplate := &unstructured.Unstructured{
21+
Object: map[string]interface{}{
22+
"kind": "JobTemplate",
23+
"apiVersion": "batch.volcano.sh/v1alpha1",
24+
},
25+
}
26+
27+
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
28+
w.Header().Set("Content-Type", "application/json")
29+
30+
if strings.Contains(r.URL.String(), "jobtemplates") {
31+
val, err := json.Marshal(jobTemplate)
32+
if err == nil {
33+
w.Write(val)
34+
}
35+
return
36+
}
37+
val, err := json.Marshal(response)
38+
if err == nil {
39+
w.Write(val)
40+
}
41+
})
42+
43+
server := httptest.NewServer(handler)
44+
defer server.Close()
45+
46+
fileName := "testTemplate.yaml"
47+
val, err := json.Marshal(jobTemplate)
48+
if err != nil {
49+
panic(err)
50+
}
51+
err = ioutil.WriteFile(fileName, val, os.ModePerm)
52+
if err != nil {
53+
panic(err)
54+
}
55+
defer os.Remove(fileName)
56+
57+
testCases := []struct {
58+
Name string
59+
ExpectValue error
60+
FileName string
61+
}{
62+
{
63+
Name: "RunJob",
64+
ExpectValue: nil,
65+
},
66+
{
67+
Name: "RunJobWithFile",
68+
FileName: fileName,
69+
ExpectValue: nil,
70+
},
71+
}
72+
73+
for i, testcase := range testCases {
74+
launchJobTemplateFlags = &runTemplateFlags{
75+
commonFlags: commonFlags{
76+
Master: server.URL,
77+
},
78+
TemplateName: "test",
79+
TemplateNamespace: "test",
80+
}
81+
if testcase.FileName != "" {
82+
launchJobTemplateFlags.FileName = testcase.FileName
83+
}
84+
85+
err := RunJobTemplate()
86+
if err != nil {
87+
t.Errorf("case %d (%s): expected: %v, got %v ", i, testcase.Name, testcase.ExpectValue, err)
88+
}
89+
}
90+
91+
}
92+
93+
func TestInitTemplateRunFlags(t *testing.T) {
94+
var cmd cobra.Command
95+
InitTemplateRunFlags(&cmd)
96+
97+
if cmd.Flag("namespace") == nil {
98+
t.Errorf("Could not find the flag namespace")
99+
}
100+
}

0 commit comments

Comments
 (0)