mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
fix missing error type in watch decode
This commit is contained in:
parent
d34914517f
commit
38bf2f30fb
@ -51,7 +51,7 @@ func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) {
|
|||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
switch got.Type {
|
switch got.Type {
|
||||||
case watch.Added, watch.Modified, watch.Deleted:
|
case watch.Added, watch.Modified, watch.Deleted, watch.Error:
|
||||||
default:
|
default:
|
||||||
return "", nil, fmt.Errorf("got invalid watch event type: %v", got.Type)
|
return "", nil, fmt.Errorf("got invalid watch event type: %v", got.Type)
|
||||||
}
|
}
|
||||||
|
@ -24,61 +24,65 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta1"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/testapi"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/watch"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDecoder(t *testing.T) {
|
func TestDecoder(t *testing.T) {
|
||||||
out, in := io.Pipe()
|
table := []watch.EventType{watch.Added, watch.Deleted, watch.Modified, watch.Error}
|
||||||
decoder := NewDecoder(out, v1beta1.Codec)
|
|
||||||
|
|
||||||
expect := &api.Pod{TypeMeta: api.TypeMeta{ID: "foo"}}
|
for _, eventType := range table {
|
||||||
encoder := json.NewEncoder(in)
|
out, in := io.Pipe()
|
||||||
go func() {
|
decoder := NewDecoder(out, testapi.Codec())
|
||||||
data, err := v1beta1.Codec.Encode(expect)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Unexpected error %v", err)
|
|
||||||
}
|
|
||||||
if err := encoder.Encode(&watchEvent{watch.Added, runtime.RawExtension{json.RawMessage(data)}}); err != nil {
|
|
||||||
t.Errorf("Unexpected error %v", err)
|
|
||||||
}
|
|
||||||
in.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
done := make(chan struct{})
|
expect := &api.Pod{TypeMeta: api.TypeMeta{ID: "foo"}}
|
||||||
go func() {
|
encoder := json.NewEncoder(in)
|
||||||
action, got, err := decoder.Decode()
|
go func() {
|
||||||
if err != nil {
|
data, err := testapi.Codec().Encode(expect)
|
||||||
t.Fatalf("Unexpected error %v", err)
|
if err != nil {
|
||||||
}
|
t.Fatalf("Unexpected error %v", err)
|
||||||
if e, a := watch.Added, action; e != a {
|
}
|
||||||
t.Errorf("Expected %v, got %v", e, a)
|
if err := encoder.Encode(&watchEvent{eventType, runtime.RawExtension{json.RawMessage(data)}}); err != nil {
|
||||||
}
|
t.Errorf("Unexpected error %v", err)
|
||||||
if e, a := expect, got; !reflect.DeepEqual(e, a) {
|
}
|
||||||
t.Errorf("Expected %v, got %v", e, a)
|
in.Close()
|
||||||
}
|
}()
|
||||||
t.Logf("Exited read")
|
|
||||||
close(done)
|
|
||||||
}()
|
|
||||||
<-done
|
|
||||||
|
|
||||||
done = make(chan struct{})
|
done := make(chan struct{})
|
||||||
go func() {
|
go func() {
|
||||||
_, _, err := decoder.Decode()
|
action, got, err := decoder.Decode()
|
||||||
if err == nil {
|
if err != nil {
|
||||||
t.Errorf("Unexpected nil error")
|
t.Fatalf("Unexpected error %v", err)
|
||||||
}
|
}
|
||||||
close(done)
|
if e, a := eventType, action; e != a {
|
||||||
}()
|
t.Errorf("Expected %v, got %v", e, a)
|
||||||
<-done
|
}
|
||||||
|
if e, a := expect, got; !reflect.DeepEqual(e, a) {
|
||||||
|
t.Errorf("Expected %v, got %v", e, a)
|
||||||
|
}
|
||||||
|
t.Logf("Exited read")
|
||||||
|
close(done)
|
||||||
|
}()
|
||||||
|
<-done
|
||||||
|
|
||||||
decoder.Close()
|
done = make(chan struct{})
|
||||||
|
go func() {
|
||||||
|
_, _, err := decoder.Decode()
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("Unexpected nil error")
|
||||||
|
}
|
||||||
|
close(done)
|
||||||
|
}()
|
||||||
|
<-done
|
||||||
|
|
||||||
|
decoder.Close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDecoder_SourceClose(t *testing.T) {
|
func TestDecoder_SourceClose(t *testing.T) {
|
||||||
out, in := io.Pipe()
|
out, in := io.Pipe()
|
||||||
decoder := NewDecoder(out, v1beta1.Codec)
|
decoder := NewDecoder(out, testapi.Codec())
|
||||||
|
|
||||||
done := make(chan struct{})
|
done := make(chan struct{})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user