mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
add warning check to managedFields integration test
This commit is contained in:
parent
fc1841d72f
commit
ba2f6104f6
@ -26,6 +26,7 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -35,6 +36,7 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
"k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
|
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
|
||||||
@ -115,8 +117,8 @@ func TestMutatingWebhookResetsInvalidManagedFields(t *testing.T) {
|
|||||||
|
|
||||||
var pod *corev1.Pod
|
var pod *corev1.Pod
|
||||||
var lastErr error
|
var lastErr error
|
||||||
// TODO(kwiesmueller): define warning format in the apiserver and use here
|
// We just expect the general warning text as the detail order might change
|
||||||
// expectedWarning := fieldmanager.InvalidManagedFieldsAfterMutatingAdmissionWarningFormat
|
expectedWarning := fmt.Sprintf(fieldmanager.InvalidManagedFieldsAfterMutatingAdmissionWarningFormat, "")
|
||||||
|
|
||||||
// Make sure reset happens on patch requests
|
// Make sure reset happens on patch requests
|
||||||
// wait until new webhook is called
|
// wait until new webhook is called
|
||||||
@ -125,16 +127,7 @@ func TestMutatingWebhookResetsInvalidManagedFields(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
// if warningWriter.WarningCount() == 0 {
|
if err := fieldmanager.ValidateManagedFields(pod.ManagedFields); err != nil {
|
||||||
// lastErr = fmt.Sprintf("no warning, managedFields: %v", pod.ManagedFields)
|
|
||||||
// return false, nil
|
|
||||||
// }
|
|
||||||
// if !strings.Contains(recordedWarnings.String(), expectedWarning) {
|
|
||||||
// lastErr = fmt.Sprintf("unexpected warning, expected: %v, got: %v",
|
|
||||||
// expectedWarning, recordedWarnings.String())
|
|
||||||
// return false, nil
|
|
||||||
// }
|
|
||||||
if err := expectValidManagedFields(pod.ManagedFields); err != nil {
|
|
||||||
lastErr = err
|
lastErr = err
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
@ -145,47 +138,30 @@ func TestMutatingWebhookResetsInvalidManagedFields(t *testing.T) {
|
|||||||
if lastErr != nil {
|
if lastErr != nil {
|
||||||
t.Fatal(lastErr)
|
t.Fatal(lastErr)
|
||||||
}
|
}
|
||||||
// if warningWriter.WarningCount() != 1 {
|
if warningWriter.WarningCount() != 1 {
|
||||||
// t.Errorf("expected one warning, got: %v", warningWriter.WarningCount())
|
t.Errorf("expected one warning, got: %v", warningWriter.WarningCount())
|
||||||
// }
|
}
|
||||||
// recordedWarnings.Reset()
|
if !strings.Contains(recordedWarnings.String(), expectedWarning) {
|
||||||
|
t.Errorf("unexpected warning, expected: \n%v\n, got: \n%v",
|
||||||
|
expectedWarning, recordedWarnings.String())
|
||||||
|
}
|
||||||
|
recordedWarnings.Reset()
|
||||||
|
|
||||||
// Make sure dedup happens in update requests
|
// Make sure reset happens in update requests
|
||||||
pod, err = client.CoreV1().Pods("default").Update(context.TODO(), pod, metav1.UpdateOptions{})
|
pod, err = client.CoreV1().Pods("default").Update(context.TODO(), pod, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
// if warningWriter.WarningCount() != 2 {
|
if err := fieldmanager.ValidateManagedFields(pod.ManagedFields); err != nil {
|
||||||
// t.Errorf("expected two warnings, got: %v", warningWriter.WarningCount())
|
|
||||||
// }
|
|
||||||
// if !strings.Contains(recordedWarnings.String(), expectedWarning) {
|
|
||||||
// t.Errorf("unexpected warning, expected: %v, got: %v",
|
|
||||||
// expectedWarning, recordedWarnings.String())
|
|
||||||
// }
|
|
||||||
if err := expectValidManagedFields(pod.ManagedFields); err != nil {
|
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
// recordedWarnings.Reset()
|
if warningWriter.WarningCount() != 2 {
|
||||||
|
t.Errorf("expected two warnings, got: %v", warningWriter.WarningCount())
|
||||||
}
|
}
|
||||||
|
if !strings.Contains(recordedWarnings.String(), expectedWarning) {
|
||||||
func expectValidManagedFields(managedFields []metav1.ManagedFieldsEntry) error {
|
t.Errorf("unexpected warning, expected: \n%v\n, got: \n%v",
|
||||||
for i, managed := range managedFields {
|
expectedWarning, recordedWarnings.String())
|
||||||
// TODO: define what we want to validate
|
|
||||||
if len(managed.APIVersion) < 1 {
|
|
||||||
return fmt.Errorf(".metadata.managedFields[%d] is invalid: missing apiVersion", i)
|
|
||||||
}
|
}
|
||||||
if len(managed.FieldsType) < 1 {
|
|
||||||
return fmt.Errorf(".metadata.managedFields[%d] is invalid: missing fieldsType", i)
|
|
||||||
}
|
|
||||||
if len(managed.Manager) < 1 {
|
|
||||||
return fmt.Errorf(".metadata.managedFields[%d] is invalid: missing manager", i)
|
|
||||||
}
|
|
||||||
if managed.FieldsV1 == nil {
|
|
||||||
return fmt.Errorf(".metadata.managedFields[%d] is invalid: missing fieldsV1", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func newInvalidManagedFieldsWebhookHandler(t *testing.T) http.Handler {
|
func newInvalidManagedFieldsWebhookHandler(t *testing.T) http.Handler {
|
||||||
|
Loading…
Reference in New Issue
Block a user