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

Function TestObjectBasics

test/object_test.go:33–135  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

31)
32
33func TestObjectBasics(t *testing.T) {
34 s := RunBasicJetStreamServer()
35 defer shutdownJSServerAndRemoveStorage(t, s)
36
37 nc, js := jsClient(t, s)
38 defer nc.Close()
39
40 _, err := js.CreateObjectStore(nil)
41 expectErr(t, err, nats.ErrObjectConfigRequired)
42
43 _, err = js.CreateObjectStore(&nats.ObjectStoreConfig{Bucket: "notok!", Description: "testing"})
44 expectErr(t, err, nats.ErrInvalidStoreName)
45
46 obs, err := js.CreateObjectStore(&nats.ObjectStoreConfig{Bucket: "OBJS", Description: "testing"})
47 expectOk(t, err)
48
49 // Create ~16MB object.
50 blob := make([]byte, 16*1024*1024+22)
51 rand.Read(blob)
52
53 now := time.Now().UTC().Round(time.Second)
54 _, err = obs.PutBytes("BLOB", blob)
55 expectOk(t, err)
56
57 // Test info
58 info, err := obs.GetInfo("BLOB")
59 expectOk(t, err)
60 if len(info.NUID) == 0 {
61 t.Fatalf("Expected object to have a NUID")
62 }
63 if info.ModTime.IsZero() {
64 t.Fatalf("Expected object to have a non-zero ModTime")
65 }
66 if mt := info.ModTime.Round(time.Second); mt.Sub(now) != 0 && mt.Sub(now) != time.Second {
67 t.Fatalf("Expected ModTime to be about %v, got %v", now, mt)
68 }
69
70 // Make sure the stream is sealed.
71 err = obs.Seal()
72 expectOk(t, err)
73 si, err := js.StreamInfo("OBJ_OBJS")
74 expectOk(t, err)
75 if !si.Config.Sealed {
76 t.Fatalf("Expected the object stream to be sealed, got %+v", si)
77 }
78
79 status, err := obs.Status()
80 expectOk(t, err)
81 if !status.Sealed() {
82 t.Fatalf("expected sealed status")
83 }
84 if status.Size() == 0 {
85 t.Fatalf("size is 0")
86 }
87 if status.Storage() != nats.FileStorage {
88 t.Fatalf("status reports %d storage", status.Storage())
89 }
90 if status.Description() != "testing" {

Callers

nothing calls this directly

Calls 15

FatalfMethod · 0.80
EqualMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
expectErrFunction · 0.70
expectOkFunction · 0.70
CreateObjectStoreMethod · 0.65
PutBytesMethod · 0.65
GetInfoMethod · 0.65
SealMethod · 0.65
StreamInfoMethod · 0.65

Tested by

no test coverage detected