MCPcopy
hub / github.com/nats-io/nats.go / setupJSClusterWithSize

Function setupJSClusterWithSize

test/js_test.go:6416–6494  ·  view source on GitHub ↗
(t *testing.T, clusterName string, size int)

Source from the content-addressed store, hash-verified

6414}
6415
6416func setupJSClusterWithSize(t *testing.T, clusterName string, size int) []*jsServer {
6417 t.Helper()
6418 nodes := make([]*jsServer, size)
6419 opts := make([]*server.Options, 0)
6420
6421 var activeListeners []net.Listener
6422 getAddr := func(t *testing.T) (string, string, int) {
6423 l, err := net.Listen("tcp", "127.0.0.1:0")
6424 if err != nil {
6425 t.Fatalf("Unexpected error: %v", err)
6426 }
6427
6428 addr := l.Addr()
6429 host := addr.(*net.TCPAddr).IP.String()
6430 port := addr.(*net.TCPAddr).Port
6431 time.Sleep(100 * time.Millisecond)
6432
6433 // we cannot close the listener immediately to avoid duplicate port binding
6434 // the returned net.Listener has to be closed after all ports are drawn
6435 activeListeners = append(activeListeners, l)
6436 return addr.String(), host, port
6437 }
6438
6439 routes := []string{}
6440 for i := 0; i < size; i++ {
6441 o := natsserver.DefaultTestOptions
6442 o.JetStream = true
6443 o.ServerName = fmt.Sprintf("NODE_%d", i)
6444 tdir, err := os.MkdirTemp(os.TempDir(), fmt.Sprintf("%s_%s-", o.ServerName, clusterName))
6445 if err != nil {
6446 t.Fatal(err)
6447 }
6448 o.StoreDir = tdir
6449
6450 if size > 1 {
6451 o.Cluster.Name = clusterName
6452 _, host1, port1 := getAddr(t)
6453 o.Host = host1
6454 o.Port = port1
6455
6456 addr2, host2, port2 := getAddr(t)
6457 o.Cluster.Host = host2
6458 o.Cluster.Port = port2
6459 o.Tags = []string{o.ServerName}
6460 routes = append(routes, fmt.Sprintf("nats://%s", addr2))
6461 }
6462 opts = append(opts, &o)
6463 }
6464 // close all connections used to randomize ports
6465 for _, l := range activeListeners {
6466 l.Close()
6467 }
6468
6469 if size > 1 {
6470 routesStr := server.RoutesFromStr(strings.Join(routes, ","))
6471
6472 for i, o := range opts {
6473 o.Routes = routesStr

Callers 1

withJSClusterFunction · 0.70

Calls 8

waitForJSClusterReadyFunction · 0.85
FatalfMethod · 0.80
ConnectMethod · 0.80
RunServerWithOptionsFunction · 0.70
waitForJSReadyFunction · 0.70
ErrorMethod · 0.65
StringMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected