Skip to content

Commit a4d8809

Browse files
committed
UT on BackrollBackUpProvider
1 parent 0ea2ce5 commit a4d8809

File tree

2 files changed

+97
-61
lines changed

2 files changed

+97
-61
lines changed

plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/BackrollBackupProviderTest.java

Lines changed: 96 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
package org.apache.cloudstack.backup;
1818

1919
import static org.junit.Assert.assertEquals;
20+
import static org.junit.Assert.assertFalse;
2021
import static org.junit.Assert.assertTrue;
2122
import static org.mockito.Mockito.mock;
23+
import static org.mockito.Mockito.times;
2224

2325
import java.io.IOException;
2426
import java.util.Arrays;
@@ -33,6 +35,7 @@
3335
import org.apache.cloudstack.backup.backroll.model.BackrollBackupMetrics;
3436
import org.apache.cloudstack.backup.backroll.model.BackrollOffering;
3537
import org.apache.cloudstack.backup.backroll.model.response.TaskState;
38+
import org.apache.cloudstack.backup.Backup.Metric;
3639
import org.apache.cloudstack.backup.dao.BackupDao;
3740
import org.apache.logging.log4j.Logger;
3841
import org.junit.Before;
@@ -42,9 +45,14 @@
4245
import org.mockito.Mockito;
4346
import org.mockito.Spy;
4447

48+
import com.cloud.utils.Pair;
4549
import com.cloud.utils.exception.CloudRuntimeException;
4650
import com.cloud.vm.VMInstanceVO;
4751
import com.cloud.vm.dao.VMInstanceDao;
52+
import com.cloud.vm.VirtualMachine;
53+
54+
55+
import org.apache.cloudstack.framework.config.ConfigKey;
4856

