import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.snapshots.SnapshotInfo;
import java.util.Arrays;
import java.util.List;
/**
-
SnapshotService單元測試類
*/
@Slf4j
public class SnapshotServiceImplTest {@InjectMocks
private SnapshotServiceImpl snapshotService;@Mock
private RestHighLevelClient restHighLevelClient;@Mock
private ElasticSearchService elasticSearchService;@Mock
private IndicesRestoreMapper indicesRestoreMapper;@Mock
private IndicesRestoreRecordMapper indicesRestoreRecordMapper;@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}/**
-
測試恢復快照索引方法
*/
@Test
public void testRestoreSnapshotIndices() {
// 準備測試資料
RestoreSnapshotIndicesRequest request = new RestoreSnapshotIndicesRequest();
ListsnapShotList = Arrays.asList(
new SnapShotDTO("repo1", "snap1", Arrays.asList("index1", "index2"), new Date())
);
request.setSnapShotList(snapShotList);// 執行測試
RestoreSnapshotIndicesResponse response = snapshotService.restoreSnapshotIndices(request);// 驗證結果
Assert.assertNotNull(response);
Assert.assertEquals(0, response.getSuccess());
}
/**
-
測試根據倉庫和快照名查詢索引方法
*/
@Test
public void testQueryIndicesByRepoAndSnapshot() {
// 準備測試資料
QueryIndicesByRepoAndSnapshotRequest request = new QueryIndicesByRepoAndSnapshotRequest();
request.setRepositoryName("repo1");
request.setSnapshotName("snap1");// 模擬依賴方法返回
ListmockIndices = Arrays.asList("index1", "index2");
SnapshotInfo mockInfo = mock(SnapshotInfo.class);
when(mockInfo.indices()).thenReturn(mockIndices);// 執行測試
QueryIndicesByRepoAndSnapshotResponse response =
snapshotService.queryIndicesByRepoAndSnapshot(request);// 驗證結果
Assert.assertNotNull(response);
Assert.assertEquals(mockIndices, response.getIndicesList());
}
/**
-
測試根據倉庫和快照名及索引名查詢方法
/
@Test
public void testQueryIndicesByRepoAndSnapshotWithIndices() {
// 準備測試資料
QueryIndicesByRepoAndSnapshotWithIndicesRequest request =
new QueryIndicesByRepoAndSnapshotWithIndicesRequest();
request.setRepositoryName("repo1");
request.setSnapshotName("snap1");
request.setIndicesNameList(Arrays.asList("index1", "index2*"));// 模擬依賴方法返回
ListmockIndices = Arrays.asList("index1-2021", "index2-2021");
SnapshotInfo mockInfo = mock(SnapshotInfo.class);
when(mockInfo.indices()).thenReturn(mockIndices);// 執行測試
QueryIndicesByRepoAndSnapshotWithIndicesResponse response =
snapshotService.queryIndicesByRepoAndSnapshotWithIndices(request);// 驗證結果
Assert.assertNotNull(response);
Assert.assertEquals(mockIndices, response.getIndicesList());
}
/**
-
測試查詢倉庫下所有快照方法
*/
@Test
public void testQuerySnapshotByRepo() {
// 準備測試資料
QuerySnapshotByRepoRequest request = new QuerySnapshotByRepoRequest();
request.setRepositoryName("repo1");// 模擬依賴方法返回
ListmockSnapshots = Arrays.asList("snap1", "snap2");
SnapshotInfo mockInfo = mock(SnapshotInfo.class);
when(mockInfo.snapshotId().getName()).thenReturn("snap1");
when(mockInfo.state()).thenReturn(SnapshotState.SUCCESS);// 執行測試
QuerySnapshotByRepoResponse response = snapshotService.querySnapshotByRepo(request);// 驗證結果
Assert.assertNotNull(response);
Assert.assertEquals(mockSnapshots, response.getSnapshotNameList());
}
-
}