...
1package main
2
3import (
4 "context"
5 "flag"
6 "fmt"
7 "time"
8
9 pb "golang.conradwood.net/apis/getestservice"
10 "golang.conradwood.net/go-easyops/authremote"
11 "golang.conradwood.net/go-easyops/errors"
12 "golang.conradwood.net/go-easyops/server"
13 "golang.conradwood.net/go-easyops/utils"
14 "google.golang.org/grpc"
15)
16
17var (
18 port = flag.Int("port", 0, "grpc port")
19)
20
21func main() {
22 flag.Parse()
23 fmt.Printf("Error testing\n")
24 ctx := authremote.Context()
25 err := errors.AccessDenied(ctx, "foo")
26 fmt.Printf("ErrorString for access denied: %s\n", errstr(err))
27 err = errors.Errorf("errorf")
28 fmt.Printf("ErrorString for errorf: %s\n", errstr(err))
29 err = errors.Wrap(fmt.Errorf("fmterror"))
30 fmt.Printf("ErrorString for wrap: %s\n", errstr(err))
31
32 sd := server.NewServerDef()
33 p := *port
34 if p == 0 {
35 p = 4100 + utils.RandomInt(50)
36 }
37 sd.SetPort(p)
38 sd.SetRegister(server.Register(
39 func(g *grpc.Server) error {
40 pb.RegisterEchoServiceServer(g, &echoServer{})
41 return nil
42 },
43 ))
44 sd.SetOnStartupCallback(startup)
45 err = server.ServerStartup(sd)
46 utils.Bail("failed to start server", err)
47 fmt.Printf("Done\n")
48}
49
50func errstr(err error) string {
51 return errors.ErrorStringWithStackTrace(err)
52}
53
54func startup() {
55 ctx := authremote.Context()
56 _, err := pb.GetEchoServiceClient().Ping(ctx, &pb.PingRequest{PleaseFail: true})
57 utils.Bail("failed to ping", err)
58 time.Sleep(time.Duration(20) * time.Second)
59}
60
61type echoServer struct {
62}
63
64func (e *echoServer) Ping(ctx context.Context, req *pb.PingRequest) (*pb.PingResponse, error) {
65 e.Printf("pinged\n")
66 if req.PleaseFail {
67 return nil, errors.AccessDenied(ctx, "failed")
68 // return nil, errors.Errorf("failed")
69 }
70 res := &pb.PingResponse{}
71 return res, nil
72}
73
74func (e *echoServer) Printf(format string, args ...interface{}) {
75 prefix := "[server] "
76 x := fmt.Sprintf(format, args...)
77 fmt.Print(prefix + x)
78}
View as plain text