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

Function TestKeyValueDeleteTombstones

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

Source from the content-addressed store, hash-verified

700}
701
702func TestKeyValueDeleteTombstones(t *testing.T) {
703 s := RunBasicJetStreamServer()
704 defer shutdownJSServerAndRemoveStorage(t, s)
705
706 nc, js := jsClient(t, s)
707 defer nc.Close()
708
709 kv, err := js.CreateKeyValue(&nats.KeyValueConfig{Bucket: "KVS", History: 10})
710 expectOk(t, err)
711
712 put := func(key, value string) {
713 t.Helper()
714 _, err := kv.Put(key, []byte(value))
715 expectOk(t, err)
716 }
717
718 v := strings.Repeat("ABC", 33)
719 for i := 1; i <= 100; i++ {
720 put(fmt.Sprintf("key-%d", i), v)
721 }
722 // Now delete them.
723 for i := 1; i <= 100; i++ {
724 err := kv.Delete(fmt.Sprintf("key-%d", i))
725 expectOk(t, err)
726 }
727
728 // Now cleanup.
729 err = kv.PurgeDeletes(nats.DeleteMarkersOlderThan(-1))
730 expectOk(t, err)
731
732 si, err := js.StreamInfo("KV_KVS")
733 expectOk(t, err)
734 if si.State.Msgs != 0 {
735 t.Fatalf("Expected no stream msgs to be left, got %d", si.State.Msgs)
736 }
737
738 // Try with context
739 ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second)
740 defer cancel()
741 err = kv.PurgeDeletes(nats.Context(ctx))
742 expectOk(t, err)
743}
744
745func TestKeyValuePurgeDeletesMarkerThreshold(t *testing.T) {
746 s := RunBasicJetStreamServer()

Callers

nothing calls this directly

Calls 12

FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
expectOkFunction · 0.70
CreateKeyValueMethod · 0.65
PutMethod · 0.65
DeleteMethod · 0.65
PurgeDeletesMethod · 0.65
StreamInfoMethod · 0.65
ContextMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected