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

Function TestRequestMsg

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

Source from the content-addressed store, hash-verified

64}
65
66func TestRequestMsg(t *testing.T) {
67 s := RunServerOnPort(-1)
68 defer s.Shutdown()
69
70 nc, err := nats.Connect(s.ClientURL())
71 if err != nil {
72 t.Fatalf("Error connecting to server: %v", err)
73 }
74 defer nc.Close()
75
76 subject := "headers.test"
77 sub, err := nc.Subscribe(subject, func(m *nats.Msg) {
78 if m.Header.Get("Hdr-Test") != "1" {
79 m.Respond([]byte("-ERR"))
80 }
81
82 r := nats.NewMsg(m.Reply)
83 r.Header = m.Header
84 r.Data = []byte("+OK")
85 m.RespondMsg(r)
86 })
87 if err != nil {
88 t.Fatalf("subscribe failed: %v", err)
89 }
90 defer sub.Unsubscribe()
91
92 msg := nats.NewMsg(subject)
93 msg.Header.Add("Hdr-Test", "1")
94 resp, err := nc.RequestMsg(msg, time.Second)
95 if err != nil {
96 t.Fatalf("Expected request to be published: %v", err)
97 }
98 if string(resp.Data) != "+OK" {
99 t.Fatalf("Headers were not published to the requestor")
100 }
101 if resp.Header.Get("Hdr-Test") != "1" {
102 t.Fatalf("Did not receive header in response")
103 }
104
105 if err = nc.PublishMsg(nil); err != nats.ErrInvalidMsg {
106 t.Errorf("Unexpected error: %v", err)
107 }
108 if _, err = nc.RequestMsg(nil, time.Second); err != nats.ErrInvalidMsg {
109 t.Errorf("Unexpected error: %v", err)
110 }
111 ctx, cancel := context.WithTimeout(context.Background(), 250*time.Millisecond)
112 defer cancel()
113 if _, err = nc.RequestMsgWithContext(ctx, nil); err != nats.ErrInvalidMsg {
114 t.Errorf("Unexpected error: %v", err)
115 }
116}
117
118func TestRequestMsgRaceAsyncInfo(t *testing.T) {
119 s1Opts := natsserver.DefaultTestOptions

Callers

nothing calls this directly

Calls 14

ConnectMethod · 0.80
FatalfMethod · 0.80
RespondMsgMethod · 0.80
UnsubscribeMethod · 0.80
RequestMsgMethod · 0.80
ErrorfMethod · 0.80
RequestMsgWithContextMethod · 0.80
RunServerOnPortFunction · 0.70
SubscribeMethod · 0.65
GetMethod · 0.65
RespondMethod · 0.65
AddMethod · 0.65

Tested by

no test coverage detected