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

Function TestObjectStoreMirror

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

Source from the content-addressed store, hash-verified

1147}
1148
1149func TestObjectStoreMirror(t *testing.T) {
1150 s := RunBasicJetStreamServer()
1151 defer shutdownJSServerAndRemoveStorage(t, s)
1152
1153 nc, js := jsClient(t, s)
1154 defer nc.Close()
1155
1156 bucketName := "test-bucket"
1157
1158 obs, err := js.CreateObjectStore(&nats.ObjectStoreConfig{Bucket: bucketName, Description: "testing"})
1159 expectOk(t, err)
1160
1161 mirrorBucketName := "mirror-test-bucket"
1162
1163 _, err = js.AddStream(&nats.StreamConfig{
1164 Name: fmt.Sprintf("OBJ_%s", mirrorBucketName),
1165 Mirror: &nats.StreamSource{
1166 Name: fmt.Sprintf("OBJ_%s", bucketName),
1167 SubjectTransforms: []nats.SubjectTransformConfig{
1168 {
1169 Source: fmt.Sprintf("$O.%s.>", bucketName),
1170 Destination: fmt.Sprintf("$O.%s.>", mirrorBucketName),
1171 },
1172 },
1173 },
1174 AllowRollup: true, // meta messages are always rollups
1175 })
1176 if err != nil {
1177 t.Fatalf("Error creating object store bucket mirror: %v", err)
1178 }
1179
1180 _, err = obs.PutString("A", "abc")
1181 expectOk(t, err)
1182
1183 mirrorObs, err := js.ObjectStore(mirrorBucketName)
1184 expectOk(t, err)
1185
1186 // Make sure we sync.
1187 checkFor(t, 2*time.Second, 15*time.Millisecond, func() error {
1188 mirrorValue, err := mirrorObs.GetString("A")
1189 if err != nil {
1190 return err
1191 }
1192 if mirrorValue != "abc" {
1193 t.Fatalf("Expected mirrored object store value to be the same as original")
1194 }
1195 return nil
1196 })
1197
1198 watcher, err := mirrorObs.Watch()
1199 if err != nil {
1200 t.Fatalf("Error creating watcher: %v", err)
1201 }
1202 defer watcher.Stop()
1203
1204 // expect to get one value and nil
1205 for {
1206 select {

Callers

nothing calls this directly

Calls 15

FatalfMethod · 0.80
RunBasicJetStreamServerFunction · 0.70
jsClientFunction · 0.70
expectOkFunction · 0.70
checkForFunction · 0.70
CreateObjectStoreMethod · 0.65
AddStreamMethod · 0.65
PutStringMethod · 0.65
ObjectStoreMethod · 0.65
GetStringMethod · 0.65
WatchMethod · 0.65

Tested by

no test coverage detected