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

Function TestObjectLinks

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

Source from the content-addressed store, hash-verified

729}
730
731func TestObjectLinks(t *testing.T) {
732 s := RunBasicJetStreamServer()
733 defer shutdownJSServerAndRemoveStorage(t, s)
734
735 nc, js := jsClient(t, s)
736 defer nc.Close()
737 ctx := context.Background()
738
739 root, err := js.CreateObjectStore(ctx, jetstream.ObjectStoreConfig{Bucket: "ROOT"})
740 expectOk(t, err)
741
742 _, err = root.PutString(ctx, "A", "AAA")
743 expectOk(t, err)
744 _, err = root.PutString(ctx, "B", "BBB")
745 expectOk(t, err)
746
747 infoA, err := root.GetInfo(ctx, "A")
748 expectOk(t, err)
749
750 // Link to individual object.
751 infoLA, err := root.AddLink(ctx, "LA", infoA)
752 expectOk(t, err)
753 expectLinkIsCorrect(t, infoA, infoLA)
754
755 // link to a link
756 _, err = root.AddLink(ctx, "LALA", infoLA)
757 expectErr(t, err, jetstream.ErrNoLinkToLink)
758
759 dir, err := js.CreateObjectStore(ctx, jetstream.ObjectStoreConfig{Bucket: "DIR"})
760 expectOk(t, err)
761
762 _, err = dir.PutString(ctx, "DIR/A", "DIR-AAA")
763 expectOk(t, err)
764 _, err = dir.PutString(ctx, "DIR/B", "DIR-BBB")
765 expectOk(t, err)
766
767 infoB, err := dir.GetInfo(ctx, "DIR/B")
768 expectOk(t, err)
769
770 infoLB, err := root.AddLink(ctx, "DBL", infoB)
771 expectOk(t, err)
772 expectLinkIsCorrect(t, infoB, infoLB)
773
774 // Now add whole other store as a link, like a directory.
775 infoBucketLink, err := root.AddBucketLink(ctx, "dir", dir)
776 expectOk(t, err)
777
778 _, err = root.Get(ctx, infoBucketLink.Name)
779 expectErr(t, err, jetstream.ErrCantGetBucket)
780
781 expectLinkPartsAreCorrect(t, infoBucketLink, "DIR", "")
782
783 // Try to get a linked object, same bucket
784 getLA, err := root.GetString(ctx, "LA")
785 expectOk(t, err)
786
787 if getLA != "AAA" {
788 t.Fatalf("Expected %q but got %q", "AAA", getLA)

Callers

nothing calls this directly

Calls 15

GetObjectInfoShowDeletedFunction · 0.92
FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
expectOkFunction · 0.70
expectLinkIsCorrectFunction · 0.70
expectErrFunction · 0.70
CreateObjectStoreMethod · 0.65
PutStringMethod · 0.65
GetInfoMethod · 0.65

Tested by

no test coverage detected