MCPcopy
hub / github.com/etcd-io/bbolt / TestBucket_MoveBucket_DiffTx

Function TestBucket_MoveBucket_DiffTx

movebucket_test.go:267–340  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

265}
266
267func 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)

Callers

nothing calls this directly

Calls 9

MoveBucketMethod · 0.95
MustCreateDBWithOptionFunction · 0.92
prepareBucketsFunction · 0.85
RunMethod · 0.80
UpdateMethod · 0.80
BeginMethod · 0.80
ViewMethod · 0.80
RollbackMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected