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

Function TestKeyValueDeleteVsPurge

jetstream/test/kv_test.go:825–877  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

823}
824
825func 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
879func TestKeyValueDeleteTombstones(t *testing.T) {
880 s := RunBasicJetStreamServer()

Callers

nothing calls this directly

Calls 15

LastRevisionFunction · 0.92
FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
expectOkFunction · 0.70
expectErrFunction · 0.70
CreateKeyValueMethod · 0.65
PutMethod · 0.65
DeleteMethod · 0.65
HistoryMethod · 0.65
PurgeMethod · 0.65

Tested by

no test coverage detected