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

gatewayd-io / gatewayd / 13356490769

16 Feb 2025 03:41PM UTC coverage: 60.508% (-2.4%) from 62.872%
13356490769

Pull #661

github

sinadarbouy
feat(raft): Improve cluster management and peer handling

Enhance Raft cluster operations with:
- Robust LeaveCluster method with timeout and logging
- Comprehensive peer validation in FSM
- Metrics tracking for peer additions, updates, and removals
- Improved error handling and state checks
- Added validation for peer payload addresses
Pull Request #661: Add Raft cluster peer management (GetPeers, AddPeer, RemovePeer)

491 of 1165 new or added lines in 13 files covered. (42.15%)

8 existing lines in 4 files now uncovered.

5669 of 9369 relevant lines covered (60.51%)

16.07 hits per line

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

0.0
/plugin/plugin.go
1
package plugin
2

3
import (
4
        "net"
5

6
        sdkPlugin "github.com/gatewayd-io/gatewayd-plugin-sdk/plugin"
7
        v1 "github.com/gatewayd-io/gatewayd-plugin-sdk/plugin/v1"
8
        gerr "github.com/gatewayd-io/gatewayd/errors"
9
)
10

11
type Plugin sdkPlugin.Plugin
12

13
type IPlugin interface {
14
        Start() (net.Addr, error)
15
        Stop()
16
        Dispense() (v1.GatewayDPluginServiceClient, *gerr.GatewayDError)
17
        Ping() *gerr.GatewayDError
18
}
19

20
var _ IPlugin = (*Plugin)(nil)
21

22
// Start starts the plugin.
23
func (p *Plugin) Start() (net.Addr, error) {
×
24
        var addr net.Addr
×
25
        var err error
×
26
        if addr, err = p.Client.Start(); err != nil {
×
27
                return nil, gerr.ErrFailedToStartPlugin.Wrap(err)
×
28
        }
×
29
        return addr, nil
×
30
}
31

32
// Stop kills the plugin.
33
func (p *Plugin) Stop() {
×
34
        p.Client.Kill()
×
35
}
×
36

37
// Dispense returns the plugin client.
38
func (p *Plugin) Dispense() (v1.GatewayDPluginServiceClient, *gerr.GatewayDError) {
×
39
        rpcClient, err := p.Client.Client()
×
40
        if err != nil {
×
41
                return nil, gerr.ErrFailedToGetRPCClient.Wrap(err)
×
42
        }
×
43

44
        raw, err := rpcClient.Dispense(p.ID.Name)
×
45
        if err != nil {
×
46
                return nil, gerr.ErrFailedToDispensePlugin.Wrap(err)
×
47
        }
×
48

49
        if gatewaydPlugin, ok := raw.(v1.GatewayDPluginServiceClient); ok {
×
50
                return gatewaydPlugin, nil
×
51
        }
×
52

53
        return nil, gerr.ErrPluginNotReady
×
54
}
55

56
// Ping pings the plugin.
57
func (p *Plugin) Ping() *gerr.GatewayDError {
×
58
        rpcClient, err := p.Client.Client()
×
59
        if err != nil {
×
60
                return gerr.ErrFailedToGetRPCClient.Wrap(err)
×
61
        }
×
62

63
        if err := rpcClient.Ping(); err != nil {
×
64
                return gerr.ErrFailedToPingPlugin.Wrap(err)
×
65
        }
×
66

67
        return nil
×
68
}
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

© 2026 Coveralls, Inc