MCPcopy
hub / github.com/cubefs/cubefs / TestMigrateGenTasklets

Function TestMigrateGenTasklets

blobstore/blobnode/task_runner_migrate_test.go:30–162  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

28)
29
30func TestMigrateGenTasklets(t *testing.T) {
31 mode := codemode.EC6P10L2
32 replicas := genMockVol(100, codemode.CodeMode(mode))
33 badi := 10
34 godi := 11
35 balanceTask := &proto.MigrateTask{
36 TaskID: "mock_balance_task_id",
37 TaskType: proto.TaskTypeBalance,
38 CodeMode: codemode.CodeMode(mode),
39 Sources: replicas,
40 Destination: replicas[badi],
41 SourceVuid: replicas[badi].Vuid,
42 }
43 bids := []proto.BlobID{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
44 sizes := []int64{1024, 2048, 0, 512, 23, 65, 12, 50, 100, 2047}
45 markDeleteBidIndex := 9
46 bidsMap := make(map[proto.BlobID]int64, len(bids))
47 for idx := range bids {
48 bidsMap[bids[idx]] = sizes[idx]
49 }
50
51 workutils.TaskBufPool = workutils.NewBufPool(&workutils.BufConfig{
52 MigrateBufSize: 2 * 1024,
53 MigrateBufCapacity: 10,
54 RepairBufSize: 1,
55 RepairBufCapacity: 1,
56 })
57 getter := NewMockGetterWithBids(replicas, codemode.CodeMode(mode), bids, sizes)
58 w := NewMigrateWorker(MigrateTaskEx{taskInfo: balanceTask, blobNodeCli: getter, downloadShardConcurrency: 1})
59
60 tasklets, _ := w.GenTasklets(context.Background())
61 require.Equal(t, 0, len(tasklets))
62
63 getter.setFail(replicas[badi].Vuid, errors.New("fake error"))
64 _, err := w.GenTasklets(context.Background())
65 require.Equal(t, DstErr, err.errType)
66
67 {
68 getter.setWell(replicas[badi].Vuid)
69 shards, _ := getter.ListShards(context.Background(), replicas[badi])
70 for _, shard := range shards {
71 getter.Delete(context.Background(), balanceTask.SourceVuid, shard.Bid)
72 }
73 tasklets, _ = w.GenTasklets(context.Background())
74 require.Equal(t, 4, len(tasklets))
75 var bids []*ShardInfoSimple
76 for _, tasklet := range tasklets {
77 var size int64 = 0
78 for _, bid := range tasklet.bids {
79 size += bid.Size
80 }
81 bids = append(bids, tasklet.bids...)
82 require.LessOrEqual(t, size, int64(workutils.TaskBufPool.GetMigrateBufSize()))
83 }
84
85 for _, bid := range bids {
86 require.Equal(t, bidsMap[bid.Bid], bid.Size)
87 }

Callers

nothing calls this directly

Calls 15

GenTaskletsMethod · 0.95
CodeModeTypeAlias · 0.92
NewBufPoolFunction · 0.92
NewFunction · 0.92
genMockVolFunction · 0.85
NewMockGetterWithBidsFunction · 0.85
NewMigrateWorkerFunction · 0.85
setFailMethod · 0.80
setWellMethod · 0.80
GetMigrateBufSizeMethod · 0.80
GlobalStripeMethod · 0.80
TMethod · 0.80

Tested by

no test coverage detected