66 "net/http"
77 "reflect"
88 "testing"
9+ "time"
910
1011 "github.com/davecgh/go-spew/spew"
1112 configv1 "github.com/openshift/api/config/v1"
@@ -22,29 +23,6 @@ import (
2223var mustGather01 embed.FS
2324
2425func TestSimpleChecks (t * testing.T ) {
25- mustGatherRoundTripper , err := manifestclient .NewRoundTripper ("testdata/must-gather-01" )
26- if err != nil {
27- t .Fatal (err )
28- }
29- testRoundTripper , err := manifestclient .NewTestingRoundTripper (mustGather01 , "testdata/must-gather-01" )
30- if err != nil {
31- t .Fatal (err )
32- }
33-
34- roundTrippers := []struct {
35- name string
36- roundTripper http.RoundTripper
37- }{
38- {
39- name : "directory read" ,
40- roundTripper : mustGatherRoundTripper ,
41- },
42- {
43- name : "embed read" ,
44- roundTripper : testRoundTripper ,
45- },
46- }
47-
4826 tests := []struct {
4927 name string
5028 testFn func (* testing.T , * http.Client )
@@ -178,15 +156,91 @@ func TestSimpleChecks(t *testing.T) {
178156 },
179157 },
180158 }
181- for _ , roundTripperTest := range roundTrippers {
182- httpClient := & http.Client {
183- Transport : roundTripperTest .roundTripper ,
184- }
185159
160+ for _ , roundTripperTest := range defaultRoundTrippers (t ) {
161+ t .Run (roundTripperTest .name , func (t * testing.T ) {
162+ for _ , test := range tests {
163+ t .Run (test .name , func (t * testing.T ) {
164+ test .testFn (t , roundTripperTest .getClient ())
165+ })
166+ }
167+ })
168+ }
169+ }
170+
171+ func defaultRoundTrippers (t * testing.T ) []* testRoundTrippers {
172+ t .Helper ()
173+
174+ mustGatherRoundTripper , err := manifestclient .NewRoundTripper ("testdata/must-gather-01" )
175+ if err != nil {
176+ t .Fatal (err )
177+ }
178+ testRoundTripper , err := manifestclient .NewTestingRoundTripper (mustGather01 , "testdata/must-gather-01" )
179+ if err != nil {
180+ t .Fatal (err )
181+ }
182+
183+ return []* testRoundTrippers {
184+ {
185+ name : "directory read" ,
186+ roundTripper : mustGatherRoundTripper ,
187+ },
188+ {
189+ name : "embed read" ,
190+ roundTripper : testRoundTripper ,
191+ },
192+ }
193+ }
194+
195+ type testRoundTrippers struct {
196+ name string
197+ roundTripper http.RoundTripper
198+ }
199+
200+ func (r * testRoundTrippers ) getClient () * http.Client {
201+ return & http.Client {
202+ Transport : r .roundTripper ,
203+ }
204+ }
205+
206+ func TestWatchChecks (t * testing.T ) {
207+ tests := []struct {
208+ name string
209+ testFn func (* testing.T , * http.Client )
210+ }{
211+ {
212+ name : "WATCH-from-individual-file-success-server-close" ,
213+ testFn : func (t * testing.T , httpClient * http.Client ) {
214+ timeout := int64 (4 )
215+ configClient , err := configclient .NewForConfigAndClient (& rest.Config {}, httpClient )
216+ if err != nil {
217+ t .Fatal (err )
218+ }
219+ watcher , err := configClient .ConfigV1 ().FeatureGates ().Watch (context .TODO (), metav1.ListOptions {
220+ TimeoutSeconds : & timeout ,
221+ })
222+ if err != nil {
223+ t .Fatal (err )
224+ }
225+ select {
226+ case <- watcher .ResultChan ():
227+ t .Fatal ("closed early!" )
228+ case <- time .After (500 * time .Millisecond ):
229+ }
230+
231+ select {
232+ case <- watcher .ResultChan ():
233+ case <- time .After (5 * time .Second ):
234+ t .Fatal ("closed late!" )
235+ }
236+ },
237+ },
238+ }
239+ for _ , roundTripperTest := range defaultRoundTrippers (t ) {
186240 t .Run (roundTripperTest .name , func (t * testing.T ) {
187241 for _ , test := range tests {
188242 t .Run (test .name , func (t * testing.T ) {
189- test .testFn (t , httpClient )
243+ test .testFn (t , roundTripperTest . getClient () )
190244 })
191245 }
192246 })
0 commit comments