Skip to content

Commit

Permalink
add tests for metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
kazegusuri committed Jan 31, 2016
1 parent 90d9e52 commit c33445c
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 1 deletion.
45 changes: 44 additions & 1 deletion examples/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,26 @@ func TestIntegration(t *testing.T) {
}
}()
go func() {
if err := Run(":8080"); err != nil {
if err := Run(
":8080",
runtime.WithForwardResponseOption(
func(ctx context.Context, w http.ResponseWriter, _ proto.Message) error {
if md, ok := runtime.ServerMetadataFromContext(ctx); ok {
for k, vs := range md.HeaderMD {
for i := range vs {
w.Header().Add(fmt.Sprintf("Grpc-Header-%s", k), vs[i])
}
}
for k, vs := range md.TrailerMD {
for i := range vs {
w.Header().Add(fmt.Sprintf("Grpc-Trailer-%s", k), vs[i])
}
}
}
return nil
},
),
); err != nil {
t.Errorf("gw.Run() failed with %v; want success", err)
return
}
Expand Down Expand Up @@ -135,6 +154,22 @@ func testEchoBody(t *testing.T) {
if got, want := received, sent; !reflect.DeepEqual(got, want) {
t.Errorf("msg.Id = %q; want %q", got, want)
}

if value := resp.Header.Get("Grpc-Header-foo"); value != "foo1" {
t.Errorf("Grpc-Header-foo was %s, wanted %s", value, "foo1")
}

if value := resp.Header.Get("Grpc-Header-bar"); value != "bar1" {
t.Errorf("Grpc-Header-bar was %s, wanted %s", value, "bar1")
}

if value := resp.Header.Get("Grpc-Trailer-foo"); value != "foo2" {
t.Errorf("Grpc-Trailer-foo was %s, wanted %s", value, "foo2")
}

if value := resp.Header.Get("Grpc-Trailer-bar"); value != "bar2" {
t.Errorf("Grpc-Trailer-bar was %s, wanted %s", value, "bar2")
}
}

func testABECreate(t *testing.T) {
Expand Down Expand Up @@ -327,6 +362,14 @@ func testABEBulkCreate(t *testing.T) {
t.Errorf("json.Unmarshal(%s, &msg) failed with %v; want success", buf, err)
return
}

if value := resp.Header.Get("Grpc-Trailer-foo"); value != "foo2" {
t.Errorf("Grpc-Trailer-foo was %q, wanted %q", value, "foo2")
}

if value := resp.Header.Get("Grpc-Trailer-bar"); value != "bar2" {
t.Errorf("Grpc-Trailer-bar was %q, wanted %q", value, "bar2")
}
}

func testABELookup(t *testing.T) {
Expand Down
25 changes: 25 additions & 0 deletions examples/server/a_bit_of_everything.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/metadata"
)

// Implements of ABitOfEverythingServiceServer
Expand Down Expand Up @@ -52,6 +53,7 @@ func (s *_ABitOfEverythingServer) CreateBody(ctx context.Context, msg *examples.
}

func (s *_ABitOfEverythingServer) BulkCreate(stream examples.ABitOfEverythingService_BulkCreateServer) error {

ctx := stream.Context()
for {
msg, err := stream.Recv()
Expand All @@ -66,6 +68,15 @@ func (s *_ABitOfEverythingServer) BulkCreate(stream examples.ABitOfEverythingSer
return err
}
}

stream.SendHeader(metadata.New(map[string]string{
"foo": "foo1",
"bar": "bar1",
}))
stream.SetTrailer(metadata.New(map[string]string{
"foo": "foo2",
"bar": "bar2",
}))
return stream.SendAndClose(new(examples.EmptyMessage))
}

Expand Down Expand Up @@ -137,11 +148,25 @@ func (s *_ABitOfEverythingServer) BulkEcho(stream examples.ABitOfEverythingServi
}
msgs = append(msgs, msg)
}

hmd := metadata.New(map[string]string{
"foo": "foo1",
"bar": "bar1",
})
if err := stream.SendHeader(hmd); err != nil {
return err
}

for _, msg := range msgs {
glog.Info(msg)
if err := stream.Send(msg); err != nil {
return err
}
}

stream.SetTrailer(metadata.New(map[string]string{
"foo": "foo2",
"bar": "bar2",
}))
return nil
}
10 changes: 10 additions & 0 deletions examples/server/echo.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
examples "github.com/gengo/grpc-gateway/examples/examplepb"
"github.com/golang/glog"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
)

// Implements of EchoServiceServer
Expand All @@ -21,5 +23,13 @@ func (s *echoServer) Echo(ctx context.Context, msg *examples.SimpleMessage) (*ex

func (s *echoServer) EchoBody(ctx context.Context, msg *examples.SimpleMessage) (*examples.SimpleMessage, error) {
glog.Info(msg)
grpc.SendHeader(ctx, metadata.New(map[string]string{
"foo": "foo1",
"bar": "bar1",
}))
grpc.SetTrailer(ctx, metadata.New(map[string]string{
"foo": "foo2",
"bar": "bar2",
}))
return msg, nil
}

0 comments on commit c33445c

Please sign in to comment.