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

Function TestObjectStoreMirror

jetstream/test/object_test.go:1234–1301  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1232}
1233
1234func TestObjectStoreMirror(t *testing.T) {
1235 s := RunBasicJetStreamServer()
1236 defer shutdownJSServerAndRemoveStorage(t, s)
1237
1238 nc, js := jsClient(t, s)
1239 defer nc.Close()
1240
1241 bucketName := "test-bucket"
1242
1243 ctx := context.Background()
1244 obs, err := js.CreateObjectStore(ctx, jetstream.ObjectStoreConfig{Bucket: bucketName, Description: "testing"})
1245 expectOk(t, err)
1246
1247 mirrorBucketName := "mirror-test-bucket"
1248
1249 _, err = js.CreateStream(ctx, jetstream.StreamConfig{
1250 Name: fmt.Sprintf("OBJ_%s", mirrorBucketName),
1251 Mirror: &jetstream.StreamSource{
1252 Name: fmt.Sprintf("OBJ_%s", bucketName),
1253 SubjectTransforms: []jetstream.SubjectTransformConfig{
1254 {
1255 Source: fmt.Sprintf("$O.%s.>", bucketName),
1256 Destination: fmt.Sprintf("$O.%s.>", mirrorBucketName),
1257 },
1258 },
1259 },
1260 AllowRollup: true, // meta messages are always rollups
1261 })
1262 if err != nil {
1263 t.Fatalf("Error creating object store bucket mirror: %v", err)
1264 }
1265
1266 _, err = obs.PutString(ctx, "A", "abc")
1267 expectOk(t, err)
1268
1269 mirrorObs, err := js.ObjectStore(ctx, mirrorBucketName)
1270 expectOk(t, err)
1271
1272 // Make sure we sync.
1273 checkFor(t, 2*time.Second, 15*time.Millisecond, func() error {
1274 mirrorValue, err := mirrorObs.GetString(ctx, "A")
1275 if err != nil {
1276 return err
1277 }
1278 if mirrorValue != "abc" {
1279 t.Fatalf("Expected mirrored object store value to be the same as original")
1280 }
1281 return nil
1282 })
1283
1284 watcher, err := mirrorObs.Watch(ctx)
1285 if err != nil {
1286 t.Fatalf("Error creating watcher: %v", err)
1287 }
1288 defer watcher.Stop()
1289
1290 // expect to get one value and nil
1291 for {

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
CreateStreamMethod · 0.65
PutStringMethod · 0.65
ObjectStoreMethod · 0.65
GetStringMethod · 0.65
WatchMethod · 0.65

Tested by

no test coverage detected