...

Text file src/golang.conradwood.net/tests/errors/errortest.go~

Documentation: golang.conradwood.net/tests/errors

     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