1 package main
2
3 import (
4 "context"
5 "fmt"
6 "golang.conradwood.net/apis/common"
7 ge "golang.conradwood.net/apis/getestservice"
8 "golang.conradwood.net/go-easyops/authremote"
9 "golang.conradwood.net/go-easyops/cmdline"
10 "io"
11 )
12
13
14 func cur_versions() (int, int) {
15 cur := cmdline.GetContextBuilderVersion()
16 alt := OLD_CONTEXT_VERSION
17 if cur == OLD_CONTEXT_VERSION {
18 alt = NEW_CONTEXT_VERSION
19 }
20 return cur, alt
21 }
22
23 func (g *geServer) CallUnaryFromStream(req *ge.RequiredContext, srv ge.CtxTest_CallUnaryFromStreamServer) error {
24 cur, alt := cur_versions()
25 cmdline.SetContextBuilderVersion(alt)
26 _, err := ge.GetCtxTestClient().TestDeSer(srv.Context(), req)
27 if err != nil {
28 return err
29 }
30 cmdline.SetContextBuilderVersion(cur)
31 _, err = ge.GetCtxTestClient().TestDeSer(srv.Context(), req)
32 if err != nil {
33 return err
34 }
35 return nil
36 }
37
38 func (g *geServer) CallUnaryFromUnary(ctx context.Context, req *ge.RequiredContext) (*common.Void, error) {
39 cur, alt := cur_versions()
40 cmdline.SetContextBuilderVersion(alt)
41 _, err := ge.GetCtxTestClient().TestDeSer(ctx, req)
42 if err != nil {
43 fmt.Printf("ufu: %s\n", err)
44 return nil, err
45 }
46 cmdline.SetContextBuilderVersion(cur)
47 _, err = ge.GetCtxTestClient().TestDeSer(ctx, req)
48 if err != nil {
49 fmt.Printf("ufu: %s\n", err)
50 return nil, err
51 }
52 return &common.Void{}, nil
53 }
54 func (g *geServer) CallStreamFromStream(req *ge.RequiredContext, srv ge.CtxTest_CallStreamFromStreamServer) error {
55 srv2, err := ge.GetCtxTestClient().TestStream(srv.Context(), req)
56 if err != nil {
57 return err
58 }
59 for {
60 c, err := srv2.Recv()
61 if err == io.EOF {
62 break
63 }
64 if err != nil {
65 return err
66 }
67 err = srv.Send(c)
68 if err != nil {
69 return err
70 }
71 }
72
73 return nil
74 }
75 func (g *geServer) CallStreamFromUnary(ctx context.Context, req *ge.RequiredContext) (*common.Void, error) {
76 m := map[string]string{"provides": "default"}
77
78 cur, alt := cur_versions()
79 cmdline.SetContextBuilderVersion(alt)
80
81 srv2, err := ge.GetCtxTestClient().TestStream(ctx, req)
82 if err != nil {
83 return nil, err
84 }
85 err = checkSrv(srv2)
86 if err != nil {
87 return nil, err
88 }
89
90 cmdline.SetContextBuilderVersion(cur)
91 srv2, err = ge.GetCtxTestClient().TestStream(ctx, req)
92 if err != nil {
93 return nil, err
94 }
95 err = checkSrv(srv2)
96 if err != nil {
97 return nil, err
98 }
99
100 cmdline.SetContextBuilderVersion(alt)
101 nctx := authremote.DerivedContextWithRouting(ctx, m, true)
102 srv2, err = ge.GetCtxTestClient().TestStream(nctx, req)
103 if err != nil {
104 return nil, err
105 }
106 err = checkSrv(srv2)
107 if err != nil {
108 return nil, err
109 }
110
111 cmdline.SetContextBuilderVersion(cur)
112 nctx = authremote.DerivedContextWithRouting(ctx, m, true)
113 srv2, err = ge.GetCtxTestClient().TestStream(nctx, req)
114 if err != nil {
115 return nil, err
116 }
117 err = checkSrv(srv2)
118 if err != nil {
119 return nil, err
120 }
121
122 return &common.Void{}, nil
123 }
124
View as plain text