Skip to content

Commit fa51417

Browse files
committed
Add roundtrip tests for metrics repo
1 parent 1c6057b commit fa51417

File tree

3 files changed

+106
-3
lines changed

3 files changed

+106
-3
lines changed

staging/src/k8s.io/metrics/BUILD

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ filegroup(
1010
srcs = [
1111
":package-srcs",
1212
"//staging/src/k8s.io/metrics/hack:all-srcs",
13-
"//staging/src/k8s.io/metrics/pkg/apis/custom_metrics:all-srcs",
14-
"//staging/src/k8s.io/metrics/pkg/apis/external_metrics:all-srcs",
15-
"//staging/src/k8s.io/metrics/pkg/apis/metrics:all-srcs",
13+
"//staging/src/k8s.io/metrics/pkg/apis:all-srcs",
1614
"//staging/src/k8s.io/metrics/pkg/client/clientset/deprecated:all-srcs",
1715
"//staging/src/k8s.io/metrics/pkg/client/clientset/versioned:all-srcs",
1816
"//staging/src/k8s.io/metrics/pkg/client/clientset_test:all-srcs",
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_test")
2+
3+
go_test(
4+
name = "go_default_test",
5+
srcs = ["roundtrip_test.go"],
6+
deps = [
7+
"//staging/src/k8s.io/apimachinery/pkg/api/apitesting/fuzzer:go_default_library",
8+
"//staging/src/k8s.io/apimachinery/pkg/api/apitesting/roundtrip:go_default_library",
9+
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/fuzzer:go_default_library",
10+
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
11+
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
12+
"//staging/src/k8s.io/metrics/pkg/apis/custom_metrics:go_default_library",
13+
"//staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1:go_default_library",
14+
"//staging/src/k8s.io/metrics/pkg/apis/custom_metrics/v1beta2:go_default_library",
15+
"//staging/src/k8s.io/metrics/pkg/apis/external_metrics:go_default_library",
16+
"//staging/src/k8s.io/metrics/pkg/apis/external_metrics/v1beta1:go_default_library",
17+
"//staging/src/k8s.io/metrics/pkg/apis/metrics:go_default_library",
18+
"//staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1:go_default_library",
19+
"//staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1:go_default_library",
20+
"//vendor/github.com/stretchr/testify/require:go_default_library",
21+
],
22+
)
23+
24+
filegroup(
25+
name = "package-srcs",
26+
srcs = glob(["**"]),
27+
tags = ["automanaged"],
28+
visibility = ["//visibility:private"],
29+
)
30+
31+
filegroup(
32+
name = "all-srcs",
33+
srcs = [
34+
":package-srcs",
35+
"//staging/src/k8s.io/metrics/pkg/apis/custom_metrics:all-srcs",
36+
"//staging/src/k8s.io/metrics/pkg/apis/external_metrics:all-srcs",
37+
"//staging/src/k8s.io/metrics/pkg/apis/metrics:all-srcs",
38+
],
39+
tags = ["automanaged"],
40+
visibility = ["//visibility:public"],
41+
)
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
Copyright 2020 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package testing
18+
19+
import (
20+
"math/rand"
21+
"testing"
22+
23+
custommetrics "k8s.io/metrics/pkg/apis/custom_metrics"
24+
custommetricsv1beta1 "k8s.io/metrics/pkg/apis/custom_metrics/v1beta1"
25+
custommetricsv1beta2 "k8s.io/metrics/pkg/apis/custom_metrics/v1beta2"
26+
externalmetrics "k8s.io/metrics/pkg/apis/external_metrics"
27+
externalmetricsv1beta1 "k8s.io/metrics/pkg/apis/external_metrics/v1beta1"
28+
metrics "k8s.io/metrics/pkg/apis/metrics"
29+
metricsv1alpha1 "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
30+
metricsv1beta1 "k8s.io/metrics/pkg/apis/metrics/v1beta1"
31+
32+
"github.com/stretchr/testify/require"
33+
"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
34+
"k8s.io/apimachinery/pkg/api/apitesting/roundtrip"
35+
genericfuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer"
36+
"k8s.io/apimachinery/pkg/runtime"
37+
"k8s.io/apimachinery/pkg/runtime/serializer"
38+
)
39+
40+
var groups = []runtime.SchemeBuilder{
41+
custommetrics.SchemeBuilder,
42+
custommetricsv1beta1.SchemeBuilder,
43+
custommetricsv1beta2.SchemeBuilder,
44+
externalmetrics.SchemeBuilder,
45+
externalmetricsv1beta1.SchemeBuilder,
46+
metrics.SchemeBuilder,
47+
metricsv1alpha1.SchemeBuilder,
48+
metricsv1beta1.SchemeBuilder,
49+
}
50+
51+
func TestRoundTripTypes(t *testing.T) {
52+
scheme := runtime.NewScheme()
53+
codecs := serializer.NewCodecFactory(scheme)
54+
for _, builder := range groups {
55+
require.NoError(t, builder.AddToScheme(scheme))
56+
}
57+
seed := rand.Int63()
58+
// I'm only using the generic fuzzer funcs, but at some point in time we might need to
59+
// switch to specialized. For now we're happy with the current serialization test.
60+
fuzzer := fuzzer.FuzzerFor(genericfuzzer.Funcs, rand.NewSource(seed), codecs)
61+
62+
roundtrip.RoundTripExternalTypes(t, scheme, codecs, fuzzer, nil)
63+
roundtrip.RoundTripTypes(t, scheme, codecs, fuzzer, nil)
64+
}

0 commit comments

Comments
 (0)