Refactor tests to match new versioned code structure

parent e5019de2
......@@ -156,6 +156,7 @@ pkg/client/listers/storage/internalversion
pkg/client/listers/storage/v1beta1
pkg/client/metrics
pkg/client/metrics/prometheus
pkg/client/restclient/watch
pkg/client/testing/core
pkg/client/typed/discovery
pkg/client/unversioned
......@@ -281,6 +282,7 @@ pkg/volume/util/nestedpendingoperations
pkg/volume/util/operationexecutor
pkg/volume/util/types
pkg/volume/util/volumehelper
pkg/watch
pkg/watch/json
pkg/watch/versioned
plugin/cmd/kube-scheduler
......
......@@ -24,7 +24,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/resource"
versioned "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/api/v1"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util/diff"
......@@ -36,7 +36,7 @@ func TestPodLogOptions(t *testing.T) {
tailLines := int64(2)
limitBytes := int64(3)
versionedLogOptions := &metav1.PodLogOptions{
versionedLogOptions := &v1.PodLogOptions{
Container: "mycontainer",
Follow: true,
Previous: true,
......@@ -71,7 +71,7 @@ func TestPodLogOptions(t *testing.T) {
// unversioned -> query params
{
actualParameters, err := codec.EncodeParameters(unversionedLogOptions, metav1.SchemeGroupVersion)
actualParameters, err := codec.EncodeParameters(unversionedLogOptions, v1.SchemeGroupVersion)
if err != nil {
t.Fatal(err)
}
......@@ -82,7 +82,7 @@ func TestPodLogOptions(t *testing.T) {
// versioned -> query params
{
actualParameters, err := codec.EncodeParameters(versionedLogOptions, metav1.SchemeGroupVersion)
actualParameters, err := codec.EncodeParameters(versionedLogOptions, v1.SchemeGroupVersion)
if err != nil {
t.Fatal(err)
}
......@@ -93,8 +93,8 @@ func TestPodLogOptions(t *testing.T) {
// query params -> versioned
{
convertedLogOptions := &metav1.PodLogOptions{}
err := codec.DecodeParameters(expectedParameters, metav1.SchemeGroupVersion, convertedLogOptions)
convertedLogOptions := &v1.PodLogOptions{}
err := codec.DecodeParameters(expectedParameters, v1.SchemeGroupVersion, convertedLogOptions)
if err != nil {
t.Fatal(err)
}
......@@ -106,7 +106,7 @@ func TestPodLogOptions(t *testing.T) {
// query params -> unversioned
{
convertedLogOptions := &api.PodLogOptions{}
err := codec.DecodeParameters(expectedParameters, metav1.SchemeGroupVersion, convertedLogOptions)
err := codec.DecodeParameters(expectedParameters, v1.SchemeGroupVersion, convertedLogOptions)
if err != nil {
t.Fatal(err)
}
......@@ -126,7 +126,7 @@ func TestPodSpecConversion(t *testing.T) {
i := &api.PodSpec{
ServiceAccountName: name,
}
v := metav1.PodSpec{}
v := v1.PodSpec{}
if err := api.Scheme.Convert(i, &v, nil); err != nil {
t.Fatalf("unexpected error: %v", err)
}
......@@ -140,7 +140,7 @@ func TestPodSpecConversion(t *testing.T) {
// Test v1 -> internal. Either DeprecatedServiceAccount, ServiceAccountName,
// or both should translate to ServiceAccountName. ServiceAccountName wins
// if both are set.
testCases := []*metav1.PodSpec{
testCases := []*v1.PodSpec{
// New
{ServiceAccountName: name},
// Alias
......@@ -167,14 +167,14 @@ func TestResourceListConversion(t *testing.T) {
bigMilliQuantity.Add(resource.MustParse("12345m"))
tests := []struct {
input metav1.ResourceList
input v1.ResourceList
expected api.ResourceList
}{
{ // No changes necessary.
input: metav1.ResourceList{
metav1.ResourceMemory: resource.MustParse("30M"),
metav1.ResourceCPU: resource.MustParse("100m"),
metav1.ResourceStorage: resource.MustParse("1G"),
input: v1.ResourceList{
v1.ResourceMemory: resource.MustParse("30M"),
v1.ResourceCPU: resource.MustParse("100m"),
v1.ResourceStorage: resource.MustParse("1G"),
},
expected: api.ResourceList{
api.ResourceMemory: resource.MustParse("30M"),
......@@ -183,9 +183,9 @@ func TestResourceListConversion(t *testing.T) {
},
},
{ // Nano-scale values should be rounded up to milli-scale.
input: metav1.ResourceList{
metav1.ResourceCPU: resource.MustParse("3.000023m"),
metav1.ResourceMemory: resource.MustParse("500.000050m"),
input: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("3.000023m"),
v1.ResourceMemory: resource.MustParse("500.000050m"),
},
expected: api.ResourceList{
api.ResourceCPU: resource.MustParse("4m"),
......@@ -193,9 +193,9 @@ func TestResourceListConversion(t *testing.T) {
},
},
{ // Large values should still be accurate.
input: metav1.ResourceList{
metav1.ResourceCPU: *bigMilliQuantity.Copy(),
metav1.ResourceStorage: *bigMilliQuantity.Copy(),
input: v1.ResourceList{
v1.ResourceCPU: *bigMilliQuantity.Copy(),
v1.ResourceStorage: *bigMilliQuantity.Copy(),
},
expected: api.ResourceList{
api.ResourceCPU: *bigMilliQuantity.Copy(),
......
......@@ -17,6 +17,7 @@ limitations under the License.
package v1
import (
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
)
......@@ -26,7 +27,25 @@ const GroupName = "meta.k8s.io"
// SchemeGroupVersion is group version used to register these objects
var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: ""}
// WatchEventKind is name reserved for serializing watch events.
const WatchEventKind = "WatchEvent"
// Kind takes an unqualified kind and returns a Group qualified GroupKind
func Kind(kind string) schema.GroupKind {
return SchemeGroupVersion.WithKind(kind).GroupKind()
}
// AddToGroupVersion registers common meta types into schemas.
func AddToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) {
scheme.AddKnownTypeWithName(groupVersion.WithKind(WatchEventKind), &Event{})
scheme.AddKnownTypeWithName(
schema.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal}.WithKind(WatchEventKind),
&InternalEvent{},
)
scheme.AddConversionFuncs(
Convert_versioned_Event_to_watch_Event,
Convert_versioned_InternalEvent_to_versioned_Event,
Convert_watch_Event_to_versioned_Event,
Convert_versioned_Event_to_versioned_InternalEvent,
)
}
......@@ -26,7 +26,7 @@ import (
// Event represents a single event to a watched resource.
//
// +protobuf=true
// +k8s:openapi-gen=true
// +k8s:openapi-gen=false
type Event struct {
Type string `json:"type" protobuf:"bytes,1,opt,name=type"`
......@@ -74,6 +74,7 @@ func Convert_versioned_Event_to_versioned_InternalEvent(in *Event, out *Internal
}
// InternalEvent makes watch.Event versioned
// +protobuf=false
type InternalEvent watch.Event
func (e *InternalEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
......
......@@ -65,6 +65,7 @@ go_test(
"//pkg/api/v1:go_default_library",
"//pkg/apimachinery/registered:go_default_library",
"//pkg/apis/meta/v1:go_default_library",
"//pkg/client/restclient/watch:go_default_library",
"//pkg/client/unversioned/clientcmd/api:go_default_library",
"//pkg/labels:go_default_library",
"//pkg/runtime:go_default_library",
......
......@@ -37,6 +37,7 @@ import (
pathvalidation "k8s.io/kubernetes/pkg/api/validation/path"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/client/metrics"
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
......@@ -46,7 +47,6 @@ import (
"k8s.io/kubernetes/pkg/util/net"
"k8s.io/kubernetes/pkg/util/sets"
"k8s.io/kubernetes/pkg/watch"
"k8s.io/kubernetes/pkg/watch/versioned"
)
var (
......@@ -683,7 +683,7 @@ func (r *Request) Watch() (watch.Interface, error) {
}
framer := r.serializers.Framer.NewFrameReader(resp.Body)
decoder := streaming.NewDecoder(framer, r.serializers.StreamingSerializer)
return watch.NewStreamWatcher(versioned.NewDecoder(decoder, r.serializers.Decoder)), nil
return watch.NewStreamWatcher(restclientwatch.NewDecoder(decoder, r.serializers.Decoder)), nil
}
// updateURLMetrics is a convenience function for pushing metrics.
......
......@@ -39,6 +39,7 @@ import (
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apimachinery/registered"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
......@@ -50,7 +51,6 @@ import (
"k8s.io/kubernetes/pkg/util/intstr"
utiltesting "k8s.io/kubernetes/pkg/util/testing"
"k8s.io/kubernetes/pkg/watch"
"k8s.io/kubernetes/pkg/watch/versioned"
)
func TestNewRequestSetsAccept(t *testing.T) {
......@@ -1571,7 +1571,7 @@ func TestWatch(t *testing.T) {
w.WriteHeader(http.StatusOK)
flusher.Flush()
encoder := versioned.NewEncoder(streaming.NewEncoder(w, testapi.Default.Codec()), testapi.Default.Codec())
encoder := restclientwatch.NewEncoder(streaming.NewEncoder(w, testapi.Default.Codec()), testapi.Default.Codec())
for _, item := range table {
if err := encoder.Encode(&watch.Event{Type: item.t, Object: item.obj}); err != nil {
panic(err)
......
......@@ -34,6 +34,7 @@ go_test(
"//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/apis/meta/v1:go_default_library",
"//pkg/client/restclient/watch:go_default_library",
"//pkg/runtime:go_default_library",
"//pkg/runtime/serializer/streaming:go_default_library",
"//pkg/util/wait:go_default_library",
......
......@@ -19,6 +19,7 @@ package versioned
import (
"fmt"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
"k8s.io/kubernetes/pkg/watch"
......@@ -44,13 +45,13 @@ func NewDecoder(decoder streaming.Decoder, embeddedDecoder runtime.Decoder) *Dec
// Decode blocks until it can return the next object in the reader. Returns an error
// if the reader is closed or an object can't be decoded.
func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) {
var got Event
var got metav1.Event
res, _, err := d.decoder.Decode(nil, &got)
if err != nil {
return "", nil, err
}
if res != &got {
return "", nil, fmt.Errorf("unable to decode to versioned.Event")
return "", nil, fmt.Errorf("unable to decode to metav1.Event")
}
switch got.Type {
case string(watch.Added), string(watch.Modified), string(watch.Deleted), string(watch.Error):
......
......@@ -24,11 +24,12 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
"k8s.io/kubernetes/pkg/util/wait"
"k8s.io/kubernetes/pkg/watch"
"k8s.io/kubernetes/pkg/watch/versioned"
)
func TestDecoder(t *testing.T) {
......@@ -37,7 +38,7 @@ func TestDecoder(t *testing.T) {
for _, eventType := range table {
out, in := io.Pipe()
codec := testapi.Default.Codec()
decoder := versioned.NewDecoder(streaming.NewDecoder(out, codec), codec)
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(out, codec), codec)
expect := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}
encoder := json.NewEncoder(in)
......@@ -46,7 +47,7 @@ func TestDecoder(t *testing.T) {
if err != nil {
t.Fatalf("Unexpected error %v", err)
}
event := versioned.Event{
event := metav1.Event{
Type: string(eventType),
Object: runtime.RawExtension{Raw: json.RawMessage(data)},
}
......@@ -90,7 +91,7 @@ func TestDecoder(t *testing.T) {
func TestDecoder_SourceClose(t *testing.T) {
out, in := io.Pipe()
codec := testapi.Default.Codec()
decoder := versioned.NewDecoder(streaming.NewDecoder(out, codec), codec)
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(out, codec), codec)
done := make(chan struct{})
......
......@@ -23,10 +23,10 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
"k8s.io/kubernetes/pkg/watch"
"k8s.io/kubernetes/pkg/watch/versioned"
)
func TestEncodeDecodeRoundTrip(t *testing.T) {
......@@ -55,14 +55,14 @@ func TestEncodeDecodeRoundTrip(t *testing.T) {
buf := &bytes.Buffer{}
codec := testCase.Codec
encoder := versioned.NewEncoder(streaming.NewEncoder(buf, codec), codec)
encoder := restclientwatch.NewEncoder(streaming.NewEncoder(buf, codec), codec)
if err := encoder.Encode(&watch.Event{Type: testCase.Type, Object: testCase.Object}); err != nil {
t.Errorf("%d: unexpected error: %v", i, err)
continue
}
rc := ioutil.NopCloser(buf)
decoder := versioned.NewDecoder(streaming.NewDecoder(rc, codec), codec)
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(rc, codec), codec)
event, obj, err := decoder.Decode()
if err != nil {
t.Errorf("%d: unexpected error: %v", i, err)
......
......@@ -46,6 +46,7 @@ go_test(
"//pkg/apis/meta/v1:go_default_library",
"//pkg/apis/meta/v1/unstructured:go_default_library",
"//pkg/client/restclient:go_default_library",
"//pkg/client/restclient/watch:go_default_library",
"//pkg/runtime:go_default_library",
"//pkg/runtime/schema:go_default_library",
"//pkg/runtime/serializer/streaming:go_default_library",
......
......@@ -30,6 +30,7 @@ import (
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/apis/meta/v1/unstructured"
"k8s.io/kubernetes/pkg/client/restclient"
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
......@@ -458,7 +459,7 @@ func TestWatch(t *testing.T) {
t.Errorf("Watch(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path)
}
enc := metav1.NewEncoder(streaming.NewEncoder(w, dynamicCodec{}), dynamicCodec{})
enc := restclientwatch.NewEncoder(streaming.NewEncoder(w, dynamicCodec{}), dynamicCodec{})
for _, e := range tc.events {
enc.Encode(&e)
}
......
......@@ -187,6 +187,7 @@ go_test(
"//pkg/apis/policy:go_default_library",
"//pkg/client/restclient:go_default_library",
"//pkg/client/restclient/fake:go_default_library",
"//pkg/client/restclient/watch:go_default_library",
"//pkg/client/typed/dynamic:go_default_library",
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
......
......@@ -34,6 +34,7 @@ import (
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/restclient/fake"
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/schema"
......@@ -890,7 +891,7 @@ func TestWatchOnlyList(t *testing.T) {
func watchBody(codec runtime.Codec, events []watch.Event) io.ReadCloser {
buf := bytes.NewBuffer([]byte{})
enc := metav1.NewEncoder(streaming.NewEncoder(buf, codec), codec)
enc := restclientwatch.NewEncoder(streaming.NewEncoder(buf, codec), codec)
for i := range events {
enc.Encode(&events[i])
}
......
......@@ -67,6 +67,7 @@ go_test(
"//pkg/apimachinery/registered:go_default_library",
"//pkg/apis/meta/v1:go_default_library",
"//pkg/client/restclient/fake:go_default_library",
"//pkg/client/restclient/watch:go_default_library",
"//pkg/labels:go_default_library",
"//pkg/runtime:go_default_library",
"//pkg/runtime/serializer/streaming:go_default_library",
......
......@@ -40,6 +40,7 @@ import (
"k8s.io/kubernetes/pkg/apimachinery/registered"
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/client/restclient/fake"
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
utilerrors "k8s.io/kubernetes/pkg/util/errors"
......@@ -54,7 +55,7 @@ func stringBody(body string) io.ReadCloser {
func watchBody(events ...watch.Event) string {
buf := &bytes.Buffer{}
codec := testapi.Default.Codec()
enc := metav1.NewEncoder(streaming.NewEncoder(buf, codec), codec)
enc := restclientwatch.NewEncoder(streaming.NewEncoder(buf, codec), codec)
for _, e := range events {
enc.Encode(&e)
}
......
......@@ -30,7 +30,7 @@ go_library(
)
go_test(
name = "go_default_test",
name = "go_default_xtest",
srcs = [
"filter_test.go",
"mux_test.go",
......@@ -38,13 +38,13 @@ go_test(
"until_test.go",
"watch_test.go",
],
library = ":go_default_library",
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/runtime:go_default_library",
"//pkg/runtime/schema:go_default_library",
"//pkg/util/wait:go_default_library",
"//pkg/watch:go_default_library",
],
)
......
......@@ -14,11 +14,13 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package watch
package watch_test
import (
"reflect"
"testing"
. "k8s.io/kubernetes/pkg/watch"
)
func TestFilter(t *testing.T) {
......
......@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package watch
package watch_test
import (
"reflect"
......@@ -24,6 +24,7 @@ import (
"k8s.io/kubernetes/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/util/wait"
. "k8s.io/kubernetes/pkg/watch"
)
type myType struct {
......
......@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package watch
package watch_test
import (
"io"
......@@ -22,6 +22,7 @@ import (
"testing"
"k8s.io/kubernetes/pkg/runtime"
. "k8s.io/kubernetes/pkg/watch"
)
type fakeDecoder struct {
......
......@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package watch
package watch_test
import (
"errors"
......@@ -24,6 +24,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/util/wait"
. "k8s.io/kubernetes/pkg/watch"
)
func TestUntil(t *testing.T) {
......
......@@ -14,12 +14,13 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package watch
package watch_test
import (
"testing"
"k8s.io/kubernetes/pkg/runtime/schema"
. "k8s.io/kubernetes/pkg/watch"
)
type testType string
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment