expected member count
Gitea/etcdmtr/pipeline/head This commit looks good Details

This commit is contained in:
dave 2024-02-24 23:28:42 -08:00
parent 34f4337e78
commit c49fea2c40
1 changed files with 15 additions and 1 deletions

View File

@ -24,7 +24,7 @@ type EtcdMtrArgs struct {
Insecure bool `short:"i" long:"insecure" description:"Do not verify against CA"`
Timeout int `short:"t" long:"timeout" description:"Operation timeout in seconds"`
ExpectedMembers int `short:"m" long:"members" description:"Expect at least this many members"`
Debug bool `long:"debug" description:"Show debug output and etcd messages"`
Debug bool `long:"debug" description:"Show debug output and etcd messages"`
}
type Client struct {
@ -149,6 +149,8 @@ func main() {
fmt.Printf("found member list of: %d\n", numMembers)
memberErrors := make([]error, 0)
for _, member := range members.Members {
endpoint := member.ClientURLs[0]
log.Printf("trying to reach %s", endpoint)
@ -158,10 +160,22 @@ func main() {
is_leader, err := contactMember(contextCtx, client, endpoint)
if err != nil {
log.Printf("couldn't reach member %s: %s", endpoint, err)
memberErrors = append(memberErrors, err)
continue
}
log.Printf("reached member %s - is leader? %v", endpoint, is_leader)
}
if args.ExpectedMembers > 0 {
if numMembers != args.ExpectedMembers {
log.Printf("found different number of members than expected: %d", numMembers)
os.Exit(1)
}
if len(memberErrors) > 0 {
log.Printf("encountered an error when contacting %d members", len(memberErrors))
os.Exit(1)
}
}
}
func contactMember(ctx context.Context, client *Client, endpoint string) (bool, error) {