(t *testing.T)
| 96 | } |
| 97 | |
| 98 | func TestCompactJob_merge_compact_merge_fail(t *testing.T) { |
| 99 | ctrl := gomock.NewController(t) |
| 100 | defer ctrl.Finish() |
| 101 | |
| 102 | snapshot := version.NewMockSnapshot(ctrl) |
| 103 | reader := table.NewMockReader(ctrl) |
| 104 | gomock.InOrder( |
| 105 | reader.EXPECT().Iterator().Return(generateIterator(ctrl, map[uint32][]byte{ |
| 106 | 1: []byte("value1"), |
| 107 | })), |
| 108 | reader.EXPECT().Iterator().Return(generateIterator(ctrl, map[uint32][]byte{})), |
| 109 | ) |
| 110 | snapshot.EXPECT().GetReader(gomock.Any()).Return(reader, nil).MaxTimes(2) |
| 111 | merge := NewMockMerger(ctrl) |
| 112 | merge.EXPECT().Merge(gomock.Any(), gomock.Any()).Return(fmt.Errorf("err")) |
| 113 | family := generateMockFamily(ctrl, func(flusher Flusher) (Merger, error) { |
| 114 | return merge, nil |
| 115 | }) |
| 116 | |
| 117 | family.EXPECT().familyInfo().Return("family").AnyTimes() |
| 118 | f1 := version.NewFileMeta(1, 1, 10, 100) |
| 119 | f4 := version.NewFileMeta(4, 30, 100, 100) |
| 120 | compaction := version.NewCompaction(1, 0, []*version.FileMeta{f1}, []*version.FileMeta{f4}) |
| 121 | state := newCompactionState(1000, snapshot, compaction) |
| 122 | compactJob1 := newCompactJob(family, state, nil) |
| 123 | err := compactJob1.Run() |
| 124 | assert.Error(t, err) |
| 125 | |
| 126 | gomock.InOrder( |
| 127 | reader.EXPECT().Iterator().Return(generateIterator(ctrl, map[uint32][]byte{ |
| 128 | 1: []byte("value1"), |
| 129 | })), |
| 130 | reader.EXPECT().Iterator().Return(generateIterator(ctrl, map[uint32][]byte{2: []byte("value2")})), |
| 131 | ) |
| 132 | snapshot.EXPECT().GetReader(gomock.Any()).Return(reader, nil).MaxTimes(2) |
| 133 | merge.EXPECT().Merge(uint32(1), gomock.Any()).Return(fmt.Errorf("err")) |
| 134 | compactJob1 = newCompactJob(family, state, nil) |
| 135 | err = compactJob1.Run() |
| 136 | assert.Error(t, err) |
| 137 | |
| 138 | // create merger failure |
| 139 | compactJob1 = newCompactJob(family, state, nil) |
| 140 | compactJob2 := compactJob1.(*compactJob) |
| 141 | compactJob2.newMerger = func(flusher Flusher) (Merger, error) { |
| 142 | return nil, fmt.Errorf("err") |
| 143 | } |
| 144 | err = compactJob2.Run() |
| 145 | assert.Error(t, err) |
| 146 | } |
| 147 | |
| 148 | func TestCompactJob_merge_doMerge_fail(t *testing.T) { |
| 149 | ctrl := gomock.NewController(t) |
nothing calls this directly
no test coverage detected