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

Function TestKeyValueCreate

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

Source from the content-addressed store, hash-verified

1736}
1737
1738func TestKeyValueCreate(t *testing.T) {
1739 s := RunBasicJetStreamServer()
1740 defer shutdownJSServerAndRemoveStorage(t, s)
1741
1742 nc, js := jsClient(t, s)
1743 defer nc.Close()
1744 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
1745 defer cancel()
1746
1747 kv, err := js.CreateKeyValue(ctx, jetstream.KeyValueConfig{
1748 Bucket: "TEST",
1749 Description: "Test KV",
1750 MaxValueSize: 128,
1751 History: 10,
1752 TTL: 1 * time.Hour,
1753 MaxBytes: 1024,
1754 Storage: jetstream.FileStorage,
1755 })
1756 if err != nil {
1757 t.Fatalf("Error creating kv: %v", err)
1758 }
1759
1760 expectedStreamConfig := jetstream.StreamConfig{
1761 Name: "KV_TEST",
1762 Description: "Test KV",
1763 Subjects: []string{"$KV.TEST.>"},
1764 MaxMsgs: -1,
1765 MaxBytes: 1024,
1766 Discard: jetstream.DiscardNew,
1767 MaxAge: 1 * time.Hour,
1768 MaxMsgsPerSubject: 10,
1769 MaxMsgSize: 128,
1770 Storage: jetstream.FileStorage,
1771 DenyDelete: true,
1772 AllowRollup: true,
1773 AllowDirect: true,
1774 MaxConsumers: -1,
1775 Replicas: 1,
1776 Duplicates: 2 * time.Minute,
1777 }
1778
1779 stream, err := js.Stream(ctx, "KV_TEST")
1780 if err != nil {
1781 t.Fatalf("Error getting stream: %v", err)
1782 }
1783 // server will set metadata values, so we need to clear them
1784 stream.CachedInfo().Config.Metadata = nil
1785 if !reflect.DeepEqual(stream.CachedInfo().Config, expectedStreamConfig) {
1786 t.Fatalf("Expected stream config to be %+v, got %+v", expectedStreamConfig, stream.CachedInfo().Config)
1787 }
1788
1789 _, err = kv.Create(ctx, "key", []byte("1"))
1790 if err != nil {
1791 t.Fatalf("Error creating key: %v", err)
1792 }
1793
1794 _, err = kv.Create(ctx, "key", []byte("1"))
1795 expected := "wrong last sequence: 1: key exists"

Callers

nothing calls this directly

Calls 12

APIErrorMethod · 0.95
FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
CreateKeyValueMethod · 0.65
StreamMethod · 0.65
CachedInfoMethod · 0.65
CreateMethod · 0.65
ErrorMethod · 0.65
CloseMethod · 0.45
IsMethod · 0.45

Tested by

no test coverage detected