mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #71678 from misterikkit/notestutil
Remove scheduler "TestGroup" utility.
This commit is contained in:
commit
dec5139371
@ -72,7 +72,6 @@ go_test(
|
|||||||
"//pkg/scheduler/cache:go_default_library",
|
"//pkg/scheduler/cache:go_default_library",
|
||||||
"//pkg/scheduler/internal/cache/fake:go_default_library",
|
"//pkg/scheduler/internal/cache/fake:go_default_library",
|
||||||
"//pkg/scheduler/internal/queue:go_default_library",
|
"//pkg/scheduler/internal/queue:go_default_library",
|
||||||
"//pkg/scheduler/testing:go_default_library",
|
|
||||||
"//pkg/scheduler/util:go_default_library",
|
"//pkg/scheduler/util:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
@ -40,7 +40,6 @@ import (
|
|||||||
schedulercache "k8s.io/kubernetes/pkg/scheduler/cache"
|
schedulercache "k8s.io/kubernetes/pkg/scheduler/cache"
|
||||||
fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake"
|
fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake"
|
||||||
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
internalqueue "k8s.io/kubernetes/pkg/scheduler/internal/queue"
|
||||||
schedulertesting "k8s.io/kubernetes/pkg/scheduler/testing"
|
|
||||||
"k8s.io/kubernetes/pkg/scheduler/util"
|
"k8s.io/kubernetes/pkg/scheduler/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -366,18 +365,15 @@ func testBind(binding *v1.Binding, t *testing.T) {
|
|||||||
|
|
||||||
pod := client.CoreV1().Pods(metav1.NamespaceDefault).(*fakeV1.FakePods)
|
pod := client.CoreV1().Pods(metav1.NamespaceDefault).(*fakeV1.FakePods)
|
||||||
|
|
||||||
bind, err := pod.GetBinding(binding.GetName())
|
actualBinding, err := pod.GetBinding(binding.GetName())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if !reflect.DeepEqual(binding, actualBinding) {
|
||||||
expectedBody := runtime.EncodeOrDie(schedulertesting.Test.Codec(), binding)
|
t.Errorf("Binding did not match expectation")
|
||||||
bind.APIVersion = ""
|
t.Logf("Expected: %v", binding)
|
||||||
bind.Kind = ""
|
t.Logf("Actual: %v", actualBinding)
|
||||||
body := runtime.EncodeOrDie(schedulertesting.Test.Codec(), bind)
|
|
||||||
if expectedBody != body {
|
|
||||||
t.Errorf("Expected body %s, Got %s", expectedBody, body)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,12 @@
|
|||||||
package(default_visibility = ["//visibility:public"])
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
load(
|
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
"go_test",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = ["fake_lister.go"],
|
||||||
"fake_lister.go",
|
|
||||||
"util.go",
|
|
||||||
],
|
|
||||||
importpath = "k8s.io/kubernetes/pkg/scheduler/testing",
|
importpath = "k8s.io/kubernetes/pkg/scheduler/testing",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/legacyscheme:go_default_library",
|
|
||||||
"//pkg/apis/core:go_default_library",
|
|
||||||
"//pkg/apis/core/install:go_default_library",
|
|
||||||
"//pkg/scheduler/algorithm:go_default_library",
|
"//pkg/scheduler/algorithm:go_default_library",
|
||||||
"//pkg/scheduler/internal/cache:go_default_library",
|
"//pkg/scheduler/internal/cache:go_default_library",
|
||||||
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
"//staging/src/k8s.io/api/apps/v1:go_default_library",
|
||||||
@ -24,8 +14,6 @@ go_library(
|
|||||||
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
|
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@ -42,13 +30,3 @@ filegroup(
|
|||||||
srcs = [":package-srcs"],
|
srcs = [":package-srcs"],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
)
|
)
|
||||||
|
|
||||||
go_test(
|
|
||||||
name = "go_default_test",
|
|
||||||
srcs = ["util_test.go"],
|
|
||||||
embed = [":go_default_library"],
|
|
||||||
deps = [
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
@ -1,173 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2017 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package testing
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"mime"
|
|
||||||
"os"
|
|
||||||
"reflect"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme"
|
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
|
||||||
|
|
||||||
// Init the core api installation
|
|
||||||
_ "k8s.io/kubernetes/pkg/apis/core/install"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TestGroup defines a api group for testing.
|
|
||||||
type TestGroup struct {
|
|
||||||
externalGroupVersion schema.GroupVersion
|
|
||||||
internalGroupVersion schema.GroupVersion
|
|
||||||
internalTypes map[string]reflect.Type
|
|
||||||
externalTypes map[string]reflect.Type
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
// Groups defines a TestGroup map.
|
|
||||||
Groups = make(map[string]TestGroup)
|
|
||||||
// Test defines a TestGroup object.
|
|
||||||
Test TestGroup
|
|
||||||
|
|
||||||
serializer runtime.SerializerInfo
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
if apiMediaType := os.Getenv("KUBE_TEST_API_TYPE"); len(apiMediaType) > 0 {
|
|
||||||
var ok bool
|
|
||||||
mediaType, _, err := mime.ParseMediaType(apiMediaType)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
serializer, ok = runtime.SerializerInfoForMediaType(legacyscheme.Codecs.SupportedMediaTypes(), mediaType)
|
|
||||||
if !ok {
|
|
||||||
panic(fmt.Sprintf("no serializer for %s", apiMediaType))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
kubeTestAPI := os.Getenv("KUBE_TEST_API")
|
|
||||||
if len(kubeTestAPI) != 0 {
|
|
||||||
// priority is "first in list preferred", so this has to run in reverse order
|
|
||||||
testGroupVersions := strings.Split(kubeTestAPI, ",")
|
|
||||||
for i := len(testGroupVersions) - 1; i >= 0; i-- {
|
|
||||||
gvString := testGroupVersions[i]
|
|
||||||
groupVersion, err := schema.ParseGroupVersion(gvString)
|
|
||||||
if err != nil {
|
|
||||||
panic(fmt.Sprintf("Error parsing groupversion %v: %v", gvString, err))
|
|
||||||
}
|
|
||||||
|
|
||||||
internalGroupVersion := schema.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal}
|
|
||||||
Groups[groupVersion.Group] = TestGroup{
|
|
||||||
externalGroupVersion: groupVersion,
|
|
||||||
internalGroupVersion: internalGroupVersion,
|
|
||||||
internalTypes: legacyscheme.Scheme.KnownTypes(internalGroupVersion),
|
|
||||||
externalTypes: legacyscheme.Scheme.KnownTypes(groupVersion),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, ok := Groups[api.GroupName]; !ok {
|
|
||||||
externalGroupVersion := schema.GroupVersion{Group: api.GroupName, Version: "v1"}
|
|
||||||
Groups[api.GroupName] = TestGroup{
|
|
||||||
externalGroupVersion: externalGroupVersion,
|
|
||||||
internalGroupVersion: api.SchemeGroupVersion,
|
|
||||||
internalTypes: legacyscheme.Scheme.KnownTypes(api.SchemeGroupVersion),
|
|
||||||
externalTypes: legacyscheme.Scheme.KnownTypes(externalGroupVersion),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Test = Groups[api.GroupName]
|
|
||||||
}
|
|
||||||
|
|
||||||
// Codec returns the codec for the API version to test against, as set by the
|
|
||||||
// KUBE_TEST_API_TYPE env var.
|
|
||||||
func (g TestGroup) Codec() runtime.Codec {
|
|
||||||
if serializer.Serializer == nil {
|
|
||||||
return legacyscheme.Codecs.LegacyCodec(g.externalGroupVersion)
|
|
||||||
}
|
|
||||||
return legacyscheme.Codecs.CodecForVersions(serializer.Serializer, legacyscheme.Codecs.UniversalDeserializer(), schema.GroupVersions{g.externalGroupVersion}, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SelfLink returns a self link that will appear to be for the version Version().
|
|
||||||
// 'resource' should be the resource path, e.g. "pods" for the Pod type. 'name' should be
|
|
||||||
// empty for lists.
|
|
||||||
func (g TestGroup) SelfLink(resource, name string) string {
|
|
||||||
if g.externalGroupVersion.Group == api.GroupName {
|
|
||||||
if name == "" {
|
|
||||||
return fmt.Sprintf("/api/%s/%s", g.externalGroupVersion.Version, resource)
|
|
||||||
}
|
|
||||||
return fmt.Sprintf("/api/%s/%s/%s", g.externalGroupVersion.Version, resource, name)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: will need a /apis prefix once we have proper multi-group
|
|
||||||
// support
|
|
||||||
if name == "" {
|
|
||||||
return fmt.Sprintf("/apis/%s/%s/%s", g.externalGroupVersion.Group, g.externalGroupVersion.Version, resource)
|
|
||||||
}
|
|
||||||
return fmt.Sprintf("/apis/%s/%s/%s/%s", g.externalGroupVersion.Group, g.externalGroupVersion.Version, resource, name)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResourcePathWithPrefix returns the appropriate path for the given prefix (watch, proxy, redirect, etc), resource, namespace and name.
|
|
||||||
// For ex, this is of the form:
|
|
||||||
// /api/v1/watch/namespaces/foo/pods/pod0 for v1.
|
|
||||||
func (g TestGroup) ResourcePathWithPrefix(prefix, resource, namespace, name string) string {
|
|
||||||
var path string
|
|
||||||
if g.externalGroupVersion.Group == api.GroupName {
|
|
||||||
path = "/api/" + g.externalGroupVersion.Version
|
|
||||||
} else {
|
|
||||||
// TODO: switch back once we have proper multiple group support
|
|
||||||
// path = "/apis/" + g.Group + "/" + Version(group...)
|
|
||||||
path = "/apis/" + g.externalGroupVersion.Group + "/" + g.externalGroupVersion.Version
|
|
||||||
}
|
|
||||||
|
|
||||||
if prefix != "" {
|
|
||||||
path = path + "/" + prefix
|
|
||||||
}
|
|
||||||
if namespace != "" {
|
|
||||||
path = path + "/namespaces/" + namespace
|
|
||||||
}
|
|
||||||
// Resource names are lower case.
|
|
||||||
resource = strings.ToLower(resource)
|
|
||||||
if resource != "" {
|
|
||||||
path = path + "/" + resource
|
|
||||||
}
|
|
||||||
if name != "" {
|
|
||||||
path = path + "/" + name
|
|
||||||
}
|
|
||||||
return path
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResourcePath returns the appropriate path for the given resource, namespace and name.
|
|
||||||
// For example, this is of the form:
|
|
||||||
// /api/v1/namespaces/foo/pods/pod0 for v1.
|
|
||||||
func (g TestGroup) ResourcePath(resource, namespace, name string) string {
|
|
||||||
return g.ResourcePathWithPrefix("", resource, namespace, name)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SubResourcePath returns the appropriate path for the given resource, namespace,
|
|
||||||
// name and subresource.
|
|
||||||
func (g TestGroup) SubResourcePath(resource, namespace, name, sub string) string {
|
|
||||||
path := g.ResourcePathWithPrefix("", resource, namespace, name)
|
|
||||||
if sub != "" {
|
|
||||||
path = path + "/" + sub
|
|
||||||
}
|
|
||||||
|
|
||||||
return path
|
|
||||||
}
|
|
@ -1,214 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2017 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package testing
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestResourcePathWithPrefix(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
prefix string
|
|
||||||
resource string
|
|
||||||
namespace string
|
|
||||||
name string
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"prefix", "resource", "mynamespace", "myresource", "/api/" + Test.externalGroupVersion.Version + "/prefix/namespaces/mynamespace/resource/myresource"},
|
|
||||||
{"prefix", "resource", "", "myresource", "/api/" + Test.externalGroupVersion.Version + "/prefix/resource/myresource"},
|
|
||||||
{"prefix", "resource", "mynamespace", "", "/api/" + Test.externalGroupVersion.Version + "/prefix/namespaces/mynamespace/resource"},
|
|
||||||
{"prefix", "resource", "", "", "/api/" + Test.externalGroupVersion.Version + "/prefix/resource"},
|
|
||||||
{"", "resource", "mynamespace", "myresource", "/api/" + Test.externalGroupVersion.Version + "/namespaces/mynamespace/resource/myresource"},
|
|
||||||
}
|
|
||||||
for _, item := range testCases {
|
|
||||||
if actual := Test.ResourcePathWithPrefix(item.prefix, item.resource, item.namespace, item.name); actual != item.expected {
|
|
||||||
t.Errorf("Expected: %s, got: %s for prefix: %s, resource: %s, namespace: %s and name: %s", item.expected, actual, item.prefix, item.resource, item.namespace, item.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TestGroup := Test
|
|
||||||
TestGroup.externalGroupVersion.Group = "TestGroup"
|
|
||||||
|
|
||||||
testGroupCases := []struct {
|
|
||||||
prefix string
|
|
||||||
resource string
|
|
||||||
namespace string
|
|
||||||
name string
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"prefix", "resource", "mynamespace", "myresource", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/prefix/namespaces/mynamespace/resource/myresource"},
|
|
||||||
{"prefix", "resource", "", "myresource", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/prefix/resource/myresource"},
|
|
||||||
{"prefix", "resource", "mynamespace", "", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/prefix/namespaces/mynamespace/resource"},
|
|
||||||
{"prefix", "resource", "", "", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/prefix/resource"},
|
|
||||||
{"", "resource", "mynamespace", "myresource", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/namespaces/mynamespace/resource/myresource"},
|
|
||||||
}
|
|
||||||
for _, item := range testGroupCases {
|
|
||||||
if actual := TestGroup.ResourcePathWithPrefix(item.prefix, item.resource, item.namespace, item.name); actual != item.expected {
|
|
||||||
t.Errorf("Expected: %s, got: %s for prefix: %s, resource: %s, namespace: %s and name: %s", item.expected, actual, item.prefix, item.resource, item.namespace, item.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestResourcePath(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
resource string
|
|
||||||
namespace string
|
|
||||||
name string
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"resource", "mynamespace", "myresource", "/api/" + Test.externalGroupVersion.Version + "/namespaces/mynamespace/resource/myresource"},
|
|
||||||
{"resource", "", "myresource", "/api/" + Test.externalGroupVersion.Version + "/resource/myresource"},
|
|
||||||
{"resource", "mynamespace", "", "/api/" + Test.externalGroupVersion.Version + "/namespaces/mynamespace/resource"},
|
|
||||||
{"resource", "", "", "/api/" + Test.externalGroupVersion.Version + "/resource"},
|
|
||||||
}
|
|
||||||
for _, item := range testCases {
|
|
||||||
if actual := Test.ResourcePath(item.resource, item.namespace, item.name); actual != item.expected {
|
|
||||||
t.Errorf("Expected: %s, got: %s for resource: %s, namespace: %s and name: %s", item.expected, actual, item.resource, item.namespace, item.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TestGroup := Test
|
|
||||||
TestGroup.externalGroupVersion.Group = "TestGroup"
|
|
||||||
|
|
||||||
testGroupCases := []struct {
|
|
||||||
resource string
|
|
||||||
namespace string
|
|
||||||
name string
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"resource", "mynamespace", "myresource", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/namespaces/mynamespace/resource/myresource"},
|
|
||||||
{"resource", "", "myresource", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/resource/myresource"},
|
|
||||||
{"resource", "mynamespace", "", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/namespaces/mynamespace/resource"},
|
|
||||||
{"resource", "", "", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/resource"},
|
|
||||||
}
|
|
||||||
for _, item := range testGroupCases {
|
|
||||||
if actual := TestGroup.ResourcePath(item.resource, item.namespace, item.name); actual != item.expected {
|
|
||||||
t.Errorf("Expected: %s, got: %s for resource: %s, namespace: %s and name: %s", item.expected, actual, item.resource, item.namespace, item.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSubResourcePath(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
resource string
|
|
||||||
namespace string
|
|
||||||
name string
|
|
||||||
sub string
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"resource", "mynamespace", "myresource", "subresource", "/api/" + Test.externalGroupVersion.Version + "/namespaces/mynamespace/resource/myresource/subresource"},
|
|
||||||
{"resource", "mynamespace", "myresource", "", "/api/" + Test.externalGroupVersion.Version + "/namespaces/mynamespace/resource/myresource"},
|
|
||||||
}
|
|
||||||
for _, item := range testCases {
|
|
||||||
if actual := Test.SubResourcePath(item.resource, item.namespace, item.name, item.sub); actual != item.expected {
|
|
||||||
t.Errorf("Expected: %s, got: %s for resource: %s, namespace: %s, name: %s and sub: %s", item.expected, actual, item.resource, item.namespace, item.name, item.sub)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TestGroup := Test
|
|
||||||
TestGroup.externalGroupVersion.Group = "TestGroup"
|
|
||||||
|
|
||||||
testGroupCases := []struct {
|
|
||||||
resource string
|
|
||||||
namespace string
|
|
||||||
name string
|
|
||||||
sub string
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"resource", "mynamespace", "myresource", "subresource", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/namespaces/mynamespace/resource/myresource/subresource"},
|
|
||||||
{"resource", "mynamespace", "myresource", "", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/namespaces/mynamespace/resource/myresource"},
|
|
||||||
}
|
|
||||||
for _, item := range testGroupCases {
|
|
||||||
if actual := TestGroup.SubResourcePath(item.resource, item.namespace, item.name, item.sub); actual != item.expected {
|
|
||||||
t.Errorf("Expected: %s, got: %s for resource: %s, namespace: %s, name: %s and sub: %s", item.expected, actual, item.resource, item.namespace, item.name, item.sub)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSelfLink(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
resource string
|
|
||||||
name string
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"resource", "name", "/api/" + Test.externalGroupVersion.Version + "/resource/name"},
|
|
||||||
{"resource", "", "/api/" + Test.externalGroupVersion.Version + "/resource"},
|
|
||||||
}
|
|
||||||
for _, item := range testCases {
|
|
||||||
if actual := Test.SelfLink(item.resource, item.name); actual != item.expected {
|
|
||||||
t.Errorf("Expected: %s, got: %s for resource: %s and name: %s", item.expected, actual, item.resource, item.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TestGroup := Test
|
|
||||||
TestGroup.externalGroupVersion.Group = "TestGroup"
|
|
||||||
|
|
||||||
testGroupCases := []struct {
|
|
||||||
resource string
|
|
||||||
name string
|
|
||||||
expected string
|
|
||||||
}{
|
|
||||||
{"resource", "name", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/resource/name"},
|
|
||||||
{"resource", "", "/apis/" + TestGroup.externalGroupVersion.Group + "/" + TestGroup.externalGroupVersion.Version + "/resource"},
|
|
||||||
}
|
|
||||||
for _, item := range testGroupCases {
|
|
||||||
if actual := TestGroup.SelfLink(item.resource, item.name); actual != item.expected {
|
|
||||||
t.Errorf("Expected: %s, got: %s for resource: %s and name: %s", item.expected, actual, item.resource, item.name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var status = &metav1.Status{
|
|
||||||
Status: metav1.StatusFailure,
|
|
||||||
Code: 200,
|
|
||||||
Reason: metav1.StatusReasonUnknown,
|
|
||||||
Message: "",
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestV1EncodeDecodeStatus(t *testing.T) {
|
|
||||||
v1Codec := Test.Codec()
|
|
||||||
|
|
||||||
encoded, err := runtime.Encode(v1Codec, status)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
typeMeta := metav1.TypeMeta{}
|
|
||||||
if err := json.Unmarshal(encoded, &typeMeta); err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if typeMeta.Kind != "Status" {
|
|
||||||
t.Errorf("Kind is not set to \"Status\". Got %v", string(encoded))
|
|
||||||
}
|
|
||||||
if typeMeta.APIVersion != "v1" {
|
|
||||||
t.Errorf("APIVersion is not set to \"v1\". Got %v", string(encoded))
|
|
||||||
}
|
|
||||||
decoded, err := runtime.Decode(v1Codec, encoded)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(status, decoded) {
|
|
||||||
t.Errorf("expected: %#v, got: %#v", status, decoded)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user