From a4d8809ad66bb1a4b9db2b1349d4a5192161c041 Mon Sep 17 00:00:00 2001 From: Pierre Charton Date: Fri, 20 Dec 2024 12:33:00 +0100 Subject: [PATCH] UT on BackrollBackUpProvider --- .../backup/BackrollBackupProviderTest.java | 146 +++++++++++------- .../backup/backroll/BackrollClientTest.java | 2 +- 2 files changed, 92 insertions(+), 56 deletions(-) diff --git a/plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/BackrollBackupProviderTest.java b/plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/BackrollBackupProviderTest.java index 54c40ee4646..7e6177185d7 100644 --- a/plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/BackrollBackupProviderTest.java +++ b/plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/BackrollBackupProviderTest.java @@ -17,8 +17,10 @@ package org.apache.cloudstack.backup; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import java.io.IOException; import java.util.Arrays; @@ -33,6 +35,7 @@ import org.apache.cloudstack.backup.backroll.model.BackrollVmBackup; import org.apache.cloudstack.backup.backroll.model.BackrollBackupMetrics; import org.apache.cloudstack.backup.backroll.model.BackrollOffering; import org.apache.cloudstack.backup.backroll.model.response.TaskState; +import org.apache.cloudstack.backup.Backup.Metric; import org.apache.cloudstack.backup.dao.BackupDao; import org.apache.logging.log4j.Logger; import org.junit.Before; @@ -42,9 +45,14 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.Spy; +import com.cloud.utils.Pair; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.VMInstanceVO; import com.cloud.vm.dao.VMInstanceDao; +import com.cloud.vm.VirtualMachine; + + +import org.apache.cloudstack.framework.config.ConfigKey; public class BackrollBackupProviderTest { @Mock @@ -81,67 +89,72 @@ public class BackrollBackupProviderTest { } @Test - public void takeBackup_Test() { - // logger.info("Starting backup for VM ID {} on backroll provider", vm.getUuid()); - // final BackrollClient client = getClient(vm.getDataCenterId()); + public void takeBackup_Test() throws BackrollApiException, IOException { - // try { - // String urlToRequest = client.startBackupJob(vm.getUuid()); + VMInstanceVO vmInstanceVO = new VMInstanceVO(); + vmInstanceVO.setInstanceName("test"); + vmInstanceVO.setDataCenterId(2l); + vmInstanceVO.setUuid(UUID.randomUUID().toString()); + vmInstanceVO.setBackupOfferingId(2L); - // String backupJob = urlToRequest.replace("/status/", ""); - // if (!StringUtils.isEmpty(backupJob)) { - // BackupVO backup = new BackupVO(); - // backup.setVmId(vm.getId()); - // backup.setExternalId(backupJob); - // backup.setType("INCREMENTAL"); - // backup.setDate(new DateTime().toDate()); - // backup.setSize(0L); - // backup.setProtectedSize(0L); - // backup.setStatus(Backup.Status.BackingUp); - // backup.setBackupOfferingId(vm.getBackupOfferingId()); - // backup.setAccountId(vm.getAccountId()); - // backup.setDomainId(vm.getDomainId()); - // backup.setZoneId(vm.getDataCenterId()); - // Boolean result = backupDao.persist(backup) != null; - // client.triggerTaskStatus(urlToRequest); - // syncBackups(vm, null); - // return result; - // } - // } catch (ParseException | BackrollApiException | IOException e) { - // logger.debug(e.getMessage()); - // throw new CloudRuntimeException("Failed to take backup"); - // } - // return false; + Mockito.doReturn("/status/f32092e4-3e8a-461b-8733-ed93e23fa782").when(clientMock).startBackupJob(Mockito.anyString()); + Mockito.doReturn(new BackupVO()).when(backupDao).persist(Mockito.any(BackupVO.class)); + Mockito.doNothing().when(clientMock).triggerTaskStatus(Mockito.anyString()); + syncBackups_Test(); + Boolean result = backupProvider.takeBackup(vmInstanceVO); + assertTrue(result); } @Test - public void getBackupMetrics_Test() { - // final Map metrics = new HashMap<>(); - // if (CollectionUtils.isEmpty(vms)) { - // logger.warn("Unable to get VM Backup Metrics because the list of VMs is empty."); - // return metrics; - // } + public void restoreBackedUpVolume_Test() { + try{ + backupProvider.restoreBackedUpVolume(new BackupVO(), "dummyString", "dummyString", "dummyString", new Pair("dummyString", VirtualMachine.State.Shutdown)); + } catch (Exception e) { + assertEquals(CloudRuntimeException.class, e.getClass()); + String expected = String.format("Backroll plugin does not support this feature"); + assertEquals(expected , e.getMessage()); + } + } - // List vmUuids = vms.stream().filter(Objects::nonNull).map(VirtualMachine::getUuid).collect(Collectors.toList()); - // logger.debug("Get Backup Metrics for VMs: {}.", String.join(", ", vmUuids)); + @Test + public void getConfigKeys_Test() { + assertEquals(3, backupProvider.getConfigKeys().length); + } - // BackrollClient client = getClient(zoneId); - // for (final VirtualMachine vm : vms) { - // if (vm == null) { - // continue; - // } + @Test + public void getConfigComponentName_Test() { + assertEquals(BackupService.class.getSimpleName(), backupProvider.getConfigComponentName()); + } - // Metric metric; - // try { - // metric = client.getVirtualMachineMetrics(vm.getUuid()); - // } catch (BackrollApiException | IOException e) { - // throw new CloudRuntimeException("Failed to retrieve backup metrics"); - // } - // logger.debug("Metrics for VM [uuid: {}, name: {}] is [backup size: {}, data size: {}].", vm.getUuid(), - // vm.getInstanceName(), metric.getBackupSize(), metric.getDataSize()); - // metrics.put(vm, metric); - // } - // return metrics; + @Test + public void getBackupMetricsEmpty_Test() { + assertEquals(backupProvider.getBackupMetrics(2L, Arrays.asList()).size(), 0); + } + + @Test + public void getBackupMetrics_Test() throws BackrollApiException, IOException{ + VMInstanceVO vmInstanceVO = new VMInstanceVO(); + vmInstanceVO.setInstanceName("test"); + vmInstanceVO.setDataCenterId(1l); + vmInstanceVO.setBackupOfferingId(1l); + + VMInstanceVO vmInstanceVO2 = new VMInstanceVO(); + vmInstanceVO2.setInstanceName("test2"); + vmInstanceVO2.setDataCenterId(2l); + vmInstanceVO2.setBackupOfferingId(2l); + + + VMInstanceVO vmInstanceVO3 = new VMInstanceVO(); + vmInstanceVO3.setInstanceName("test3"); + vmInstanceVO3.setDataCenterId(3l); + vmInstanceVO3.setBackupOfferingId(3l); + + Metric metric = new Metric(2L, 3L); + + Mockito.doReturn(metric).when(clientMock).getVirtualMachineMetrics(Mockito.anyString()); + assertEquals(backupProvider.getBackupMetrics(2L, Arrays.asList(vmInstanceVO, vmInstanceVO2, vmInstanceVO3)).size(), 1); + + Mockito.verify(clientMock, times(3)).getVirtualMachineMetrics(Mockito.anyString()); } @Test @@ -178,6 +191,29 @@ public class BackrollBackupProviderTest { } } + @Test + public void getDescription_Test(){ + assertEquals("Backroll Backup Plugin", backupProvider.getDescription()); + } + + @Test + public void isValidProviderOffering_Test(){ + assertTrue(backupProvider.isValidProviderOffering(2L, "dummyString")); + } + + @Test + public void getName_Test(){ + assertEquals("backroll", backupProvider.getName()); + } + + @Test + public void assignVMToBackupOffering_Test() { + VMInstanceVO vmInstanceVO = new VMInstanceVO(); + BackrollOffering backrollOf = new BackrollOffering("dummyName", UUID.randomUUID().toString()); + assertTrue(backupProvider.assignVMToBackupOffering(vmInstanceVO, backrollOf)); + } + + @Test public void removeVMFromBackupOffering_Test(){ assertTrue(backupProvider.removeVMFromBackupOffering(new VMInstanceVO())); @@ -185,12 +221,12 @@ public class BackrollBackupProviderTest { @Test public void willDeleteBackupsOnOfferingRemoval_Test(){ - assertTrue(backupProvider.willDeleteBackupsOnOfferingRemoval()); + assertFalse(backupProvider.willDeleteBackupsOnOfferingRemoval()); } @Test - public void syncBackups_Test() throws BackrollApiException, IOException { + public void syncBackups_Test() throws BackrollApiException, IOException { VMInstanceVO vmInstanceVO = new VMInstanceVO(); vmInstanceVO.setInstanceName("test"); vmInstanceVO.setDataCenterId(2l); diff --git a/plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/backroll/BackrollClientTest.java b/plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/backroll/BackrollClientTest.java index 1ce259749d0..16e74832e2b 100644 --- a/plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/backroll/BackrollClientTest.java +++ b/plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/backroll/BackrollClientTest.java @@ -184,7 +184,7 @@ public class BackrollClientTest { String response = client.startBackupJob("dummyJobId"); - assertEquals("f32092e4-3e8a-461b-8733-ed93e23fa782", response); + assertEquals("/status/f32092e4-3e8a-461b-8733-ed93e23fa782", response); } @Test