MustNewMember return an inited member with the given name. If peerTLS is set, it will use https scheme to communicate between peers.
(t testutil.TB, mcfg MemberConfig)
| 626 | // MustNewMember return an inited member with the given name. If peerTLS is |
| 627 | // set, it will use https scheme to communicate between peers. |
| 628 | func MustNewMember(t testutil.TB, mcfg MemberConfig) *Member { |
| 629 | var err error |
| 630 | m := &Member{ |
| 631 | MemberNumber: mcfg.MemberNumber, |
| 632 | UniqNumber: int(atomic.AddInt32(&UniqueCount, 1)), |
| 633 | } |
| 634 | |
| 635 | peerScheme := SchemeFromTLSInfo(mcfg.PeerTLS) |
| 636 | clientScheme := SchemeFromTLSInfo(mcfg.ClientTLS) |
| 637 | |
| 638 | pln := NewLocalListener(t) |
| 639 | m.PeerListeners = []net.Listener{pln} |
| 640 | m.PeerURLs, err = types.NewURLs([]string{peerScheme + "://" + pln.Addr().String()}) |
| 641 | if err != nil { |
| 642 | t.Fatal(err) |
| 643 | } |
| 644 | m.PeerTLSInfo = mcfg.PeerTLS |
| 645 | |
| 646 | cln := NewLocalListener(t) |
| 647 | m.ClientListeners = []net.Listener{cln} |
| 648 | m.ClientURLs, err = types.NewURLs([]string{clientScheme + "://" + cln.Addr().String()}) |
| 649 | if err != nil { |
| 650 | t.Fatal(err) |
| 651 | } |
| 652 | m.ClientTLSInfo = mcfg.ClientTLS |
| 653 | |
| 654 | m.Name = mcfg.Name |
| 655 | |
| 656 | m.DataDir, err = os.MkdirTemp(t.TempDir(), "etcd") |
| 657 | if err != nil { |
| 658 | t.Fatal(err) |
| 659 | } |
| 660 | clusterStr := fmt.Sprintf("%s=%s://%s", mcfg.Name, peerScheme, pln.Addr().String()) |
| 661 | m.InitialPeerURLsMap, err = types.NewURLsMap(clusterStr) |
| 662 | if err != nil { |
| 663 | t.Fatal(err) |
| 664 | } |
| 665 | m.InitialClusterToken = ClusterName |
| 666 | m.NewCluster = true |
| 667 | m.BootstrapTimeout = 10 * time.Millisecond |
| 668 | if m.PeerTLSInfo != nil { |
| 669 | m.ServerConfig.PeerTLSInfo = *m.PeerTLSInfo |
| 670 | } |
| 671 | m.ElectionTicks = ElectionTicks |
| 672 | m.InitialElectionTickAdvance = true |
| 673 | m.TickMs = uint(framecfg.TickDuration / time.Millisecond) |
| 674 | m.PreVote = true |
| 675 | m.QuotaBackendBytes = mcfg.QuotaBackendBytes |
| 676 | m.BackendBatchInterval = mcfg.BackendBatchInterval |
| 677 | m.MaxTxnOps = mcfg.MaxTxnOps |
| 678 | if m.MaxTxnOps == 0 { |
| 679 | m.MaxTxnOps = embed.DefaultMaxTxnOps |
| 680 | } |
| 681 | m.MaxRequestBytes = mcfg.MaxRequestBytes |
| 682 | if m.MaxRequestBytes == 0 { |
| 683 | m.MaxRequestBytes = embed.DefaultMaxRequestBytes |
| 684 | } |
| 685 | m.SnapshotCount = etcdserver.DefaultSnapshotCount |
no test coverage detected
searching dependent graphs…