Skip to content

Commit e5c5ff0

Browse files
authored
Merge pull request #70 from fuweid/move-cache-checker-into-test
request: move cache checker into ut
2 parents 5274e46 + 75827af commit e5c5ff0

File tree

3 files changed

+56
-21
lines changed

3 files changed

+56
-21
lines changed

request/client.go

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,9 @@ import (
99

1010
"k8s.io/client-go/rest"
1111
"k8s.io/client-go/tools/clientcmd"
12-
"k8s.io/client-go/tools/metrics"
13-
"k8s.io/klog/v2"
1412
"k8s.io/kubectl/pkg/scheme"
1513
)
1614

17-
// FIXME(weifu):
18-
//
19-
// Write UT to cover it instead of hook
20-
type transportCacheTracker struct{}
21-
22-
// Increment implements k8s.io/client-go/tools/metrics.TransportCreateCallsMetric interface.
23-
func (t *transportCacheTracker) Increment(result string) {
24-
if result != "uncacheable" {
25-
klog.Fatal("unexpected use cache transport")
26-
}
27-
klog.V(3).Infof("transport cache: %s", result)
28-
}
29-
30-
func init() {
31-
metrics.Register(metrics.RegisterOpts{
32-
TransportCreateCalls: &transportCacheTracker{},
33-
})
34-
}
35-
3615
// NewClients creates N rest.Interface.
3716
//
3817
// FIXME(weifu):

request/client_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package request
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
"k8s.io/client-go/tools/metrics"
9+
)
10+
11+
type transportCacheTracker struct{}
12+
13+
// Increment implements k8s.io/client-go/tools/metrics.TransportCreateCallsMetric interface.
14+
func (t *transportCacheTracker) Increment(result string) {
15+
if result != "uncacheable" {
16+
panic(fmt.Errorf("unexpected use cache transport: %s", result))
17+
}
18+
fmt.Printf("transport cache: %s\n", result)
19+
}
20+
21+
func init() {
22+
metrics.Register(metrics.RegisterOpts{
23+
TransportCreateCalls: &transportCacheTracker{},
24+
})
25+
}
26+
27+
func TestNewClientShouldNotPanic(t *testing.T) {
28+
defer func() {
29+
if r := recover(); r != nil {
30+
t.Fatalf("should not reuse transport: %v", r)
31+
}
32+
}()
33+
_, err := NewClients("testdata/dummy_nonexistent_kubeconfig.yaml", 10)
34+
assert.NoError(t, err)
35+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: v1
2+
clusters:
3+
- cluster:
4+
server: https://unit-test.kperf.io
5+
name: unit-test.kperf.io
6+
contexts:
7+
- context:
8+
cluster: unit-test.kperf.io
9+
user: testing@unit-test.kperf.io
10+
name: testing@unit-test.kperf.io
11+
current-context: testing@unit-test.kperf.io
12+
kind: Config
13+
preferences: {}
14+
users:
15+
- name: testing@unit-test.kperf.io
16+
user:
17+
exec:
18+
apiVersion: client.authentication.k8s.io/v1beta1
19+
command: unknown
20+
interactiveMode: IfAvailable
21+
provideClusterInfo: false

0 commit comments

Comments
 (0)