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

Function TestObjectWatch

jetstream/test/object_test.go:566–729  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

564}
565
566func TestObjectWatch(t *testing.T) {
567 expectUpdateF := func(t *testing.T, watcher jetstream.ObjectWatcher) func(name string) {
568 return func(name string) {
569 t.Helper()
570 select {
571 case info := <-watcher.Updates():
572 if false && info.Name != name { // TODO what is supposed to happen here?
573 t.Fatalf("Expected update for %q, but got %+v", name, info)
574 }
575 case <-time.After(time.Second):
576 t.Fatalf("Did not receive an update like expected")
577 }
578 }
579 }
580
581 expectNoMoreUpdatesF := func(t *testing.T, watcher jetstream.ObjectWatcher) func() {
582 return func() {
583 t.Helper()
584 select {
585 case info := <-watcher.Updates():
586 t.Fatalf("Got an unexpected update: %+v", info)
587 case <-time.After(100 * time.Millisecond):
588 }
589 }
590 }
591
592 expectInitDoneF := func(t *testing.T, watcher jetstream.ObjectWatcher) func() {
593 return func() {
594 t.Helper()
595 select {
596 case info := <-watcher.Updates():
597 if info != nil {
598 t.Fatalf("Did not get expected: %+v", info)
599 }
600 case <-time.After(time.Second):
601 t.Fatalf("Did not receive a init done like expected")
602 }
603 }
604 }
605
606 t.Run("default watcher", func(t *testing.T) {
607 s := RunBasicJetStreamServer()
608 defer shutdownJSServerAndRemoveStorage(t, s)
609
610 nc, js := jsClient(t, s)
611 defer nc.Close()
612 ctx := context.Background()
613
614 obs, err := js.CreateObjectStore(ctx, jetstream.ObjectStoreConfig{Bucket: "WATCH-TEST"})
615 expectOk(t, err)
616
617 watcher, err := obs.Watch(ctx)
618 expectOk(t, err)
619 defer watcher.Stop()
620
621 expectUpdate := expectUpdateF(t, watcher)
622 expectNoMoreUpdates := expectNoMoreUpdatesF(t, watcher)
623 expectInitDone := expectInitDoneF(t, watcher)

Callers

nothing calls this directly

Calls 15

GetObjectInfoShowDeletedFunction · 0.92
UpdatesOnlyFunction · 0.92
FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
expectOkFunction · 0.70
expectErrFunction · 0.70
UpdatesMethod · 0.65
CreateObjectStoreMethod · 0.65
WatchMethod · 0.65
StopMethod · 0.65

Tested by

no test coverage detected