mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 07:47:56 +00:00
Merge pull request #46059 from nikhita/test-int-preserve
Automatic merge from submit-queue (batch tested with PRs 46075, 46059, 46095, 46097) Integration test for kube-apiextensions-server: integers **What this PR does / why we need it**: Check if integers are present after decoding. Originally an issue for TPRs: #30213 **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: for #45511 **Special notes for your reviewer**: **Release note**: ``` NONE ``` @sttts
This commit is contained in:
commit
ff4607342f
@ -23,6 +23,7 @@ go_test(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/dynamic:go_default_library",
|
"//vendor/k8s.io/client-go/dynamic:go_default_library",
|
||||||
"//vendor/k8s.io/kube-apiextensions-server/pkg/apis/apiextensions/v1alpha1:go_default_library",
|
"//vendor/k8s.io/kube-apiextensions-server/pkg/apis/apiextensions/v1alpha1:go_default_library",
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
"k8s.io/client-go/dynamic"
|
"k8s.io/client-go/dynamic"
|
||||||
apiextensionsv1alpha1 "k8s.io/kube-apiextensions-server/pkg/apis/apiextensions/v1alpha1"
|
apiextensionsv1alpha1 "k8s.io/kube-apiextensions-server/pkg/apis/apiextensions/v1alpha1"
|
||||||
@ -333,3 +334,48 @@ func TestSelfLink(t *testing.T) {
|
|||||||
// TODO add test for cluster scoped self-link when its available
|
// TODO add test for cluster scoped self-link when its available
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPreserveInt(t *testing.T) {
|
||||||
|
stopCh, apiExtensionClient, clientPool, err := testserver.StartDefaultServer()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer close(stopCh)
|
||||||
|
|
||||||
|
noxuDefinition := testserver.NewNoxuCustomResourceDefinition(apiextensionsv1alpha1.ClusterScoped)
|
||||||
|
noxuVersionClient, err := testserver.CreateNewCustomResourceDefinition(noxuDefinition, apiExtensionClient, clientPool)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
ns := "not-the-default"
|
||||||
|
noxuNamespacedResourceClient := noxuVersionClient.Resource(&metav1.APIResource{
|
||||||
|
Name: noxuDefinition.Spec.Names.Plural,
|
||||||
|
Namespaced: true,
|
||||||
|
}, ns)
|
||||||
|
|
||||||
|
noxuInstanceToCreate := testserver.NewNoxuInstance(ns, "foo")
|
||||||
|
createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
originalJSON, err := runtime.Encode(unstructured.UnstructuredJSONScheme, createdNoxuInstance)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
gottenNoxuInstance, err := runtime.Decode(unstructured.UnstructuredJSONScheme, originalJSON)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if int is preserved.
|
||||||
|
unstructuredObj := gottenNoxuInstance.(*unstructured.Unstructured).Object
|
||||||
|
num := unstructuredObj["num"].(map[string]interface{})
|
||||||
|
num1 := num["num1"].(int64)
|
||||||
|
num2 := num["num2"].(int64)
|
||||||
|
if num1 != 9223372036854775807 || num2 != 1000000 {
|
||||||
|
t.Errorf("Expected %v, got %v, %v", `9223372036854775807, 1000000`, num1, num2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -59,6 +59,10 @@ func NewNoxuInstance(namespace, name string) *unstructured.Unstructured {
|
|||||||
"content": map[string]interface{}{
|
"content": map[string]interface{}{
|
||||||
"key": "value",
|
"key": "value",
|
||||||
},
|
},
|
||||||
|
"num": map[string]interface{}{
|
||||||
|
"num1": 9223372036854775807,
|
||||||
|
"num2": 1000000,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user