(t *testing.T)
| 743 | } |
| 744 | |
| 745 | func TestKeyValuePurgeDeletesMarkerThreshold(t *testing.T) { |
| 746 | s := RunBasicJetStreamServer() |
| 747 | defer shutdownJSServerAndRemoveStorage(t, s) |
| 748 | |
| 749 | nc, js := jsClient(t, s) |
| 750 | defer nc.Close() |
| 751 | |
| 752 | kv, err := js.CreateKeyValue(&nats.KeyValueConfig{Bucket: "KVS", History: 10}) |
| 753 | expectOk(t, err) |
| 754 | |
| 755 | put := func(key, value string) { |
| 756 | t.Helper() |
| 757 | _, err := kv.Put(key, []byte(value)) |
| 758 | expectOk(t, err) |
| 759 | } |
| 760 | |
| 761 | put("foo", "foo1") |
| 762 | put("bar", "bar1") |
| 763 | put("foo", "foo2") |
| 764 | err = kv.Delete("foo") |
| 765 | expectOk(t, err) |
| 766 | |
| 767 | time.Sleep(200 * time.Millisecond) |
| 768 | |
| 769 | err = kv.Delete("bar") |
| 770 | expectOk(t, err) |
| 771 | |
| 772 | err = kv.PurgeDeletes(nats.DeleteMarkersOlderThan(100 * time.Millisecond)) |
| 773 | expectOk(t, err) |
| 774 | |
| 775 | // The key foo should have been completely cleared of the data |
| 776 | // and the delete marker. |
| 777 | fooEntries, err := kv.History("foo") |
| 778 | if err != nats.ErrKeyNotFound { |
| 779 | t.Fatalf("Expected all entries for key foo to be gone, got err=%v entries=%v", err, fooEntries) |
| 780 | } |
| 781 | barEntries, err := kv.History("bar") |
| 782 | expectOk(t, err) |
| 783 | if len(barEntries) != 1 { |
| 784 | t.Fatalf("Expected 1 entry, got %v", barEntries) |
| 785 | } |
| 786 | if e := barEntries[0]; e.Operation() != nats.KeyValueDelete { |
| 787 | t.Fatalf("Unexpected entry: %+v", e) |
| 788 | } |
| 789 | } |
| 790 | |
| 791 | func TestKeyValueKeys(t *testing.T) { |
| 792 | s := RunBasicJetStreamServer() |
nothing calls this directly
no test coverage detected