• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bavix / gripmock / 17066567963

19 Aug 2025 10:15AM UTC coverage: 52.632% (-0.9%) from 53.531%
17066567963

push

github

web-flow
Merge pull request #653 from bavix/652-field-outputheaders-not-being-sent-as-trailers-if-outputcode-0

Fix Trailers

78 of 190 new or added lines in 8 files covered. (41.05%)

7 existing lines in 1 file now uncovered.

1590 of 3021 relevant lines covered (52.63%)

30.19 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

70.59
/internal/deps/grpc_server.go
1
package deps
2

3
import (
4
        "context"
5
        "net"
6

7
        "github.com/cockroachdb/errors"
8
        "github.com/rs/zerolog"
9

10
        "github.com/bavix/gripmock/v3/internal/app"
11
        "github.com/bavix/gripmock/v3/internal/domain/proto"
12
)
13

14
func (b *Builder) GRPCServe(ctx context.Context, param *proto.Arguments) error {
1✔
15
        listener, err := (&net.ListenConfig{}).Listen(ctx, b.config.GRPCNetwork, b.config.GRPCAddr)
1✔
16
        if err != nil {
1✔
17
                return errors.Wrap(err, "failed to listen")
×
18
        }
×
19

20
        logger := zerolog.Ctx(ctx)
1✔
21

1✔
22
        logger.Info().
1✔
23
                Str("addr", listener.Addr().String()).
1✔
24
                Str("network", listener.Addr().Network()).
1✔
25
                Msg("Serving gRPC")
1✔
26

1✔
27
        grpcServer := app.NewGRPCServer(
1✔
28
                b.config.GRPCNetwork,
1✔
29
                b.config.GRPCAddr,
1✔
30
                param,
1✔
31
                b.Budgerigar(),
1✔
32
                b.Extender(),
1✔
33
        )
1✔
34

1✔
35
        server, err := grpcServer.Build(ctx)
1✔
36
        if err != nil {
1✔
37
                return errors.Wrap(err, "failed to build gRPC server")
×
38
        }
×
39

40
        b.ender.Add(func(_ context.Context) error {
2✔
41
                server.GracefulStop()
1✔
42

1✔
43
                return nil
1✔
44
        })
1✔
45

46
        ch := make(chan error)
1✔
47

1✔
48
        go func() {
2✔
49
                defer func() {
1✔
NEW
50
                        if r := recover(); r != nil {
×
NEW
51
                                logger.Fatal().
×
NEW
52
                                        Interface("panic", r).
×
NEW
53
                                        Msg("Fatal panic in gRPC server goroutine - terminating server")
×
NEW
54
                        }
×
55
                }()
56
                defer close(ch)
1✔
57

1✔
58
                ch <- server.Serve(listener)
1✔
59
        }()
60

61
        select {
1✔
62
        case <-ctx.Done():
1✔
63
                if !errors.Is(ctx.Err(), context.Canceled) {
1✔
64
                        return errors.Wrap(ctx.Err(), "failed to serve")
×
65
                }
×
66
        case err := <-ch:
×
67
                if !errors.Is(err, context.Canceled) {
×
68
                        return errors.Wrap(err, "failed to serve")
×
69
                }
×
70
        }
71

72
        return nil
1✔
73
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc