(t *testing.T)
| 1147 | } |
| 1148 | |
| 1149 | func 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 { |
nothing calls this directly
no test coverage detected