(t *testing.T)
| 414 | } |
| 415 | |
| 416 | func TestNotifierDoubleAdd(t *testing.T) { |
| 417 | ctx := context.Background() |
| 418 | |
| 419 | listenerCfg1 := server.ListenerConfig{ |
| 420 | Address: "localhost:52501", |
| 421 | } |
| 422 | srv, err := server.NewServer(newManagerTestServerConfig(listenerCfg1.Address)) |
| 423 | if err != nil { |
| 424 | t.Fatalf("failed to create server: %s", err) |
| 425 | } |
| 426 | errChan := make(chan error, 1) |
| 427 | go func() { |
| 428 | if err := srv.Listen(listenerCfg1); err != nil { |
| 429 | errChan <- err |
| 430 | } |
| 431 | }() |
| 432 | |
| 433 | defer func() { |
| 434 | if err := srv.Shutdown(ctx); err != nil { |
| 435 | t.Errorf("failed to close server: %s", err) |
| 436 | } |
| 437 | }() |
| 438 | |
| 439 | if err := waitForServerToStart(errChan); err != nil { |
| 440 | t.Fatalf("failed to start server: %s", err) |
| 441 | } |
| 442 | |
| 443 | log.Debugf("connect by alice") |
| 444 | mCtx, cancel := context.WithCancel(ctx) |
| 445 | defer cancel() |
| 446 | |
| 447 | clientBob := NewManager(mCtx, toURL(listenerCfg1), "bob", iface.DefaultMTU) |
| 448 | if err = clientBob.Serve(); err != nil { |
| 449 | t.Fatalf("failed to serve manager: %s", err) |
| 450 | } |
| 451 | |
| 452 | clientAlice := NewManager(mCtx, toURL(listenerCfg1), "alice", iface.DefaultMTU) |
| 453 | if err = clientAlice.Serve(); err != nil { |
| 454 | t.Fatalf("failed to serve manager: %s", err) |
| 455 | } |
| 456 | |
| 457 | conn1, err := clientAlice.OpenConn(ctx, clientAlice.ServerURLs()[0], "bob", netip.Addr{}) |
| 458 | if err != nil { |
| 459 | t.Fatalf("failed to bind channel: %s", err) |
| 460 | } |
| 461 | |
| 462 | fnCloseListener := OnServerCloseListener(func() { |
| 463 | log.Infof("close listener") |
| 464 | }) |
| 465 | |
| 466 | err = clientAlice.AddCloseListener(clientAlice.ServerURLs()[0], fnCloseListener) |
| 467 | if err != nil { |
| 468 | t.Fatalf("failed to add close listener: %s", err) |
| 469 | } |
| 470 | |
| 471 | err = clientAlice.AddCloseListener(clientAlice.ServerURLs()[0], fnCloseListener) |
| 472 | if err != nil { |
| 473 | t.Fatalf("failed to add close listener: %s", err) |
nothing calls this directly
no test coverage detected