(t *testing.T)
| 823 | } |
| 824 | |
| 825 | func TestKeyValueDeleteVsPurge(t *testing.T) { |
| 826 | s := RunBasicJetStreamServer() |
| 827 | defer shutdownJSServerAndRemoveStorage(t, s) |
| 828 | |
| 829 | nc, js := jsClient(t, s) |
| 830 | defer nc.Close() |
| 831 | ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) |
| 832 | defer cancel() |
| 833 | |
| 834 | kv, err := js.CreateKeyValue(ctx, jetstream.KeyValueConfig{Bucket: "KVS", History: 10}) |
| 835 | expectOk(t, err) |
| 836 | |
| 837 | put := func(key, value string) { |
| 838 | t.Helper() |
| 839 | _, err := kv.Put(ctx, key, []byte(value)) |
| 840 | expectOk(t, err) |
| 841 | } |
| 842 | |
| 843 | // Put in a few names and ages. |
| 844 | put("name", "derek") |
| 845 | put("age", "22") |
| 846 | put("name", "ivan") |
| 847 | put("age", "33") |
| 848 | put("name", "rip") |
| 849 | put("age", "44") |
| 850 | |
| 851 | expectOk(t, kv.Delete(ctx, "age")) |
| 852 | entries, err := kv.History(ctx, "age") |
| 853 | expectOk(t, err) |
| 854 | // Expect three entries and delete marker. |
| 855 | if len(entries) != 4 { |
| 856 | t.Fatalf("Expected 4 entries for age after delete, got %d", len(entries)) |
| 857 | } |
| 858 | err = kv.Purge(ctx, "name", jetstream.LastRevision(4)) |
| 859 | expectErr(t, err) |
| 860 | err = kv.Purge(ctx, "name", jetstream.LastRevision(5)) |
| 861 | expectOk(t, err) |
| 862 | // Check marker |
| 863 | e, err := kv.Get(ctx, "name") |
| 864 | expectErr(t, err, jetstream.ErrKeyNotFound) |
| 865 | if e != nil { |
| 866 | t.Fatalf("Expected a nil entry but got %v", e) |
| 867 | } |
| 868 | entries, err = kv.History(ctx, "name") |
| 869 | expectOk(t, err) |
| 870 | if len(entries) != 1 { |
| 871 | t.Fatalf("Expected only 1 entry for age after delete, got %d", len(entries)) |
| 872 | } |
| 873 | // Make sure history also reports the purge operation. |
| 874 | if e := entries[0]; e.Operation() != jetstream.KeyValuePurge { |
| 875 | t.Fatalf("Expected a purge operation but got %v", e.Operation()) |
| 876 | } |
| 877 | } |
| 878 | |
| 879 | func TestKeyValueDeleteTombstones(t *testing.T) { |
| 880 | s := RunBasicJetStreamServer() |
nothing calls this directly
no test coverage detected