(t *testing.T)
| 729 | } |
| 730 | |
| 731 | func 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) |
nothing calls this directly
no test coverage detected