Remove KubeConfig Dependency for Store Tests
Removes the KubeConfig Dependency for the Store Test by using the FakeClient Instead. Unit Tests should not rely on a real KubeConfig. Fixes #2789
This commit is contained in:
parent
2486ad9500
commit
c783c08d81
4 changed files with 254 additions and 152 deletions
|
|
@ -272,7 +272,6 @@ func registerHealthz(ic *controller.NGINXController, mux *http.ServeMux) {
|
|||
}
|
||||
|
||||
func registerMetrics(reg *prometheus.Registry, mux *http.ServeMux) {
|
||||
|
||||
mux.Handle(
|
||||
"/metrics",
|
||||
promhttp.InstrumentMetricHandler(
|
||||
|
|
|
|||
|
|
@ -18,46 +18,51 @@ package main
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"k8s.io/api/core/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/kubernetes/fake"
|
||||
"k8s.io/ingress-nginx/internal/file"
|
||||
"k8s.io/ingress-nginx/internal/ingress/controller"
|
||||
"os"
|
||||
"syscall"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"k8s.io/ingress-nginx/internal/file"
|
||||
"k8s.io/ingress-nginx/internal/ingress/controller"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
func TestCreateApiserverClient(t *testing.T) {
|
||||
home := os.Getenv("HOME")
|
||||
kubeConfigFile := fmt.Sprintf("%v/.kube/config", home)
|
||||
|
||||
cli, err := createApiserverClient("", kubeConfigFile)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error creating Kubernetes REST client: %v", err)
|
||||
}
|
||||
if cli == nil {
|
||||
t.Fatal("Expected a REST client but none returned.")
|
||||
}
|
||||
|
||||
_, err = createApiserverClient("", "")
|
||||
_, err := createApiserverClient("", "")
|
||||
if err == nil {
|
||||
t.Fatal("Expected an error creating REST client without an API server URL or kubeconfig file.")
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleSigterm(t *testing.T) {
|
||||
home := os.Getenv("HOME")
|
||||
kubeConfigFile := fmt.Sprintf("%v/.kube/config", home)
|
||||
clientSet := fake.NewSimpleClientset()
|
||||
|
||||
cli, err := createApiserverClient("", kubeConfigFile)
|
||||
ns := "test"
|
||||
|
||||
cm := createConfigMap(clientSet, ns, t)
|
||||
defer deleteConfigMap(cm, ns, clientSet, t)
|
||||
|
||||
name := "test"
|
||||
pod := v1.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: name,
|
||||
Namespace: ns,
|
||||
},
|
||||
}
|
||||
|
||||
_, err := clientSet.CoreV1().Pods(ns).Create(&pod)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error creating Kubernetes REST client: %v", err)
|
||||
t.Fatalf("error creating pod %v: %v", pod, err)
|
||||
}
|
||||
|
||||
resetForTesting(func() { t.Fatal("bad parse") })
|
||||
|
||||
os.Setenv("POD_NAME", "test")
|
||||
os.Setenv("POD_NAMESPACE", "test")
|
||||
os.Setenv("POD_NAME", name)
|
||||
os.Setenv("POD_NAMESPACE", ns)
|
||||
defer os.Setenv("POD_NAME", "")
|
||||
defer os.Setenv("POD_NAMESPACE", "")
|
||||
|
||||
|
|
@ -69,7 +74,7 @@ func TestHandleSigterm(t *testing.T) {
|
|||
if err != nil {
|
||||
t.Errorf("Unexpected error creating NGINX controller: %v", err)
|
||||
}
|
||||
conf.Client = cli
|
||||
conf.Client = clientSet
|
||||
|
||||
fs, err := file.NewFakeFS()
|
||||
if err != nil {
|
||||
|
|
@ -93,8 +98,40 @@ func TestHandleSigterm(t *testing.T) {
|
|||
if err != nil {
|
||||
t.Error("Unexpected error sending SIGTERM signal.")
|
||||
}
|
||||
|
||||
err = clientSet.CoreV1().Pods(ns).Delete(name, &metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("error deleting pod %v: %v", pod, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRegisterHandlers(t *testing.T) {
|
||||
// TODO
|
||||
func createConfigMap(clientSet kubernetes.Interface, ns string, t *testing.T) string {
|
||||
t.Helper()
|
||||
t.Log("Creating temporal config map")
|
||||
|
||||
configMap := &v1.ConfigMap{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "config",
|
||||
SelfLink: fmt.Sprintf("/api/v1/namespaces/%s/configmaps/config", ns),
|
||||
},
|
||||
}
|
||||
|
||||
cm, err := clientSet.CoreV1().ConfigMaps(ns).Create(configMap)
|
||||
if err != nil {
|
||||
t.Errorf("error creating the configuration map: %v", err)
|
||||
}
|
||||
t.Logf("Temporal configmap %v created", cm)
|
||||
|
||||
return cm.Name
|
||||
}
|
||||
|
||||
func deleteConfigMap(cm, ns string, clientSet kubernetes.Interface, t *testing.T) {
|
||||
t.Helper()
|
||||
t.Logf("Deleting temporal configmap %v", cm)
|
||||
|
||||
err := clientSet.CoreV1().ConfigMaps(ns).Delete(cm, &metav1.DeleteOptions{})
|
||||
if err != nil {
|
||||
t.Errorf("error deleting the configmap: %v", err)
|
||||
}
|
||||
t.Logf("Temporal configmap %v deleted", cm)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue