@@ -20,19 +20,19 @@ import (
20
20
"context"
21
21
"fmt"
22
22
"net"
23
- "net/http"
24
- "net/http/httptest"
25
23
"os"
26
24
"path/filepath"
27
25
"testing"
28
26
29
27
"github.com/google/go-cmp/cmp"
30
28
"github.com/spf13/pflag"
31
29
30
+ clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
32
31
"k8s.io/kubernetes/cmd/kube-scheduler/app"
33
32
"k8s.io/kubernetes/cmd/kube-scheduler/app/options"
34
33
"k8s.io/kubernetes/pkg/scheduler/apis/config"
35
34
"k8s.io/kubernetes/pkg/scheduler/apis/config/testing/defaults"
35
+ "sigs.k8s.io/controller-runtime/pkg/envtest"
36
36
37
37
"sigs.k8s.io/scheduler-plugins/pkg/capacityscheduling"
38
38
"sigs.k8s.io/scheduler-plugins/pkg/coscheduling"
@@ -48,42 +48,47 @@ import (
48
48
)
49
49
50
50
func TestSetup (t * testing.T ) {
51
+ testEnv := & envtest.Environment {
52
+ CRDDirectoryPaths : []string {
53
+ filepath .Join (".." , ".." , "manifests" , "crds" ),
54
+ },
55
+ }
56
+
57
+ // start envtest cluster
58
+ cfg , err := testEnv .Start ()
59
+ defer testEnv .Stop ()
60
+ if err != nil {
61
+ panic (err )
62
+ }
63
+
51
64
// temp dir
52
65
tmpDir , err := os .MkdirTemp ("" , "scheduler-options" )
53
66
if err != nil {
54
67
t .Fatal (err )
55
68
}
56
69
defer os .RemoveAll (tmpDir )
57
70
58
- // https server
59
- server := httptest .NewTLSServer (http .HandlerFunc (func (w http.ResponseWriter , req * http.Request ) {
60
- w .Header ().Set ("Content-Type" , "application/json" )
61
- w .WriteHeader (http .StatusOK )
62
- w .Write ([]byte (`{"metadata": {"name": "test"}}` ))
63
- }))
64
- defer server .Close ()
71
+ clusters := make (map [string ]* clientcmdapi.Cluster )
72
+ clusters ["default-cluster" ] = & clientcmdapi.Cluster {
73
+ Server : cfg .Host ,
74
+ CertificateAuthorityData : cfg .CAData ,
75
+ }
76
+ // https://github.com/kubernetes-sigs/controller-runtime/blob/v0.16.3/examples/scratch-env/main.go
77
+ user , err := testEnv .ControlPlane .AddUser (envtest.User {
78
+ Name : "envtest-admin" ,
79
+ Groups : []string {"system:masters" },
80
+ }, nil )
81
+ if err != nil {
82
+ t .Fatal (err )
83
+ }
84
+ kubeConfig , err := user .KubeConfig ()
85
+ if err != nil {
86
+ t .Fatalf ("unable to create kubeconfig: %v" , err )
87
+ }
65
88
66
89
configKubeconfig := filepath .Join (tmpDir , "config.kubeconfig" )
67
- if err := os .WriteFile (configKubeconfig , []byte (fmt .Sprintf (`
68
- apiVersion: v1
69
- kind: Config
70
- clusters:
71
- - cluster:
72
- insecure-skip-tls-verify: true
73
- server: %s
74
- name: default
75
- contexts:
76
- - context:
77
- cluster: default
78
- user: default
79
- name: default
80
- current-context: default
81
- users:
82
- - name: default
83
- user:
84
- username: config
85
- ` , server .URL )), os .FileMode (0600 )); err != nil {
86
- t .Fatal (err )
90
+ if err := os .WriteFile (configKubeconfig , kubeConfig , os .FileMode (0600 )); err != nil {
91
+ t .Fatalf ("unable to create kubeconfig file: %v" , err )
87
92
}
88
93
89
94
// PodState plugin config
0 commit comments