(t *testing.T)
| 265 | } |
| 266 | |
| 267 | func TestBucket_MoveBucket_DiffTx(t *testing.T) { |
| 268 | testCases := []struct { |
| 269 | name string |
| 270 | srcBucketPath []string |
| 271 | dstBucketPath []string |
| 272 | isSrcReadonlyTx bool |
| 273 | isDstReadonlyTx bool |
| 274 | bucketToMove string |
| 275 | expectedErr error |
| 276 | }{ |
| 277 | { |
| 278 | name: "src is RWTx and target is RTx", |
| 279 | srcBucketPath: []string{"sb1", "sb2"}, |
| 280 | dstBucketPath: []string{"db1", "db2"}, |
| 281 | isSrcReadonlyTx: true, |
| 282 | isDstReadonlyTx: false, |
| 283 | bucketToMove: "bucketToMove", |
| 284 | expectedErr: errors.ErrTxNotWritable, |
| 285 | }, |
| 286 | { |
| 287 | name: "src is RTx and target is RWTx", |
| 288 | srcBucketPath: []string{"sb1", "sb2"}, |
| 289 | dstBucketPath: []string{"db1", "db2"}, |
| 290 | isSrcReadonlyTx: false, |
| 291 | isDstReadonlyTx: true, |
| 292 | bucketToMove: "bucketToMove", |
| 293 | expectedErr: errors.ErrTxNotWritable, |
| 294 | }, |
| 295 | } |
| 296 | |
| 297 | for _, tc := range testCases { |
| 298 | t.Run(tc.name, func(t *testing.T) { |
| 299 | var srcBucket *bbolt.Bucket |
| 300 | var dstBucket *bbolt.Bucket |
| 301 | |
| 302 | t.Log("Creating source and target buckets and populate some data") |
| 303 | db := btesting.MustCreateDBWithOption(t, &bbolt.Options{PageSize: 4096}) |
| 304 | err := db.Update(func(tx *bbolt.Tx) error { |
| 305 | srcBucket = prepareBuckets(t, tx, tc.srcBucketPath...) |
| 306 | dstBucket = prepareBuckets(t, tx, tc.dstBucketPath...) |
| 307 | return nil |
| 308 | }) |
| 309 | require.NoError(t, err) |
| 310 | defer func() { |
| 311 | require.NoError(t, db.Close()) |
| 312 | }() |
| 313 | |
| 314 | t.Log("Opening source bucket in a separate Tx") |
| 315 | sTx, sErr := db.Begin(tc.isSrcReadonlyTx) |
| 316 | require.NoError(t, sErr) |
| 317 | defer func() { |
| 318 | require.NoError(t, sTx.Rollback()) |
| 319 | }() |
| 320 | srcBucket = prepareBuckets(t, sTx, tc.srcBucketPath...) |
| 321 | |
| 322 | t.Log("Opening target bucket in a separate Tx") |
| 323 | dTx, dErr := db.Begin(tc.isDstReadonlyTx) |
| 324 | require.NoError(t, dErr) |
nothing calls this directly
no test coverage detected