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

Function TestJetStreamPublish

test/js_test.go:251–431  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

249}
250
251func TestJetStreamPublish(t *testing.T) {
252 s := RunBasicJetStreamServer()
253 defer shutdownJSServerAndRemoveStorage(t, s)
254
255 nc, js := jsClient(t, s)
256 defer nc.Close()
257
258 var err error
259
260 // Make sure we get a proper failure when no stream is present.
261 _, err = js.Publish("foo", []byte("Hello JS"))
262 if err != nats.ErrNoStreamResponse {
263 t.Fatalf("Expected a no stream error but got %v", err)
264 }
265
266 // Create the stream using our client API.
267 si, err := js.AddStream(&nats.StreamConfig{
268 Name: "TEST",
269 Subjects: []string{"test", "foo", "bar"},
270 })
271 if err != nil {
272 t.Fatalf("Unexpected error: %v", err)
273 }
274 // Double check that file-based storage is default.
275 if si.Config.Storage != nats.FileStorage {
276 t.Fatalf("Expected FileStorage as default, got %v", si.Config.Storage)
277 }
278
279 // Lookup the stream for testing.
280 _, err = js.StreamInfo("TEST")
281 if err != nil {
282 t.Fatalf("stream lookup failed: %v", err)
283 }
284
285 var pa *nats.PubAck
286 expect := func(seq, nmsgs uint64) {
287 t.Helper()
288 if seq > 0 && pa == nil {
289 t.Fatalf("Missing pubAck to test sequence %d", seq)
290 }
291 if pa != nil {
292 if pa.Stream != "TEST" {
293 t.Fatalf("Wrong stream name, expected %q, got %q", "TEST", pa.Stream)
294 }
295 if seq > 0 && pa.Sequence != seq {
296 t.Fatalf("Wrong stream sequence, expected %d, got %d", seq, pa.Sequence)
297 }
298 }
299
300 stream, err := js.StreamInfo("TEST")
301 if err != nil {
302 t.Fatalf("stream lookup failed: %v", err)
303 }
304 if stream.State.Msgs != nmsgs {
305 t.Fatalf("Expected %d messages, got %d", nmsgs, stream.State.Msgs)
306 }
307 }
308

Callers

nothing calls this directly

Calls 15

FatalfMethod · 0.80
UnsubscribeMethod · 0.80
NextMsgMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
PublishMethod · 0.65
AddStreamMethod · 0.65
StreamInfoMethod · 0.65
ErrorMethod · 0.65
PublishMsgMethod · 0.65
ContextMethod · 0.65

Tested by

no test coverage detected