@@ -20,10 +20,10 @@ import (
20
20
"context"
21
21
"errors"
22
22
"testing"
23
+ "time"
23
24
24
25
"github.com/google/go-cmp/cmp"
25
26
"github.com/google/go-cmp/cmp/cmpopts"
26
- batchv1 "k8s.io/api/batch/v1"
27
27
apierrors "k8s.io/apimachinery/pkg/api/errors"
28
28
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
29
29
"k8s.io/apimachinery/pkg/runtime"
@@ -33,9 +33,12 @@ import (
33
33
"sigs.k8s.io/kueue/cmd/experimental/kjobctl/client-go/clientset/versioned/fake"
34
34
cmdtesting "sigs.k8s.io/kueue/cmd/experimental/kjobctl/pkg/cmd/testing"
35
35
"sigs.k8s.io/kueue/cmd/experimental/kjobctl/pkg/constants"
36
+ "sigs.k8s.io/kueue/cmd/experimental/kjobctl/pkg/testing/wrappers"
36
37
)
37
38
38
39
func TestBuilder (t * testing.T ) {
40
+ testStartTime := time .Now ()
41
+
39
42
testCases := map [string ]struct {
40
43
namespace string
41
44
profile string
@@ -61,15 +64,9 @@ func TestBuilder(t *testing.T) {
61
64
namespace : metav1 .NamespaceDefault ,
62
65
profile : "profile" ,
63
66
kjobctlObjs : []runtime.Object {
64
- & v1alpha1.ApplicationProfile {
65
- ObjectMeta : metav1.ObjectMeta {
66
- Name : "profile" ,
67
- Namespace : metav1 .NamespaceDefault ,
68
- },
69
- Spec : v1alpha1.ApplicationProfileSpec {
70
- SupportedModes : []v1alpha1.SupportedMode {{Name : v1alpha1 .JobMode }},
71
- },
72
- },
67
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
68
+ WithSupportedMode (v1alpha1.SupportedMode {Name : v1alpha1 .JobMode }).
69
+ Obj (),
73
70
},
74
71
wantErr : noApplicationProfileModeSpecifiedErr ,
75
72
},
@@ -78,15 +75,9 @@ func TestBuilder(t *testing.T) {
78
75
profile : "profile" ,
79
76
mode : v1alpha1 .JobMode ,
80
77
kjobctlObjs : []runtime.Object {
81
- & v1alpha1.ApplicationProfile {
82
- ObjectMeta : metav1.ObjectMeta {
83
- Name : "profile" ,
84
- Namespace : metav1 .NamespaceDefault ,
85
- },
86
- Spec : v1alpha1.ApplicationProfileSpec {
87
- SupportedModes : []v1alpha1.SupportedMode {{Name : v1alpha1 .InteractiveMode }},
88
- },
89
- },
78
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
79
+ WithSupportedMode (v1alpha1.SupportedMode {Name : v1alpha1 .InteractiveMode }).
80
+ Obj (),
90
81
},
91
82
wantErr : applicationProfileModeNotConfiguredErr ,
92
83
},
@@ -95,15 +86,9 @@ func TestBuilder(t *testing.T) {
95
86
profile : "profile" ,
96
87
mode : "Invalid" ,
97
88
kjobctlObjs : []runtime.Object {
98
- & v1alpha1.ApplicationProfile {
99
- ObjectMeta : metav1.ObjectMeta {
100
- Name : "profile" ,
101
- Namespace : metav1 .NamespaceDefault ,
102
- },
103
- Spec : v1alpha1.ApplicationProfileSpec {
104
- SupportedModes : []v1alpha1.SupportedMode {{Name : v1alpha1 .InteractiveMode }},
105
- },
106
- },
89
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
90
+ WithSupportedMode (v1alpha1.SupportedMode {Name : v1alpha1 .InteractiveMode }).
91
+ Obj (),
107
92
},
108
93
wantErr : invalidApplicationProfileModeErr ,
109
94
},
@@ -112,18 +97,12 @@ func TestBuilder(t *testing.T) {
112
97
profile : "profile" ,
113
98
mode : v1alpha1 .JobMode ,
114
99
kjobctlObjs : []runtime.Object {
115
- & v1alpha1.ApplicationProfile {
116
- ObjectMeta : metav1.ObjectMeta {
117
- Name : "profile" ,
118
- Namespace : metav1 .NamespaceDefault ,
119
- },
120
- Spec : v1alpha1.ApplicationProfileSpec {
121
- SupportedModes : []v1alpha1.SupportedMode {{
122
- Name : v1alpha1 .JobMode ,
123
- RequiredFlags : []v1alpha1.Flag {v1alpha1 .CmdFlag },
124
- }},
125
- },
126
- },
100
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
101
+ WithSupportedMode (v1alpha1.SupportedMode {
102
+ Name : v1alpha1 .JobMode ,
103
+ RequiredFlags : []v1alpha1.Flag {v1alpha1 .CmdFlag },
104
+ }).
105
+ Obj (),
127
106
},
128
107
wantErr : noCommandSpecifiedErr ,
129
108
},
@@ -132,18 +111,12 @@ func TestBuilder(t *testing.T) {
132
111
profile : "profile" ,
133
112
mode : v1alpha1 .JobMode ,
134
113
kjobctlObjs : []runtime.Object {
135
- & v1alpha1.ApplicationProfile {
136
- ObjectMeta : metav1.ObjectMeta {
137
- Name : "profile" ,
138
- Namespace : metav1 .NamespaceDefault ,
139
- },
140
- Spec : v1alpha1.ApplicationProfileSpec {
141
- SupportedModes : []v1alpha1.SupportedMode {{
142
- Name : v1alpha1 .JobMode ,
143
- RequiredFlags : []v1alpha1.Flag {v1alpha1 .ParallelismFlag },
144
- }},
145
- },
146
- },
114
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
115
+ WithSupportedMode (v1alpha1.SupportedMode {
116
+ Name : v1alpha1 .JobMode ,
117
+ RequiredFlags : []v1alpha1.Flag {v1alpha1 .ParallelismFlag },
118
+ }).
119
+ Obj (),
147
120
},
148
121
wantErr : noParallelismSpecifiedErr ,
149
122
},
@@ -152,18 +125,12 @@ func TestBuilder(t *testing.T) {
152
125
profile : "profile" ,
153
126
mode : v1alpha1 .JobMode ,
154
127
kjobctlObjs : []runtime.Object {
155
- & v1alpha1.ApplicationProfile {
156
- ObjectMeta : metav1.ObjectMeta {
157
- Name : "profile" ,
158
- Namespace : metav1 .NamespaceDefault ,
159
- },
160
- Spec : v1alpha1.ApplicationProfileSpec {
161
- SupportedModes : []v1alpha1.SupportedMode {{
162
- Name : v1alpha1 .JobMode ,
163
- RequiredFlags : []v1alpha1.Flag {v1alpha1 .CompletionsFlag },
164
- }},
165
- },
166
- },
128
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
129
+ WithSupportedMode (v1alpha1.SupportedMode {
130
+ Name : v1alpha1 .JobMode ,
131
+ RequiredFlags : []v1alpha1.Flag {v1alpha1 .CompletionsFlag },
132
+ }).
133
+ Obj (),
167
134
},
168
135
wantErr : noCompletionsSpecifiedErr ,
169
136
},
@@ -172,18 +139,12 @@ func TestBuilder(t *testing.T) {
172
139
profile : "profile" ,
173
140
mode : v1alpha1 .JobMode ,
174
141
kjobctlObjs : []runtime.Object {
175
- & v1alpha1.ApplicationProfile {
176
- ObjectMeta : metav1.ObjectMeta {
177
- Name : "profile" ,
178
- Namespace : metav1 .NamespaceDefault ,
179
- },
180
- Spec : v1alpha1.ApplicationProfileSpec {
181
- SupportedModes : []v1alpha1.SupportedMode {{
182
- Name : v1alpha1 .JobMode ,
183
- RequiredFlags : []v1alpha1.Flag {v1alpha1 .RequestFlag },
184
- }},
185
- },
186
- },
142
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
143
+ WithSupportedMode (v1alpha1.SupportedMode {
144
+ Name : v1alpha1 .JobMode ,
145
+ RequiredFlags : []v1alpha1.Flag {v1alpha1 .RequestFlag },
146
+ }).
147
+ Obj (),
187
148
},
188
149
wantErr : noRequestsSpecifiedErr ,
189
150
},
@@ -192,18 +153,12 @@ func TestBuilder(t *testing.T) {
192
153
profile : "profile" ,
193
154
mode : v1alpha1 .JobMode ,
194
155
kjobctlObjs : []runtime.Object {
195
- & v1alpha1.ApplicationProfile {
196
- ObjectMeta : metav1.ObjectMeta {
197
- Name : "profile" ,
198
- Namespace : metav1 .NamespaceDefault ,
199
- },
200
- Spec : v1alpha1.ApplicationProfileSpec {
201
- SupportedModes : []v1alpha1.SupportedMode {{
202
- Name : v1alpha1 .JobMode ,
203
- RequiredFlags : []v1alpha1.Flag {v1alpha1 .LocalQueueFlag },
204
- }},
205
- },
206
- },
156
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
157
+ WithSupportedMode (v1alpha1.SupportedMode {
158
+ Name : v1alpha1 .JobMode ,
159
+ RequiredFlags : []v1alpha1.Flag {v1alpha1 .LocalQueueFlag },
160
+ }).
161
+ Obj (),
207
162
},
208
163
wantErr : noLocalQueueSpecifiedErr ,
209
164
},
@@ -212,38 +167,17 @@ func TestBuilder(t *testing.T) {
212
167
profile : "profile" ,
213
168
mode : v1alpha1 .JobMode ,
214
169
kjobctlObjs : []runtime.Object {
215
- & v1alpha1.JobTemplate {
216
- ObjectMeta : metav1.ObjectMeta {
217
- Namespace : metav1 .NamespaceDefault ,
218
- Name : "job-template" ,
219
- },
220
- },
221
- & v1alpha1.ApplicationProfile {
222
- ObjectMeta : metav1.ObjectMeta {
223
- Name : "profile" ,
224
- Namespace : metav1 .NamespaceDefault ,
225
- },
226
- Spec : v1alpha1.ApplicationProfileSpec {
227
- SupportedModes : []v1alpha1.SupportedMode {{
228
- Name : v1alpha1 .JobMode ,
229
- Template : "job-template" ,
230
- }},
231
- },
232
- },
233
- },
234
- wantObj : & batchv1.Job {
235
- TypeMeta : metav1.TypeMeta {
236
- Kind : "Job" ,
237
- APIVersion : "batch/v1" ,
238
- },
239
- ObjectMeta : metav1.ObjectMeta {
240
- GenerateName : "profile-" ,
241
- Namespace : metav1 .NamespaceDefault ,
242
- Labels : map [string ]string {
243
- constants .ProfileLabel : "profile" ,
244
- },
245
- },
170
+ wrappers .MakeJobTemplate ("job-template" , metav1 .NamespaceDefault ).Obj (),
171
+ wrappers .MakeApplicationProfile ("profile" , metav1 .NamespaceDefault ).
172
+ WithSupportedMode (v1alpha1.SupportedMode {
173
+ Name : v1alpha1 .JobMode ,
174
+ Template : "job-template" ,
175
+ }).
176
+ Obj (),
246
177
},
178
+ wantObj : wrappers .MakeJob ("" , metav1 .NamespaceDefault ).GenerateName ("profile-" ).
179
+ Label (constants .ProfileLabel , "profile" ).
180
+ Obj (),
247
181
},
248
182
}
249
183
for name , tc := range testCases {
@@ -253,7 +187,7 @@ func TestBuilder(t *testing.T) {
253
187
254
188
tcg := cmdtesting .NewTestClientGetter ().
255
189
WithKjobctlClientset (fake .NewSimpleClientset (tc .kjobctlObjs ... ))
256
- gotObjs , gotErr := NewBuilder (tcg ).
190
+ gotObjs , gotErr := NewBuilder (tcg , testStartTime ).
257
191
WithNamespace (tc .namespace ).
258
192
WithProfileName (tc .profile ).
259
193
WithModeName (tc .mode ).
0 commit comments