blob: 288036bcbd4f2b2a2c55797c8c2f0fb7238cf375 [file] [log] [blame]
Austin Schuhe89fa2d2019-08-14 20:24:23 -07001package testing
2
3import (
4 "../../tests/MyGame/Example"
5
6 "context"
7 "net"
8 "testing"
9
10 "google.golang.org/grpc"
11)
12
13type server struct{}
14
15// test used to send and receive in grpc methods
16var test = "Flatbuffers"
17var addr = "0.0.0.0:50051"
18
19// gRPC server store method
20func (s *server) Store(context context.Context, in *Example.Monster) (*flatbuffers.Builder, error) {
21 b := flatbuffers.NewBuilder(0)
22 i := b.CreateString(test)
23 Example.StatStart(b)
24 Example.StatAddId(b, i)
25 b.Finish(Example.StatEnd(b))
26 return b, nil
27
28}
29
30// gRPC server retrieve method
31func (s *server) Retrieve(context context.Context, in *Example.Stat) (*flatbuffers.Builder, error) {
32 b := flatbuffers.NewBuilder(0)
33 i := b.CreateString(test)
34 Example.MonsterStart(b)
35 Example.MonsterAddName(b, i)
36 b.Finish(Example.MonsterEnd(b))
37 return b, nil
38}
39
40func StoreClient(c Example.MonsterStorageClient, t *testing.T) {
41 b := flatbuffers.NewBuilder(0)
42 i := b.CreateString(test)
43 Example.MonsterStart(b)
44 Example.MonsterAddName(b, i)
45 b.Finish(Example.MonsterEnd(b))
46 out, err := c.Store(context.Background(), b)
47 if err != nil {
48 t.Fatalf("Store client failed: %v", err)
49 }
50 if string(out.Id()) != test {
51 t.Errorf("StoreClient failed: expected=%s, got=%s\n", test, out.Id())
52 t.Fail()
53 }
54}
55
56func RetrieveClient(c Example.MonsterStorageClient, t *testing.T) {
57 b := flatbuffers.NewBuilder(0)
58 i := b.CreateString(test)
59 Example.StatStart(b)
60 Example.StatAddId(b, i)
61 b.Finish(Example.StatEnd(b))
62 out, err := c.Retrieve(context.Background(), b)
63 if err != nil {
64 t.Fatalf("Retrieve client failed: %v", err)
65 }
66 if string(out.Name()) != test {
67 t.Errorf("RetrieveClient failed: expected=%s, got=%s\n", test, out.Name())
68 t.Fail()
69 }
70}
71
72func TestGRPC(t *testing.T) {
73 lis, err := net.Listen("tcp", addr)
74 if err != nil {
75 t.Fatalf("Failed to listen: %v", err)
76 }
77 ser := grpc.NewServer(grpc.CustomCodec(flatbuffers.FlatbuffersCodec{}))
78 Example.RegisterMonsterStorageServer(ser, &server{})
79 go func() {
80 if err := ser.Serve(lis); err != nil {
81 t.Fatalf("Failed to serve: %v", err)
82 t.FailNow()
83 }
84 }()
85 conn, err := grpc.Dial(addr, grpc.WithInsecure(), grpc.WithCodec(flatbuffers.FlatbuffersCodec{}))
86 if err != nil {
87 t.Fatalf("Failed to connect: %v", err)
88 }
89 defer conn.Close()
90 client := Example.NewMonsterStorageClient(conn)
91 StoreClient(client, t)
92 RetrieveClient(client, t)
93}