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

Function TestRequestMsgRaceAsyncInfo

test/headers_test.go:118–193  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

116}
117
118func TestRequestMsgRaceAsyncInfo(t *testing.T) {
119 s1Opts := natsserver.DefaultTestOptions
120 s1Opts.Host = "127.0.0.1"
121 s1Opts.Port = -1
122 s1Opts.Cluster.Name = "CLUSTER"
123 s1Opts.Cluster.Host = "127.0.0.1"
124 s1Opts.Cluster.Port = -1
125 s := RunServerWithOptions(&s1Opts)
126 defer s.Shutdown()
127
128 nc, err := nats.Connect(s.ClientURL())
129 if err != nil {
130 t.Fatalf("Error connecting to server: %v", err)
131 }
132 defer nc.Close()
133
134 // Extra client with old request.
135 nc2, err := nats.Connect(s.ClientURL(), nats.UseOldRequestStyle())
136 if err != nil {
137 t.Fatalf("Error connecting to server: %v", err)
138 }
139 defer nc2.Close()
140
141 subject := "headers.test"
142 if _, err := nc.Subscribe(subject, func(m *nats.Msg) {
143 r := nats.NewMsg(m.Reply)
144 r.Header["Hdr-Test"] = []string{"bar"}
145 r.Data = []byte("+OK")
146 m.RespondMsg(r)
147 }); err != nil {
148 t.Fatalf("subscribe failed: %v", err)
149 }
150 nc.Flush()
151
152 wg := sync.WaitGroup{}
153 wg.Add(1)
154 ch := make(chan struct{})
155 go func() {
156 defer wg.Done()
157
158 s2Opts := natsserver.DefaultTestOptions
159 s2Opts.Host = "127.0.0.1"
160 s2Opts.Port = -1
161 s2Opts.Cluster.Name = "CLUSTER"
162 s2Opts.Cluster.Host = "127.0.0.1"
163 s2Opts.Cluster.Port = -1
164 s2Opts.Routes = server.RoutesFromStr(fmt.Sprintf("nats://127.0.0.1:%d", s.ClusterAddr().Port))
165 for {
166 s := RunServerWithOptions(&s2Opts)
167 s.Shutdown()
168 select {
169 case <-ch:
170 return
171 default:
172 }
173 }
174 }()
175

Callers

nothing calls this directly

Calls 11

ConnectMethod · 0.80
FatalfMethod · 0.80
RespondMsgMethod · 0.80
RequestMsgMethod · 0.80
RequestMsgWithContextMethod · 0.80
RunServerWithOptionsFunction · 0.70
SubscribeMethod · 0.65
AddMethod · 0.65
DoneMethod · 0.65
CloseMethod · 0.45
FlushMethod · 0.45

Tested by

no test coverage detected