Source file
src/k8s.io/api/roundtrip_test.go
1
16
17 package api
18
19 import (
20 "math/rand"
21 "testing"
22
23 admissionv1 "k8s.io/api/admission/v1"
24 admissionv1beta1 "k8s.io/api/admission/v1beta1"
25 admissionregv1 "k8s.io/api/admissionregistration/v1"
26 admissionregv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
27 admissionregv1beta1 "k8s.io/api/admissionregistration/v1beta1"
28 apidiscoveryv2 "k8s.io/api/apidiscovery/v2"
29 apidiscoveryv2beta1 "k8s.io/api/apidiscovery/v2beta1"
30 apiserverinternalv1alpha1 "k8s.io/api/apiserverinternal/v1alpha1"
31 appsv1 "k8s.io/api/apps/v1"
32 appsv1beta1 "k8s.io/api/apps/v1beta1"
33 appsv1beta2 "k8s.io/api/apps/v1beta2"
34 authenticationv1 "k8s.io/api/authentication/v1"
35 authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
36 authorizationv1 "k8s.io/api/authorization/v1"
37 authorizationv1beta1 "k8s.io/api/authorization/v1beta1"
38 autoscalingv1 "k8s.io/api/autoscaling/v1"
39 autoscalingv2 "k8s.io/api/autoscaling/v2"
40 autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
41 autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
42 batchv1 "k8s.io/api/batch/v1"
43 batchv1beta1 "k8s.io/api/batch/v1beta1"
44 certificatesv1 "k8s.io/api/certificates/v1"
45 certificatesv1alpha1 "k8s.io/api/certificates/v1alpha1"
46 certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
47 coordinationv1 "k8s.io/api/coordination/v1"
48 coordinationv1beta1 "k8s.io/api/coordination/v1beta1"
49 corev1 "k8s.io/api/core/v1"
50 discoveryv1 "k8s.io/api/discovery/v1"
51 discoveryv1beta1 "k8s.io/api/discovery/v1beta1"
52 eventsv1 "k8s.io/api/events/v1"
53 eventsv1beta1 "k8s.io/api/events/v1beta1"
54 extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
55 flowcontrolv1 "k8s.io/api/flowcontrol/v1"
56 flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1"
57 flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2"
58 flowcontrolv1beta3 "k8s.io/api/flowcontrol/v1beta3"
59 imagepolicyv1alpha1 "k8s.io/api/imagepolicy/v1alpha1"
60 networkingv1 "k8s.io/api/networking/v1"
61 networkingv1alpha1 "k8s.io/api/networking/v1alpha1"
62 networkingv1beta1 "k8s.io/api/networking/v1beta1"
63 nodev1 "k8s.io/api/node/v1"
64 nodev1alpha1 "k8s.io/api/node/v1alpha1"
65 nodev1beta1 "k8s.io/api/node/v1beta1"
66 policyv1 "k8s.io/api/policy/v1"
67 policyv1beta1 "k8s.io/api/policy/v1beta1"
68 rbacv1 "k8s.io/api/rbac/v1"
69 rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
70 rbacv1beta1 "k8s.io/api/rbac/v1beta1"
71 resourcev1alpha2 "k8s.io/api/resource/v1alpha2"
72 schedulingv1 "k8s.io/api/scheduling/v1"
73 schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
74 schedulingv1beta1 "k8s.io/api/scheduling/v1beta1"
75 storagev1 "k8s.io/api/storage/v1"
76 storagev1alpha1 "k8s.io/api/storage/v1alpha1"
77 storagev1beta1 "k8s.io/api/storage/v1beta1"
78 svmv1alpha1 "k8s.io/api/storagemigration/v1alpha1"
79
80 "github.com/stretchr/testify/require"
81 "k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
82 "k8s.io/apimachinery/pkg/api/apitesting/roundtrip"
83 genericfuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
84 "k8s.io/apimachinery/pkg/runtime"
85 "k8s.io/apimachinery/pkg/runtime/serializer"
86 )
87
88 var groups = []runtime.SchemeBuilder{
89 admissionv1beta1.SchemeBuilder,
90 admissionv1.SchemeBuilder,
91 admissionregv1alpha1.SchemeBuilder,
92 admissionregv1beta1.SchemeBuilder,
93 admissionregv1.SchemeBuilder,
94 apiserverinternalv1alpha1.SchemeBuilder,
95 apidiscoveryv2beta1.SchemeBuilder,
96 apidiscoveryv2.SchemeBuilder,
97 appsv1beta1.SchemeBuilder,
98 appsv1beta2.SchemeBuilder,
99 appsv1.SchemeBuilder,
100 authenticationv1beta1.SchemeBuilder,
101 authenticationv1.SchemeBuilder,
102 authorizationv1beta1.SchemeBuilder,
103 authorizationv1.SchemeBuilder,
104 autoscalingv1.SchemeBuilder,
105 autoscalingv2.SchemeBuilder,
106 autoscalingv2beta1.SchemeBuilder,
107 autoscalingv2beta2.SchemeBuilder,
108 batchv1beta1.SchemeBuilder,
109 batchv1.SchemeBuilder,
110 certificatesv1.SchemeBuilder,
111 certificatesv1beta1.SchemeBuilder,
112 certificatesv1alpha1.SchemeBuilder,
113 coordinationv1.SchemeBuilder,
114 coordinationv1beta1.SchemeBuilder,
115 corev1.SchemeBuilder,
116 discoveryv1.SchemeBuilder,
117 discoveryv1beta1.SchemeBuilder,
118 eventsv1.SchemeBuilder,
119 eventsv1beta1.SchemeBuilder,
120 extensionsv1beta1.SchemeBuilder,
121 flowcontrolv1beta1.SchemeBuilder,
122 flowcontrolv1beta2.SchemeBuilder,
123 flowcontrolv1beta3.SchemeBuilder,
124 flowcontrolv1.SchemeBuilder,
125 imagepolicyv1alpha1.SchemeBuilder,
126 networkingv1.SchemeBuilder,
127 networkingv1beta1.SchemeBuilder,
128 networkingv1alpha1.SchemeBuilder,
129 nodev1.SchemeBuilder,
130 nodev1alpha1.SchemeBuilder,
131 nodev1beta1.SchemeBuilder,
132 policyv1.SchemeBuilder,
133 policyv1beta1.SchemeBuilder,
134 rbacv1alpha1.SchemeBuilder,
135 rbacv1beta1.SchemeBuilder,
136 rbacv1.SchemeBuilder,
137 resourcev1alpha2.SchemeBuilder,
138 schedulingv1alpha1.SchemeBuilder,
139 schedulingv1beta1.SchemeBuilder,
140 schedulingv1.SchemeBuilder,
141 storagev1alpha1.SchemeBuilder,
142 storagev1beta1.SchemeBuilder,
143 storagev1.SchemeBuilder,
144 svmv1alpha1.SchemeBuilder,
145 }
146
147 func TestRoundTripExternalTypes(t *testing.T) {
148 scheme := runtime.NewScheme()
149 codecs := serializer.NewCodecFactory(scheme)
150 for _, builder := range groups {
151 require.NoError(t, builder.AddToScheme(scheme))
152 }
153 seed := rand.Int63()
154
155
156 fuzzer := fuzzer.FuzzerFor(genericfuzzer.Funcs, rand.NewSource(seed), codecs)
157
158 roundtrip.RoundTripExternalTypes(t, scheme, codecs, fuzzer, nil)
159 }
160
161 func TestCompatibility(t *testing.T) {
162 scheme := runtime.NewScheme()
163 for _, builder := range groups {
164 require.NoError(t, builder.AddToScheme(scheme))
165 }
166 roundtrip.NewCompatibilityTestOptions(scheme).Complete(t).Run(t)
167 }
168
View as plain text