4957
public class BackrollBackupProviderTest {
5058
@Mock
@@ -81,67 +89,72 @@ public void listBackupOfferings_Test() throws BackrollApiException, IOException{
8189
}
8290

8391
@Test
84-
public void takeBackup_Test() {
85-
// logger.info("Starting backup for VM ID {} on backroll provider", vm.getUuid());
86-
// final BackrollClient client = getClient(vm.getDataCenterId());
87-
88-
// try {
89-
// String urlToRequest = client.startBackupJob(vm.getUuid());
90-
91-
// String backupJob = urlToRequest.replace("/status/", "");
92-
// if (!StringUtils.isEmpty(backupJob)) {
93-
// BackupVO backup = new BackupVO();
94-
// backup.setVmId(vm.getId());
95-
// backup.setExternalId(backupJob);
96-
// backup.setType("INCREMENTAL");
97-
// backup.setDate(new DateTime().toDate());
98-
// backup.setSize(0L);
99-
// backup.setProtectedSize(0L);
100-
// backup.setStatus(Backup.Status.BackingUp);
101-
// backup.setBackupOfferingId(vm.getBackupOfferingId());
102-
// backup.setAccountId(vm.getAccountId());
103-
// backup.setDomainId(vm.getDomainId());
104-
// backup.setZoneId(vm.getDataCenterId());
105-
// Boolean result = backupDao.persist(backup) != null;
106-
// client.triggerTaskStatus(urlToRequest);
107-
// syncBackups(vm, null);
108-
// return result;
109-
// }
110-
// } catch (ParseException | BackrollApiException | IOException e) {
111-
// logger.debug(e.getMessage());
112-
// throw new CloudRuntimeException("Failed to take backup");
113-
// }
114-
// return false;
92+
public void takeBackup_Test() throws BackrollApiException, IOException {
93+
94+
VMInstanceVO vmInstanceVO = new VMInstanceVO();
95+
vmInstanceVO.setInstanceName("test");
96+
vmInstanceVO.setDataCenterId(2l);
97+
vmInstanceVO.setUuid(UUID.randomUUID().toString());
98+
vmInstanceVO.setBackupOfferingId(2L);
99+
100+
Mockito.doReturn("/status/f32092e4-3e8a-461b-8733-ed93e23fa782").when(clientMock).startBackupJob(Mockito.anyString());
101+
Mockito.doReturn(new BackupVO()).when(backupDao).persist(Mockito.any(BackupVO.class));
102+
Mockito.doNothing().when(clientMock).triggerTaskStatus(Mockito.anyString());
103+
syncBackups_Test();
104+
Boolean result = backupProvider.takeBackup(vmInstanceVO);
105+
assertTrue(result);
106+
}
107+
108+
@Test
109+
public void restoreBackedUpVolume_Test() {
110+
try{
111+
backupProvider.restoreBackedUpVolume(new BackupVO(), "dummyString", "dummyString", "dummyString", new Pair<String,VirtualMachine.State>("dummyString", VirtualMachine.State.Shutdown));
112+
} catch (Exception e) {
113+
assertEquals(CloudRuntimeException.class, e.getClass());
114+
String expected = String.format("Backroll plugin does not support this feature");
115+
assertEquals(expected , e.getMessage());
116+
}
117+
}
118+
119+
@Test
120+
public void getConfigKeys_Test() {
121+
assertEquals(3, backupProvider.getConfigKeys().length);
122+
}
123+
124+
@Test
125+
public void getConfigComponentName_Test() {
126+
assertEquals(BackupService.class.getSimpleName(), backupProvider.getConfigComponentName());
127+
}
128+
129+
@Test
130+
public void getBackupMetricsEmpty_Test() {
131+
assertEquals(backupProvider.getBackupMetrics(2L, Arrays.asList()).size(), 0);
115132
}
116133

117134
@Test
118-
public void getBackupMetrics_Test() {
119-
// final Map<VirtualMachine, Backup.Metric> metrics = new HashMap<>();
120-
// if (CollectionUtils.isEmpty(vms)) {
121-
// logger.warn("Unable to get VM Backup Metrics because the list of VMs is empty.");
122-
// return metrics;
123-
// }
124-
125-
// List<String> vmUuids = vms.stream().filter(Objects::nonNull).map(VirtualMachine::getUuid).collect(Collectors.toList());
126-
// logger.debug("Get Backup Metrics for VMs: {}.", String.join(", ", vmUuids));
127-
128-
// BackrollClient client = getClient(zoneId);
129-
// for (final VirtualMachine vm : vms) {
130-
// if (vm == null) {
131-
// continue;
132-
// }
133-
134-
// Metric metric;
135-
// try {
136-
// metric = client.getVirtualMachineMetrics(vm.getUuid());
137-
// } catch (BackrollApiException | IOException e) {
138-
// throw new CloudRuntimeException("Failed to retrieve backup metrics");
139-
// }
140-
// logger.debug("Metrics for VM [uuid: {}, name: {}] is [backup size: {}, data size: {}].", vm.getUuid(),
141-
// vm.getInstanceName(), metric.getBackupSize(), metric.getDataSize());
142-
// metrics.put(vm, metric);
143-
// }
144-
// return metrics;
135+
public void getBackupMetrics_Test() throws BackrollApiException, IOException{
136+
VMInstanceVO vmInstanceVO = new VMInstanceVO();
137+
vmInstanceVO.setInstanceName("test");
138+
vmInstanceVO.setDataCenterId(1l);
139+
vmInstanceVO.setBackupOfferingId(1l);
140+
141+
VMInstanceVO vmInstanceVO2 = new VMInstanceVO();
142+
vmInstanceVO2.setInstanceName("test2");
143+
vmInstanceVO2.setDataCenterId(2l);
144+
vmInstanceVO2.setBackupOfferingId(2l);
145+
146+
147+
VMInstanceVO vmInstanceVO3 = new VMInstanceVO();
148+
vmInstanceVO3.setInstanceName("test3");
149+
vmInstanceVO3.setDataCenterId(3l);
150+
vmInstanceVO3.setBackupOfferingId(3l);
151+
152+
Metric metric = new Metric(2L, 3L);
153+
154+
Mockito.doReturn(metric).when(clientMock).getVirtualMachineMetrics(Mockito.anyString());
155+
assertEquals(backupProvider.getBackupMetrics(2L, Arrays.asList(vmInstanceVO, vmInstanceVO2, vmInstanceVO3)).size(), 1);
156+
157+
Mockito.verify(clientMock, times(3)).getVirtualMachineMetrics(Mockito.anyString());
145158
}
146159

147160
@Test
@@ -178,19 +191,42 @@ public void restoreVMFromBackupFalse_Test() throws BackrollApiException, IOExcep
178191
}
179192
}
180193

194+
@Test
195+
public void getDescription_Test(){
196+
assertEquals("Backroll Backup Plugin", backupProvider.getDescription());
197+
}
198+
199+
@Test
200+
public void isValidProviderOffering_Test(){
201+
assertTrue(backupProvider.isValidProviderOffering(2L, "dummyString"));
202+
}
203+
204+
@Test
205+
public void getName_Test(){
206+
assertEquals("backroll", backupProvider.getName());
207+
}
208+
209+
@Test
210+
public void assignVMToBackupOffering_Test() {
211+
VMInstanceVO vmInstanceVO = new VMInstanceVO();
212+
BackrollOffering backrollOf = new BackrollOffering("dummyName", UUID.randomUUID().toString());
213+
assertTrue(backupProvider.assignVMToBackupOffering(vmInstanceVO, backrollOf));
214+
}
215+
216+
181217
@Test
182218
public void removeVMFromBackupOffering_Test(){
183219
assertTrue(backupProvider.removeVMFromBackupOffering(new VMInstanceVO()));
184220
}
185221

186222
@Test
187223
public void willDeleteBackupsOnOfferingRemoval_Test(){
188-
assertTrue(backupProvider.willDeleteBackupsOnOfferingRemoval());
224+
assertFalse(backupProvider.willDeleteBackupsOnOfferingRemoval());
189225
}
190226

191227

192228
@Test
193-
public void syncBackups_Test() throws BackrollApiException, IOException {
229+
public void syncBackups_Test() throws BackrollApiException, IOException {
194230
VMInstanceVO vmInstanceVO = new VMInstanceVO();
195231
vmInstanceVO.setInstanceName("test");
196232
vmInstanceVO.setDataCenterId(2l);

plugins/backup/backroll/src/test/java/org/apache/cloudstack/backup/backroll/BackrollClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public void startBackupJob_Test() throws IOException, BackrollApiException {
184184

185185
String response = client.startBackupJob("dummyJobId");
186186

187-
assertEquals("f32092e4-3e8a-461b-8733-ed93e23fa782", response);
187+
assertEquals("/status/f32092e4-3e8a-461b-8733-ed93e23fa782", response);
188188
}
189189

190190
@Test

0 commit comments

Comments
 (0)