From 729debdb3199e04b8a194ff4b0c90b03c7fadbec Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Sat, 13 Apr 2024 16:05:51 +0000 Subject: [PATCH 1/2] test: fix tests for headers and trailers --- server/services/echo_service_test.go | 8 ++++---- server/services/sequence_service_test.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/server/services/echo_service_test.go b/server/services/echo_service_test.go index 98affdff8..decaed7d5 100644 --- a/server/services/echo_service_test.go +++ b/server/services/echo_service_test.go @@ -122,7 +122,7 @@ func (m *mockUnaryStream) SetHeader(md metadata.MD) error { return nil } func (m *mockUnaryStream) verify(expectHeadersAndTrailers bool) { - if expectHeadersAndTrailers && !reflect.DeepEqual([]string{"show", "case"}, m.trail) && !reflect.DeepEqual([]string{"showcaseHeader, anotherHeader"}, m.head) { + if expectHeadersAndTrailers && (!reflect.DeepEqual([]string{"show", "case"}, m.trail) || !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head)) { m.t.Errorf("Unary stream did not get all expected headers and trailers.\nGot these headers: %+v\nGot these trailers: %+v", m.head, m.trail) } } @@ -160,7 +160,7 @@ func (m *mockExpandStream) verify(expectHeadersAndTrailers bool) { if len(m.exp) > 0 { m.t.Errorf("Expand did not stream all expected values. %d expected values remaining.", len(m.exp)) } - if expectHeadersAndTrailers && !reflect.DeepEqual([]string{"show", "case"}, m.trail) && !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head) { + if expectHeadersAndTrailers && (!reflect.DeepEqual([]string{"show", "case"}, m.trail) || !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head)) { m.t.Errorf("Expand did not get all expected headers and trailers.\nGot these headers: %+v\nGot these trailers: %+v", m.head, m.trail) } } @@ -266,7 +266,7 @@ func (m *mockCollectStream) SetTrailer(md metadata.MD) { } func (m *mockCollectStream) verify(expectHeadersAndTrailers bool) { - if expectHeadersAndTrailers && !reflect.DeepEqual([]string{"show", "case"}, m.trail) && !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head) { + if expectHeadersAndTrailers && (!reflect.DeepEqual([]string{"show", "case"}, m.trail) || !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head)) { m.t.Errorf("Collect did not get all expected trailers.\nGot these headers: %+v\nGot these trailers: %+v", m.head, m.trail) } } @@ -367,7 +367,7 @@ func (m *mockChatStream) SetTrailer(md metadata.MD) { } func (m *mockChatStream) verify(expectHeadersAndTrailers bool) { - if expectHeadersAndTrailers && !reflect.DeepEqual([]string{"show", "case"}, m.trail) && !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head) { + if expectHeadersAndTrailers && (!reflect.DeepEqual([]string{"show", "case"}, m.trail) || !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader", "showcaseHeader", "anotherHeader"}, m.head)) { m.t.Errorf("Chat did not get all expected trailers.\nGot these headers: %+v\nGot these trailers: %+v", m.head, m.trail) } } diff --git a/server/services/sequence_service_test.go b/server/services/sequence_service_test.go index 8675b2f0c..0b35b899a 100644 --- a/server/services/sequence_service_test.go +++ b/server/services/sequence_service_test.go @@ -252,7 +252,7 @@ func (m *mockStreamSequence) verify(expectHeadersAndTrailers bool) { if len(m.exp) > 0 { m.t.Errorf("Expand did not stream all expected values. %d expected values remaining.", len(m.exp)) } - if expectHeadersAndTrailers && !reflect.DeepEqual([]string{"show", "case"}, m.trail) && !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head) { + if expectHeadersAndTrailers && (!reflect.DeepEqual([]string{"show", "case"}, m.trail) || !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head)) { m.t.Errorf("Expand did not get all expected headers and trailers.\nGot these headers: %+v\nGot these trailers: %+v", m.head, m.trail) } } From 993d242772dafb3254fb65bdb4c14ed0a7c94740 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Mon, 15 Apr 2024 14:24:01 +0000 Subject: [PATCH 2/2] Echo headers and trailers when the stream ends --- server/services/echo_service.go | 3 ++- server/services/echo_service_test.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/server/services/echo_service.go b/server/services/echo_service.go index 5b6607e72..c5cec526d 100644 --- a/server/services/echo_service.go +++ b/server/services/echo_service.go @@ -141,6 +141,8 @@ func (s *echoServerImpl) Chat(stream pb.Echo_ChatServer) error { for { req, err := stream.Recv() if err == io.EOF { + // Echo headers and trailers when the stream ends + echoStreamingHeaders(stream) echoStreamingTrailers(stream) return nil } @@ -152,7 +154,6 @@ func (s *echoServerImpl) Chat(stream pb.Echo_ChatServer) error { if s != nil { return s } - echoStreamingHeaders(stream) stream.Send(&pb.EchoResponse{Content: req.GetContent()}) } } diff --git a/server/services/echo_service_test.go b/server/services/echo_service_test.go index decaed7d5..9aa7fcd10 100644 --- a/server/services/echo_service_test.go +++ b/server/services/echo_service_test.go @@ -367,7 +367,7 @@ func (m *mockChatStream) SetTrailer(md metadata.MD) { } func (m *mockChatStream) verify(expectHeadersAndTrailers bool) { - if expectHeadersAndTrailers && (!reflect.DeepEqual([]string{"show", "case"}, m.trail) || !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader", "showcaseHeader", "anotherHeader"}, m.head)) { + if expectHeadersAndTrailers && (!reflect.DeepEqual([]string{"show", "case"}, m.trail) || !reflect.DeepEqual([]string{"showcaseHeader", "anotherHeader"}, m.head)) { m.t.Errorf("Chat did not get all expected trailers.\nGot these headers: %+v\nGot these trailers: %+v", m.head, m.trail) } }