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

Function TestObjectWatch

test/object_test.go:497–657  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

495}
496
497func TestObjectWatch(t *testing.T) {
498 expectUpdateF := func(t *testing.T, watcher nats.ObjectWatcher) func(name string) {
499 return func(name string) {
500 t.Helper()
501 select {
502 case info := <-watcher.Updates():
503 if false && info.Name != name { // TODO what is supposed to happen here?
504 t.Fatalf("Expected update for %q, but got %+v", name, info)
505 }
506 case <-time.After(time.Second):
507 t.Fatalf("Did not receive an update like expected")
508 }
509 }
510 }
511
512 expectNoMoreUpdatesF := func(t *testing.T, watcher nats.ObjectWatcher) func() {
513 return func() {
514 t.Helper()
515 select {
516 case info := <-watcher.Updates():
517 t.Fatalf("Got an unexpected update: %+v", info)
518 case <-time.After(100 * time.Millisecond):
519 }
520 }
521 }
522
523 expectInitDoneF := func(t *testing.T, watcher nats.ObjectWatcher) func() {
524 return func() {
525 t.Helper()
526 select {
527 case info := <-watcher.Updates():
528 if info != nil {
529 t.Fatalf("Did not get expected: %+v", info)
530 }
531 case <-time.After(time.Second):
532 t.Fatalf("Did not receive a init done like expected")
533 }
534 }
535 }
536
537 t.Run("default watcher", func(t *testing.T) {
538 s := RunBasicJetStreamServer()
539 defer shutdownJSServerAndRemoveStorage(t, s)
540
541 nc, js := jsClient(t, s)
542 defer nc.Close()
543
544 obs, err := js.CreateObjectStore(&nats.ObjectStoreConfig{Bucket: "WATCH-TEST"})
545 expectOk(t, err)
546
547 watcher, err := obs.Watch()
548 expectOk(t, err)
549 defer watcher.Stop()
550
551 expectUpdate := expectUpdateF(t, watcher)
552 expectNoMoreUpdates := expectNoMoreUpdatesF(t, watcher)
553 expectInitDone := expectInitDoneF(t, watcher)
554

Callers

nothing calls this directly

Calls 15

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
PutStringMethod · 0.65
DeleteMethod · 0.65

Tested by

no test coverage detected