Skip to content

Commit 0741957

Browse files
committed
Add +k8s:deepcopy-gen:interfaces tags to runtime.Object impls in tests
1 parent 5821c21 commit 0741957

File tree

18 files changed

+192
-116
lines changed

18 files changed

+192
-116
lines changed

pkg/build/admission/config_test.go

+9-40
Original file line numberDiff line numberDiff line change
@@ -4,53 +4,22 @@ import (
44
"reflect"
55
"testing"
66

7-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8-
"k8s.io/apimachinery/pkg/runtime/schema"
9-
7+
testtypes "github.com/openshift/origin/pkg/build/admission/testing"
108
configapi "github.com/openshift/origin/pkg/cmd/server/api"
119
configapiv1 "github.com/openshift/origin/pkg/cmd/server/api/v1"
1210

1311
_ "github.com/openshift/origin/pkg/api/install"
1412
)
1513

16-
type TestConfig struct {
17-
metav1.TypeMeta
18-
19-
Item1 string `json:"item1"`
20-
Item2 []string `json:"item2"`
21-
}
22-
23-
type TestConfigV1 struct {
24-
metav1.TypeMeta
25-
26-
Item1 string `json:"item1"`
27-
Item2 []string `json:"item2"`
28-
}
29-
30-
type OtherTestConfig2 struct {
31-
metav1.TypeMeta
32-
Thing string `json:"thing"`
33-
}
34-
35-
type OtherTestConfig2V2 struct {
36-
metav1.TypeMeta
37-
Thing string `json:"thing"`
38-
}
39-
40-
func (obj *TestConfig) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
41-
func (obj *TestConfigV1) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
42-
func (obj *OtherTestConfig2) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
43-
func (obj *OtherTestConfig2V2) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
44-
4514
func TestReadPluginConfig(t *testing.T) {
46-
configapi.Scheme.AddKnownTypes(configapi.SchemeGroupVersion, &TestConfig{})
47-
configapi.Scheme.AddKnownTypeWithName(configapiv1.SchemeGroupVersion.WithKind("TestConfig"), &TestConfigV1{})
48-
configapi.Scheme.AddKnownTypes(configapi.SchemeGroupVersion, &OtherTestConfig2{})
49-
configapi.Scheme.AddKnownTypeWithName(configapiv1.SchemeGroupVersion.WithKind("OtherTestConfig2"), &OtherTestConfig2V2{})
15+
configapi.Scheme.AddKnownTypes(configapi.SchemeGroupVersion, &testtypes.TestConfig{})
16+
configapi.Scheme.AddKnownTypeWithName(configapiv1.SchemeGroupVersion.WithKind("TestConfig"), &testtypes.TestConfigV1{})
17+
configapi.Scheme.AddKnownTypes(configapi.SchemeGroupVersion, &testtypes.OtherTestConfig2{})
18+
configapi.Scheme.AddKnownTypeWithName(configapiv1.SchemeGroupVersion.WithKind("OtherTestConfig2"), &testtypes.OtherTestConfig2V2{})
5019

51-
config := &TestConfig{}
20+
config := &testtypes.TestConfig{}
5221

53-
expected := &TestConfig{
22+
expected := &testtypes.TestConfig{
5423
Item1: "hello",
5524
Item2: []string{"foo", "bar"},
5625
}
@@ -66,13 +35,13 @@ func TestReadPluginConfig(t *testing.T) {
6635

6736
// Passing a nil cfg, should not get an error
6837
pluginCfg = map[string]configapi.AdmissionPluginConfig{}
69-
err = ReadPluginConfig(pluginCfg, "testconfig", &TestConfig{})
38+
err = ReadPluginConfig(pluginCfg, "testconfig", &testtypes.TestConfig{})
7039
if err != nil {
7140
t.Fatalf("unexpected: %v", err)
7241
}
7342

7443
// Passing the wrong type of destination object should result in an error
75-
config2 := &OtherTestConfig2{}
44+
config2 := &testtypes.OtherTestConfig2{}
7645
pluginCfg = map[string]configapi.AdmissionPluginConfig{"testconfig": {Location: "", Configuration: expected}}
7746
err = ReadPluginConfig(pluginCfg, "testconfig", config2)
7847
if err == nil {

pkg/build/admission/testing/doc.go

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// +k8s:deepcopy-gen=package
2+
3+
// Package testing contains types for tests.
4+
package testing

pkg/build/admission/testing/types.go

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package testing
2+
3+
import (
4+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5+
"k8s.io/apimachinery/pkg/runtime/schema"
6+
7+
_ "github.com/openshift/origin/pkg/api/install"
8+
)
9+
10+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
11+
// +k8s:deepcopy-gen=true
12+
type TestConfig struct {
13+
metav1.TypeMeta
14+
15+
Item1 string `json:"item1"`
16+
Item2 []string `json:"item2"`
17+
}
18+
19+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
20+
// +k8s:deepcopy-gen=true
21+
type TestConfigV1 struct {
22+
metav1.TypeMeta
23+
24+
Item1 string `json:"item1"`
25+
Item2 []string `json:"item2"`
26+
}
27+
28+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
29+
// +k8s:deepcopy-gen=true
30+
type OtherTestConfig2 struct {
31+
metav1.TypeMeta
32+
Thing string `json:"thing"`
33+
}
34+
35+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
36+
// +k8s:deepcopy-gen=true
37+
type OtherTestConfig2V2 struct {
38+
metav1.TypeMeta
39+
Thing string `json:"thing"`
40+
}
41+
42+
func (obj *TestConfig) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
43+
func (obj *TestConfigV1) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
44+
func (obj *OtherTestConfig2) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
45+
func (obj *OtherTestConfig2V2) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }

pkg/cmd/server/api/v1/testing/doc.go

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// +k8s:deepcopy-gen=package
2+
3+
// Package testing contains types for tests.
4+
package testing
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package testing
2+
3+
import (
4+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5+
"k8s.io/apimachinery/pkg/runtime/schema"
6+
)
7+
8+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
9+
10+
type AdmissionPluginTestConfig struct {
11+
metav1.TypeMeta
12+
Data string `json:"data"`
13+
}
14+
15+
func (obj *AdmissionPluginTestConfig) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }

pkg/cmd/server/api/v1/types_test.go

+5-13
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@ import (
55

66
"github.com/ghodss/yaml"
77

8-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
98
"k8s.io/apimachinery/pkg/runtime"
10-
"k8s.io/apimachinery/pkg/runtime/schema"
119
"k8s.io/apimachinery/pkg/runtime/serializer"
1210
"k8s.io/apimachinery/pkg/util/diff"
1311

1412
internal "github.com/openshift/origin/pkg/cmd/server/api"
1513
"github.com/openshift/origin/pkg/cmd/server/api/latest"
1614
"github.com/openshift/origin/pkg/cmd/server/api/v1"
15+
testtypes "github.com/openshift/origin/pkg/cmd/server/api/v1/testing"
1716

1817
// install all APIs
1918
_ "github.com/openshift/origin/pkg/api/install"
@@ -646,16 +645,9 @@ volumeConfig:
646645
}
647646
}
648647

649-
type AdmissionPluginTestConfig struct {
650-
metav1.TypeMeta
651-
Data string `json:"data"`
652-
}
653-
654-
func (obj *AdmissionPluginTestConfig) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
655-
656648
func TestMasterConfig(t *testing.T) {
657-
internal.Scheme.AddKnownTypes(v1.SchemeGroupVersion, &AdmissionPluginTestConfig{})
658-
internal.Scheme.AddKnownTypes(internal.SchemeGroupVersion, &AdmissionPluginTestConfig{})
649+
internal.Scheme.AddKnownTypes(v1.SchemeGroupVersion, &testtypes.AdmissionPluginTestConfig{})
650+
internal.Scheme.AddKnownTypes(internal.SchemeGroupVersion, &testtypes.AdmissionPluginTestConfig{})
659651
config := &internal.MasterConfig{
660652
ServingInfo: internal.HTTPServingInfo{
661653
ServingInfo: internal.ServingInfo{
@@ -666,7 +658,7 @@ func TestMasterConfig(t *testing.T) {
666658
AdmissionConfig: internal.AdmissionConfig{
667659
PluginConfig: map[string]internal.AdmissionPluginConfig{ // test config as an embedded object
668660
"plugin": {
669-
Configuration: &AdmissionPluginTestConfig{},
661+
Configuration: &testtypes.AdmissionPluginTestConfig{},
670662
},
671663
},
672664
PluginOrderOverride: []string{"plugin"}, // explicitly set this field because it's omitempty
@@ -702,7 +694,7 @@ func TestMasterConfig(t *testing.T) {
702694
AdmissionConfig: internal.AdmissionConfig{
703695
PluginConfig: map[string]internal.AdmissionPluginConfig{ // test config as an embedded object
704696
"plugin": {
705-
Configuration: &AdmissionPluginTestConfig{},
697+
Configuration: &testtypes.AdmissionPluginTestConfig{},
706698
},
707699
},
708700
PluginOrderOverride: []string{"plugin"}, // explicitly set this field because it's omitempty

pkg/cmd/util/pluginconfig/config_test.go

+13-30
Original file line numberDiff line numberDiff line change
@@ -7,41 +7,24 @@ import (
77
"reflect"
88
"testing"
99

10-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1110
"k8s.io/apimachinery/pkg/runtime"
12-
"k8s.io/apimachinery/pkg/runtime/schema"
1311
kapiserverinternal "k8s.io/apiserver/pkg/apis/apiserver"
1412
kapiserverv1alpha1 "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1"
1513

1614
oapi "github.com/openshift/origin/pkg/api"
1715
configapi "github.com/openshift/origin/pkg/cmd/server/api"
1816
"github.com/openshift/origin/pkg/cmd/server/api/latest"
17+
testtypes "github.com/openshift/origin/pkg/cmd/util/pluginconfig/testing"
1918

2019
// install server api
2120
_ "github.com/openshift/origin/pkg/cmd/server/api/install"
2221
)
2322

24-
type TestConfig struct {
25-
metav1.TypeMeta `json:",inline"`
26-
Item1 string `json:"item1"`
27-
Item2 []string `json:"item2"`
28-
}
29-
30-
func (obj *TestConfig) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
31-
32-
type TestConfigV1 struct {
33-
metav1.TypeMeta `json:",inline"`
34-
Item1 string `json:"item1"`
35-
Item2 []string `json:"item2"`
36-
}
37-
38-
func (obj *TestConfigV1) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
39-
4023
func TestGetPluginConfig(t *testing.T) {
41-
configapi.Scheme.AddKnownTypes(oapi.SchemeGroupVersion, &TestConfig{})
42-
configapi.Scheme.AddKnownTypeWithName(latest.Version.WithKind("TestConfig"), &TestConfigV1{})
24+
configapi.Scheme.AddKnownTypes(oapi.SchemeGroupVersion, &testtypes.TestConfig{})
25+
configapi.Scheme.AddKnownTypeWithName(latest.Version.WithKind("TestConfig"), &testtypes.TestConfigV1{})
4326

44-
testConfig := &TestConfig{
27+
testConfig := &testtypes.TestConfig{
4528
Item1: "item1value",
4629
Item2: []string{"element1", "element2"},
4730
}
@@ -54,7 +37,7 @@ func TestGetPluginConfig(t *testing.T) {
5437
if err != nil {
5538
t.Fatalf("unexpected error: %v", err)
5639
}
57-
resultConfig := &TestConfig{}
40+
resultConfig := &testtypes.TestConfig{}
5841
if err = latest.ReadYAMLFileInto(fileName, resultConfig); err != nil {
5942
t.Fatalf("error reading config file: %v", err)
6043
}
@@ -96,12 +79,12 @@ func readAdmissionConfigurationFile(t *testing.T, fileName string, into runtime.
9679
}
9780

9881
func TestGetAdmissionConfigurationConfigWithConfiguration(t *testing.T) {
99-
configapi.Scheme.AddKnownTypes(oapi.SchemeGroupVersion, &TestConfig{})
100-
configapi.Scheme.AddKnownTypeWithName(latest.Version.WithKind("TestConfig"), &TestConfigV1{})
82+
configapi.Scheme.AddKnownTypes(oapi.SchemeGroupVersion, &testtypes.TestConfig{})
83+
configapi.Scheme.AddKnownTypeWithName(latest.Version.WithKind("TestConfig"), &testtypes.TestConfigV1{})
10184
kapiserverv1alpha1.AddToScheme(configapi.Scheme)
10285
kapiserverinternal.AddToScheme(configapi.Scheme)
10386

104-
testConfig := &TestConfig{
87+
testConfig := &testtypes.TestConfig{
10588
Item1: "item1value",
10689
Item2: []string{"element1", "element2"},
10790
}
@@ -114,7 +97,7 @@ func TestGetAdmissionConfigurationConfigWithConfiguration(t *testing.T) {
11497
t.Fatalf("unexpected error: %v", err)
11598
}
11699

117-
resultConfig := &TestConfig{}
100+
resultConfig := &testtypes.TestConfig{}
118101
admissionConfig := readAdmissionConfigurationFile(t, fileName, resultConfig)
119102

120103
if !reflect.DeepEqual(testConfig, resultConfig) {
@@ -123,8 +106,8 @@ func TestGetAdmissionConfigurationConfigWithConfiguration(t *testing.T) {
123106
}
124107

125108
func TestGetAdmissionConfigurationConfigWithLocation(t *testing.T) {
126-
configapi.Scheme.AddKnownTypes(oapi.SchemeGroupVersion, &TestConfig{})
127-
configapi.Scheme.AddKnownTypeWithName(latest.Version.WithKind("TestConfig"), &TestConfigV1{})
109+
configapi.Scheme.AddKnownTypes(oapi.SchemeGroupVersion, &testtypes.TestConfig{})
110+
configapi.Scheme.AddKnownTypeWithName(latest.Version.WithKind("TestConfig"), &testtypes.TestConfigV1{})
128111
kapiserverv1alpha1.AddToScheme(configapi.Scheme)
129112
kapiserverinternal.AddToScheme(configapi.Scheme)
130113

@@ -137,7 +120,7 @@ func TestGetAdmissionConfigurationConfigWithLocation(t *testing.T) {
137120
}
138121
defer os.Remove(f.Name())
139122

140-
testConfig := &TestConfig{
123+
testConfig := &testtypes.TestConfig{
141124
Item1: "item1value",
142125
Item2: []string{"element1", "element2"},
143126
}
@@ -158,7 +141,7 @@ func TestGetAdmissionConfigurationConfigWithLocation(t *testing.T) {
158141
t.Fatalf("unexpected error: %v", err)
159142
}
160143

161-
resultConfig := &TestConfig{}
144+
resultConfig := &testtypes.TestConfig{}
162145
admissionConfig := readAdmissionConfigurationFile(t, fileName, resultConfig)
163146

164147
if !reflect.DeepEqual(testConfig, resultConfig) {
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// +k8s:deepcopy-gen=package
2+
3+
// Package testing contains types for tests.
4+
package testing
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package testing
2+
3+
import (
4+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5+
"k8s.io/apimachinery/pkg/runtime/schema"
6+
)
7+
8+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
9+
10+
type TestConfig struct {
11+
metav1.TypeMeta `json:",inline"`
12+
Item1 string `json:"item1"`
13+
Item2 []string `json:"item2"`
14+
}
15+
16+
func (obj *TestConfig) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
17+
18+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
19+
20+
type TestConfigV1 struct {
21+
metav1.TypeMeta `json:",inline"`
22+
Item1 string `json:"item1"`
23+
Item2 []string `json:"item2"`
24+
}
25+
26+
func (obj *TestConfigV1) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }

pkg/project/admission/lifecycle/admission_test.go

+2-8
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,24 @@ import (
66

77
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
88
"k8s.io/apimachinery/pkg/runtime"
9-
"k8s.io/apimachinery/pkg/runtime/schema"
109
"k8s.io/apiserver/pkg/admission"
1110
clientgotesting "k8s.io/client-go/testing"
1211
"k8s.io/client-go/tools/cache"
1312
kapi "k8s.io/kubernetes/pkg/api"
1413
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
1514

1615
buildapi "github.com/openshift/origin/pkg/build/apis/build"
16+
testtypes "github.com/openshift/origin/pkg/project/admission/lifecycle/testing"
1717
projectcache "github.com/openshift/origin/pkg/project/cache"
1818

1919
// install all APIs
2020
_ "github.com/openshift/origin/pkg/api/install"
2121
)
2222

23-
type UnknownObject struct {
24-
metav1.TypeMeta
25-
}
26-
27-
func (obj *UnknownObject) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }
28-
2923
// TestIgnoreThatWhichCannotBeKnown verifies that the plug-in does not reject objects that are unknown to RESTMapper
3024
func TestIgnoreThatWhichCannotBeKnown(t *testing.T) {
3125
handler := &lifecycle{}
32-
unknown := &UnknownObject{}
26+
unknown := &testtypes.UnknownObject{}
3327

3428
err := handler.Admit(admission.NewAttributesRecord(unknown, nil, kapi.Kind("kind").WithVersion("version"), "namespace", "name", kapi.Resource("resource").WithVersion("version"), "subresource", "CREATE", nil))
3529
if err != nil {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// +k8s:deepcopy-gen=package
2+
3+
// Package testing contains types for tests.
4+
package testing
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package testing
2+
3+
import (
4+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5+
"k8s.io/apimachinery/pkg/runtime/schema"
6+
)
7+
8+
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
9+
10+
type UnknownObject struct {
11+
metav1.TypeMeta
12+
}
13+
14+
func (obj *UnknownObject) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta }

0 commit comments

Comments
 (0)