mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-05 07:27:21 +00:00
Fixed and added tests
This commit is contained in:
@@ -27,6 +27,7 @@ import (
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/testapi"
|
||||
"k8s.io/kubernetes/pkg/apis/autoscaling"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
)
|
||||
|
||||
@@ -34,7 +35,19 @@ func getHorizontalPodAutoscalersResoureName() string {
|
||||
return "horizontalpodautoscalers"
|
||||
}
|
||||
|
||||
func TestHorizontalPodAutoscalerCreate(t *testing.T) {
|
||||
func getClient(t *testing.T, c *simple.Client, ns, resourceGroup string) HorizontalPodAutoscalerInterface {
|
||||
switch resourceGroup {
|
||||
case autoscaling.GroupName:
|
||||
return c.Setup(t).Autoscaling().HorizontalPodAutoscalers(ns)
|
||||
case extensions.GroupName:
|
||||
return c.Setup(t).Extensions().HorizontalPodAutoscalers(ns)
|
||||
default:
|
||||
t.Fatalf("Unknown group %v", resourceGroup)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func testHorizontalPodAutoscalerCreate(t *testing.T, group testapi.TestGroup, resourceGroup string) {
|
||||
ns := api.NamespaceDefault
|
||||
horizontalPodAutoscaler := extensions.HorizontalPodAutoscaler{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
@@ -45,14 +58,15 @@ func TestHorizontalPodAutoscalerCreate(t *testing.T) {
|
||||
c := &simple.Client{
|
||||
Request: simple.Request{
|
||||
Method: "POST",
|
||||
Path: testapi.Extensions.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, ""),
|
||||
Path: group.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, ""),
|
||||
Query: simple.BuildQueryValues(nil),
|
||||
Body: &horizontalPodAutoscaler,
|
||||
},
|
||||
Response: simple.Response{StatusCode: 200, Body: &horizontalPodAutoscaler},
|
||||
Response: simple.Response{StatusCode: 200, Body: &horizontalPodAutoscaler},
|
||||
ResourceGroup: resourceGroup,
|
||||
}
|
||||
|
||||
response, err := c.Setup(t).Extensions().HorizontalPodAutoscalers(ns).Create(&horizontalPodAutoscaler)
|
||||
response, err := getClient(t, c, ns, resourceGroup).Create(&horizontalPodAutoscaler)
|
||||
defer c.Close()
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
@@ -60,7 +74,12 @@ func TestHorizontalPodAutoscalerCreate(t *testing.T) {
|
||||
c.Validate(t, response, err)
|
||||
}
|
||||
|
||||
func TestHorizontalPodAutoscalerGet(t *testing.T) {
|
||||
func TestHorizontalPodAutoscalerCreate(t *testing.T) {
|
||||
testHorizontalPodAutoscalerCreate(t, testapi.Extensions, extensions.GroupName)
|
||||
testHorizontalPodAutoscalerCreate(t, testapi.Autoscaling, autoscaling.GroupName)
|
||||
}
|
||||
|
||||
func testHorizontalPodAutoscalerGet(t *testing.T, group testapi.TestGroup, resourceGroup string) {
|
||||
ns := api.NamespaceDefault
|
||||
horizontalPodAutoscaler := &extensions.HorizontalPodAutoscaler{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
@@ -71,19 +90,25 @@ func TestHorizontalPodAutoscalerGet(t *testing.T) {
|
||||
c := &simple.Client{
|
||||
Request: simple.Request{
|
||||
Method: "GET",
|
||||
Path: testapi.Extensions.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "abc"),
|
||||
Path: group.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "abc"),
|
||||
Query: simple.BuildQueryValues(nil),
|
||||
Body: nil,
|
||||
},
|
||||
Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscaler},
|
||||
Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscaler},
|
||||
ResourceGroup: resourceGroup,
|
||||
}
|
||||
|
||||
response, err := c.Setup(t).Extensions().HorizontalPodAutoscalers(ns).Get("abc")
|
||||
response, err := getClient(t, c, ns, resourceGroup).Get("abc")
|
||||
defer c.Close()
|
||||
c.Validate(t, response, err)
|
||||
}
|
||||
|
||||
func TestHorizontalPodAutoscalerList(t *testing.T) {
|
||||
func TestHorizontalPodAutoscalerGet(t *testing.T) {
|
||||
testHorizontalPodAutoscalerGet(t, testapi.Extensions, extensions.GroupName)
|
||||
testHorizontalPodAutoscalerGet(t, testapi.Autoscaling, autoscaling.GroupName)
|
||||
}
|
||||
|
||||
func testHorizontalPodAutoscalerList(t *testing.T, group testapi.TestGroup, resourceGroup string) {
|
||||
ns := api.NamespaceDefault
|
||||
horizontalPodAutoscalerList := &extensions.HorizontalPodAutoscalerList{
|
||||
Items: []extensions.HorizontalPodAutoscaler{
|
||||
@@ -98,18 +123,48 @@ func TestHorizontalPodAutoscalerList(t *testing.T) {
|
||||
c := &simple.Client{
|
||||
Request: simple.Request{
|
||||
Method: "GET",
|
||||
Path: testapi.Extensions.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, ""),
|
||||
Path: group.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, ""),
|
||||
Query: simple.BuildQueryValues(nil),
|
||||
Body: nil,
|
||||
},
|
||||
Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscalerList},
|
||||
Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscalerList},
|
||||
ResourceGroup: resourceGroup,
|
||||
}
|
||||
response, err := c.Setup(t).Extensions().HorizontalPodAutoscalers(ns).List(api.ListOptions{})
|
||||
response, err := getClient(t, c, ns, resourceGroup).List(api.ListOptions{})
|
||||
defer c.Close()
|
||||
c.Validate(t, response, err)
|
||||
}
|
||||
|
||||
func TestHorizontalPodAutoscalerList(t *testing.T) {
|
||||
testHorizontalPodAutoscalerList(t, testapi.Extensions, extensions.GroupName)
|
||||
testHorizontalPodAutoscalerList(t, testapi.Autoscaling, autoscaling.GroupName)
|
||||
}
|
||||
|
||||
func testHorizontalPodAutoscalerUpdate(t *testing.T, group testapi.TestGroup, resourceGroup string) {
|
||||
ns := api.NamespaceDefault
|
||||
horizontalPodAutoscaler := &extensions.HorizontalPodAutoscaler{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: "abc",
|
||||
Namespace: ns,
|
||||
ResourceVersion: "1",
|
||||
},
|
||||
}
|
||||
c := &simple.Client{
|
||||
Request: simple.Request{Method: "PUT", Path: group.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "abc"), Query: simple.BuildQueryValues(nil)},
|
||||
Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscaler},
|
||||
ResourceGroup: resourceGroup,
|
||||
}
|
||||
response, err := getClient(t, c, ns, resourceGroup).Update(horizontalPodAutoscaler)
|
||||
defer c.Close()
|
||||
c.Validate(t, response, err)
|
||||
}
|
||||
|
||||
func TestHorizontalPodAutoscalerUpdate(t *testing.T) {
|
||||
testHorizontalPodAutoscalerUpdate(t, testapi.Extensions, extensions.GroupName)
|
||||
testHorizontalPodAutoscalerUpdate(t, testapi.Autoscaling, autoscaling.GroupName)
|
||||
}
|
||||
|
||||
func testHorizontalPodAutoscalerUpdateStatus(t *testing.T, group testapi.TestGroup, resourceGroup string) {
|
||||
ns := api.NamespaceDefault
|
||||
horizontalPodAutoscaler := &extensions.HorizontalPodAutoscaler{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
@@ -119,52 +174,52 @@ func TestHorizontalPodAutoscalerUpdate(t *testing.T) {
|
||||
},
|
||||
}
|
||||
c := &simple.Client{
|
||||
Request: simple.Request{Method: "PUT", Path: testapi.Extensions.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "abc"), Query: simple.BuildQueryValues(nil)},
|
||||
Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscaler},
|
||||
Request: simple.Request{Method: "PUT", Path: group.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "abc") + "/status", Query: simple.BuildQueryValues(nil)},
|
||||
Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscaler},
|
||||
ResourceGroup: resourceGroup,
|
||||
}
|
||||
response, err := c.Setup(t).Extensions().HorizontalPodAutoscalers(ns).Update(horizontalPodAutoscaler)
|
||||
response, err := getClient(t, c, ns, resourceGroup).UpdateStatus(horizontalPodAutoscaler)
|
||||
defer c.Close()
|
||||
c.Validate(t, response, err)
|
||||
}
|
||||
|
||||
func TestHorizontalPodAutoscalerUpdateStatus(t *testing.T) {
|
||||
testHorizontalPodAutoscalerUpdateStatus(t, testapi.Extensions, extensions.GroupName)
|
||||
testHorizontalPodAutoscalerUpdateStatus(t, testapi.Autoscaling, autoscaling.GroupName)
|
||||
}
|
||||
|
||||
func testHorizontalPodAutoscalerDelete(t *testing.T, group testapi.TestGroup, resourceGroup string) {
|
||||
ns := api.NamespaceDefault
|
||||
horizontalPodAutoscaler := &extensions.HorizontalPodAutoscaler{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: "abc",
|
||||
Namespace: ns,
|
||||
ResourceVersion: "1",
|
||||
},
|
||||
}
|
||||
c := &simple.Client{
|
||||
Request: simple.Request{Method: "PUT", Path: testapi.Extensions.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "abc") + "/status", Query: simple.BuildQueryValues(nil)},
|
||||
Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscaler},
|
||||
Request: simple.Request{Method: "DELETE", Path: group.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "foo"), Query: simple.BuildQueryValues(nil)},
|
||||
Response: simple.Response{StatusCode: 200},
|
||||
ResourceGroup: resourceGroup,
|
||||
}
|
||||
response, err := c.Setup(t).Extensions().HorizontalPodAutoscalers(ns).UpdateStatus(horizontalPodAutoscaler)
|
||||
err := getClient(t, c, ns, resourceGroup).Delete("foo", nil)
|
||||
defer c.Close()
|
||||
c.Validate(t, response, err)
|
||||
c.Validate(t, nil, err)
|
||||
}
|
||||
|
||||
func TestHorizontalPodAutoscalerDelete(t *testing.T) {
|
||||
ns := api.NamespaceDefault
|
||||
testHorizontalPodAutoscalerDelete(t, testapi.Extensions, extensions.GroupName)
|
||||
testHorizontalPodAutoscalerDelete(t, testapi.Autoscaling, autoscaling.GroupName)
|
||||
}
|
||||
|
||||
func testHorizontalPodAutoscalerWatch(t *testing.T, group testapi.TestGroup, resourceGroup string) {
|
||||
c := &simple.Client{
|
||||
Request: simple.Request{Method: "DELETE", Path: testapi.Extensions.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "foo"), Query: simple.BuildQueryValues(nil)},
|
||||
Response: simple.Response{StatusCode: 200},
|
||||
Request: simple.Request{
|
||||
Method: "GET",
|
||||
Path: group.ResourcePathWithPrefix("watch", getHorizontalPodAutoscalersResoureName(), "", ""),
|
||||
Query: url.Values{"resourceVersion": []string{}}},
|
||||
Response: simple.Response{StatusCode: 200},
|
||||
ResourceGroup: resourceGroup,
|
||||
}
|
||||
err := c.Setup(t).Extensions().HorizontalPodAutoscalers(ns).Delete("foo", nil)
|
||||
_, err := getClient(t, c, api.NamespaceAll, resourceGroup).Watch(api.ListOptions{})
|
||||
defer c.Close()
|
||||
c.Validate(t, nil, err)
|
||||
}
|
||||
|
||||
func TestHorizontalPodAutoscalerWatch(t *testing.T) {
|
||||
c := &simple.Client{
|
||||
Request: simple.Request{
|
||||
Method: "GET",
|
||||
Path: testapi.Extensions.ResourcePathWithPrefix("watch", getHorizontalPodAutoscalersResoureName(), "", ""),
|
||||
Query: url.Values{"resourceVersion": []string{}}},
|
||||
Response: simple.Response{StatusCode: 200},
|
||||
}
|
||||
_, err := c.Setup(t).Extensions().HorizontalPodAutoscalers(api.NamespaceAll).Watch(api.ListOptions{})
|
||||
defer c.Close()
|
||||
c.Validate(t, nil, err)
|
||||
testHorizontalPodAutoscalerWatch(t, testapi.Extensions, extensions.GroupName)
|
||||
testHorizontalPodAutoscalerWatch(t, testapi.Autoscaling, autoscaling.GroupName)
|
||||
}
|
||||
|
||||
@@ -66,13 +66,17 @@ type Client struct {
|
||||
// Maps from query arg key to validator.
|
||||
// If no validator is present, string equality is used.
|
||||
QueryValidator map[string]func(string, string) bool
|
||||
|
||||
// If your object could exist in multiple groups, set this to
|
||||
// correspond to the URL you're testing it with.
|
||||
ResourceGroup string
|
||||
}
|
||||
|
||||
func (c *Client) Setup(t *testing.T) *Client {
|
||||
c.handler = &utiltesting.FakeHandler{
|
||||
StatusCode: c.Response.StatusCode,
|
||||
}
|
||||
if responseBody := body(t, c.Response.Body, c.Response.RawBody); responseBody != nil {
|
||||
if responseBody := c.body(t, c.Response.Body, c.Response.RawBody); responseBody != nil {
|
||||
c.handler.ResponseBody = *responseBody
|
||||
}
|
||||
c.server = httptest.NewServer(c.handler)
|
||||
@@ -142,7 +146,7 @@ func (c *Client) ValidateCommon(t *testing.T, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
requestBody := body(t, c.Request.Body, c.Request.RawBody)
|
||||
requestBody := c.body(t, c.Request.Body, c.Request.RawBody)
|
||||
actualQuery := c.handler.RequestReceived.URL.Query()
|
||||
t.Logf("got query: %v", actualQuery)
|
||||
t.Logf("path: %v", c.Request.Path)
|
||||
@@ -210,16 +214,20 @@ func validateFields(a, b string) bool {
|
||||
return sA.String() == sB.String()
|
||||
}
|
||||
|
||||
func body(t *testing.T, obj runtime.Object, raw *string) *string {
|
||||
func (c *Client) body(t *testing.T, obj runtime.Object, raw *string) *string {
|
||||
if obj != nil {
|
||||
fqKind, err := api.Scheme.ObjectKind(obj)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected encoding error: %v", err)
|
||||
}
|
||||
groupName := fqKind.GroupVersion().Group
|
||||
if c.ResourceGroup != "" {
|
||||
groupName = c.ResourceGroup
|
||||
}
|
||||
var bs []byte
|
||||
g, found := testapi.Groups[fqKind.GroupVersion().Group]
|
||||
g, found := testapi.Groups[groupName]
|
||||
if !found {
|
||||
t.Errorf("Group %s is not registered in testapi", fqKind.GroupVersion().Group)
|
||||
t.Errorf("Group %s is not registered in testapi", groupName)
|
||||
}
|
||||
bs, err = runtime.Encode(g.Codec(), obj)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user