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

Function TestKeyValueBasics

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

Source from the content-addressed store, hash-verified

30)
31
32func TestKeyValueBasics(t *testing.T) {
33 s := RunBasicJetStreamServer()
34 defer shutdownJSServerAndRemoveStorage(t, s)
35
36 nc, js := jsClient(t, s)
37 defer nc.Close()
38 ctx := context.Background()
39
40 kv, err := js.CreateKeyValue(ctx, jetstream.KeyValueConfig{Bucket: "TEST", History: 5, TTL: time.Hour, Metadata: map[string]string{"foo": "bar"}, LimitMarkerTTL: time.Minute})
41 expectOk(t, err)
42
43 if kv.Bucket() != "TEST" {
44 t.Fatalf("Expected bucket name to be %q, got %q", "TEST", kv.Bucket())
45 }
46
47 // Simple Put
48 r, err := kv.Put(ctx, "name", []byte("derek"))
49 expectOk(t, err)
50 if r != 1 {
51 t.Fatalf("Expected 1 for the revision, got %d", r)
52 }
53
54 // put, invalid key
55 _, err = kv.Put(ctx, ".invalid", []byte("value"))
56 expectErr(t, err, jetstream.ErrInvalidKey)
57
58 // Simple Get
59 e, err := kv.Get(ctx, "name")
60 expectOk(t, err)
61 if string(e.Value()) != "derek" {
62 t.Fatalf("Got wrong value: %q vs %q", e.Value(), "derek")
63 }
64 if e.Revision() != 1 {
65 t.Fatalf("Expected 1 for the revision, got %d", e.Revision())
66 }
67
68 // get, invalid key
69 _, err = kv.Get(ctx, ".invalid")
70 expectErr(t, err, jetstream.ErrInvalidKey)
71
72 // Delete
73 err = kv.Delete(ctx, "name")
74 expectOk(t, err)
75 _, err = kv.Get(ctx, "name")
76 expectErr(t, err, jetstream.ErrKeyNotFound)
77 r, err = kv.Create(ctx, "name", []byte("derek"))
78 expectOk(t, err)
79 if r != 3 {
80 t.Fatalf("Expected 3 for the revision, got %d", r)
81 }
82 err = kv.Delete(ctx, "name", jetstream.LastRevision(4))
83 expectErr(t, err)
84 err = kv.Delete(ctx, "name", jetstream.LastRevision(3))
85 expectOk(t, err)
86
87 // delete, invalid key
88 err = kv.Delete(ctx, ".invalid")
89 expectErr(t, err, jetstream.ErrInvalidKey)

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
BucketMethod · 0.65
PutMethod · 0.65
GetMethod · 0.65
ValueMethod · 0.65

Tested by

no test coverage detected