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

Function TestKeyValueDeleteVsPurge

test/kv_test.go:650–700  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

648}
649
650func TestKeyValueDeleteVsPurge(t *testing.T) {
651 s := RunBasicJetStreamServer()
652 defer shutdownJSServerAndRemoveStorage(t, s)
653
654 nc, js := jsClient(t, s)
655 defer nc.Close()
656
657 kv, err := js.CreateKeyValue(&nats.KeyValueConfig{Bucket: "KVS", History: 10})
658 expectOk(t, err)
659
660 put := func(key, value string) {
661 t.Helper()
662 _, err := kv.Put(key, []byte(value))
663 expectOk(t, err)
664 }
665
666 // Put in a few names and ages.
667 put("name", "derek")
668 put("age", "22")
669 put("name", "ivan")
670 put("age", "33")
671 put("name", "rip")
672 put("age", "44")
673
674 kv.Delete("age")
675 entries, err := kv.History("age")
676 expectOk(t, err)
677 // Expect three entries and delete marker.
678 if len(entries) != 4 {
679 t.Fatalf("Expected 4 entries for age after delete, got %d", len(entries))
680 }
681 err = kv.Purge("name", nats.LastRevision(4))
682 expectErr(t, err)
683 err = kv.Purge("name", nats.LastRevision(5))
684 expectOk(t, err)
685 // Check marker
686 e, err := kv.Get("name")
687 expectErr(t, err, nats.ErrKeyNotFound)
688 if e != nil {
689 t.Fatalf("Expected a nil entry but got %v", e)
690 }
691 entries, err = kv.History("name")
692 expectOk(t, err)
693 if len(entries) != 1 {
694 t.Fatalf("Expected only 1 entry for age after delete, got %d", len(entries))
695 }
696 // Make sure history also reports the purge operation.
697 if e := entries[0]; e.Operation() != nats.KeyValuePurge {
698 t.Fatalf("Expected a purge operation but got %v", e.Operation())
699 }
700}
701
702func TestKeyValueDeleteTombstones(t *testing.T) {
703 s := RunBasicJetStreamServer()

Callers

nothing calls this directly

Calls 14

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
GetMethod · 0.65

Tested by

no test coverage detected