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

Function TestGetClientID

test/conn_test.go:2761–2904  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2759}
2760
2761func TestGetClientID(t *testing.T) {
2762 if serverVersionAtLeast(1, 2, 0) != nil {
2763 t.SkipNow()
2764 }
2765 optsA := test.DefaultTestOptions
2766 optsA.Port = -1
2767 optsA.Cluster.Port = -1
2768 optsA.Cluster.Name = "test"
2769
2770 srvA := RunServerWithOptions(&optsA)
2771 defer srvA.Shutdown()
2772
2773 ch := make(chan bool, 1)
2774 nc1, err := nats.Connect(srvA.ClientURL(),
2775 nats.DiscoveredServersHandler(func(_ *nats.Conn) {
2776 ch <- true
2777 }),
2778 nats.ReconnectHandler(func(_ *nats.Conn) {
2779 ch <- true
2780 }))
2781 if err != nil {
2782 t.Fatalf("Error on connect: %v", err)
2783 }
2784 defer nc1.Close()
2785
2786 cid, err := nc1.GetClientID()
2787 if err != nil {
2788 t.Fatalf("Error getting CID: %v", err)
2789 }
2790 if cid == 0 {
2791 t.Fatal("Unexpected cid value, make sure server is 1.2.0+")
2792 }
2793
2794 // Start a second server and verify that async INFO contains client ID
2795 optsB := test.DefaultTestOptions
2796 optsB.Port = -1
2797 optsB.Cluster.Port = -1
2798 optsB.Cluster.Name = "test"
2799
2800 optsB.Routes = server.RoutesFromStr(fmt.Sprintf("nats://127.0.0.1:%d", srvA.ClusterAddr().Port))
2801 srvB := RunServerWithOptions(&optsB)
2802 defer srvB.Shutdown()
2803
2804 // Wait for the discovered callback to fire
2805 if err := Wait(ch); err != nil {
2806 t.Fatal("Did not fire the discovered callback")
2807 }
2808 // Now check CID should be valid and same as before
2809 newCID, err := nc1.GetClientID()
2810 if err != nil {
2811 t.Fatalf("Error getting CID: %v", err)
2812 }
2813 if newCID != cid {
2814 t.Fatalf("Expected CID to be %v, got %v", cid, newCID)
2815 }
2816
2817 // Create a client to server B
2818 nc2, err := nats.Connect(srvB.ClientURL())

Callers

nothing calls this directly

Calls 15

serverVersionAtLeastFunction · 0.85
ConnectMethod · 0.80
ReconnectHandlerMethod · 0.80
FatalfMethod · 0.80
GetClientIDMethod · 0.80
ErrorfMethod · 0.80
RunServerWithOptionsFunction · 0.70
WaitFunction · 0.70
checkErrChannelFunction · 0.70
AddMethod · 0.65
DoneMethod · 0.65

Tested by

no test coverage detected