Skip to content

Commit 0ea2ce5

Browse files
committed
UT + correction bug
1 parent eb400da commit 0ea2ce5

File tree

5 files changed

+116
-26
lines changed

5 files changed

+116
-26
lines changed

build_backroll_plugin.sh

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
mvn install -f "/opt/cloudstack/plugins/backup/backroll/pom.xml" -DskipTests
2-
mvn install -f "/opt/cloudstack/plugins/pom.xml" -DskipTests
3-
mvn install -f "/opt/cloudstack/client/pom.xml" -DskipTests
4-
mvn -pl :cloud-client-ui jetty:run
1+
mvn install -f "/opt/cloudstack/plugins/backup/backroll/pom.xml" -DskipTests && mvn install -f "/opt/cloudstack/plugins/pom.xml" -DskipTests && mvn install -f "/opt/cloudstack/client/pom.xml" -DskipTests && mvn -pl :cloud-client-ui jetty:run

plugins/backup/backroll/src/main/java/org/apache/cloudstack/backup/BackrollBackupProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public boolean restoreVMFromBackup(VirtualMachine vm, Backup backup) {
146146
try {
147147
isSuccess = getClient(vm.getDataCenterId()).restoreVMFromBackup(vm.getUuid(), getBackupName(backup));
148148
} catch (ParseException | BackrollApiException | IOException e) {
149-
throw new CloudRuntimeException("Failed to restore VM from Backrup");
149+
throw new CloudRuntimeException("Failed to restore VM from Backup");
150150
}
151151
return isSuccess;
152152
}
@@ -198,7 +198,7 @@ public boolean takeBackup(VirtualMachine vm) {
198198

199199
try {
200200
String urlToRequest = client.startBackupJob(vm.getUuid());
201-
201+
logger.info("BackrollProvider: urlToRequest: " + urlToRequest);
202202
String backupJob = urlToRequest.replace("/status/", "");
203203
if (!StringUtils.isEmpty(backupJob)) {
204204
BackupVO backup = new BackupVO();

plugins/backup/backroll/src/main/java/org/apache/cloudstack/backup/backroll/BackrollClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ public BackrollClient(BackrollHttpClientProvider httpProvider)
6969
}
7070

7171
public String startBackupJob(final String jobId) throws IOException, BackrollApiException {
72-
logger.info("Trying to start backup for Backroll job: {}", jobId);
72+
logger.info("startBackupJob : Trying to start backup for Backroll job: {}", jobId);
7373
String backupJob = "";
7474
BackrollTaskRequestResponse requestResponse = httpProvider.post(String.format("/tasks/singlebackup/%s", jobId), null, BackrollTaskRequestResponse.class);
75-
logger.info("BackupJob status link: {}", requestResponse.location);
75+
logger.info("startBackupJob : BackupJob status link: {}", requestResponse.location);
7676
backupJob = requestResponse.location.replace("/api/v1", "");
7777
return StringUtils.isEmpty(backupJob) ? null : backupJob;
7878
}

plugins/backup/backroll/src/main/java/org/apache/cloudstack/backup/backroll/utils/BackrollHttpClientProvider.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,9 @@ public <T> T post(final String path, final JSONObject json, Class<T> classOfT) t
136136
logger.debug("Response received in POST request with body {} is: {} for URL {}.", xml, response.toString(), url);
137137

138138
String result = okBody(response);
139+
139140
T requestResponse = new ObjectMapper().readValue(result, classOfT);
140-
response.close();
141+
//response.close();
141142

142143
return requestResponse;
143144
} catch (ParseException | NotOkBodyException e) {
@@ -164,7 +165,7 @@ public <T> T get(String path, Class<T> classOfT) throws IOException, BackrollApi
164165

165166
String result = okBody(response);
166167
T requestResponse = new ObjectMapper().readValue(result, classOfT);
167-
response.close();
168+
//response.close();
168169

169170
return requestResponse;
170171
} catch (NotOkBodyException e) {
@@ -190,7 +191,7 @@ public String getWithoutParseResponse(String path) throws IOException, BackrollA
190191
logger.debug("Response received in GET request is: {} for URL: {}.", response.toString(), url);
191192

192193
String result = okBody(response);
193-
response.close();
194+
//response.close();
194195

195196
return result;
196197
} catch (NotOkBodyException e) {
@@ -215,7 +216,7 @@ public <T> T delete(String path, Class<T> classOfT) throws IOException, Backroll
215216

216217
String result = okBody(response);
217218
T requestResponse = new ObjectMapper().readValue(result, classOfT);
218-
response.close();
219+
//response.close();
219220

220221
return requestResponse;
221222
} catch (NotOkBodyException e) {
@@ -235,7 +236,9 @@ public String okBody(final CloseableHttpResponse response) throws NotOkBodyExcep
235236
case HttpStatus.SC_ACCEPTED:
236237
HttpEntity bodyEntity = response.getEntity();
237238
try {
239+
logger.debug("bodyentity : {}", bodyEntity);
238240
result = EntityUtils.toString(bodyEntity);
241+
logger.debug("bodyentity : result {}", result);
239242
EntityUtils.consumeQuietly(bodyEntity);
240243
return result;
241244
} catch (ParseException | IOException e) {
@@ -290,6 +293,7 @@ public String waitGetWithoutParseResponse(String url)
290293

291294
String body = getWithoutParseResponse(url);
292295
if (!body.contains(TaskState.PENDING)) {
296+
logger.debug("waitGetWithoutParseResponse : result {}", body);
293297
return body;
294298
}
295299

@@ -301,7 +305,6 @@ public String waitGetWithoutParseResponse(String url)
301305
throw new BackrollApiException();
302306
}
303307
}
304-
305308
return null;
306309
}
307310

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

Lines changed: 103 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,23 @@
1717
package org.apache.cloudstack.backup;
1818

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

2223
import java.io.IOException;
23-
import java.util.ArrayList;
2424
import java.util.Arrays;
2525
import java.util.Date;
2626
import java.util.List;
27-
import java.util.Map;
2827
import java.util.UUID;
2928

3029
import org.apache.cloudstack.backup.backroll.BackrollClient;
3130
import org.apache.cloudstack.backup.backroll.utils.BackrollApiException;
3231
import org.apache.cloudstack.backup.backroll.model.BackrollTaskStatus;
3332
import org.apache.cloudstack.backup.backroll.model.BackrollVmBackup;
3433
import org.apache.cloudstack.backup.backroll.model.BackrollBackupMetrics;
34+
import org.apache.cloudstack.backup.backroll.model.BackrollOffering;
3535
import org.apache.cloudstack.backup.backroll.model.response.TaskState;
3636
import org.apache.cloudstack.backup.dao.BackupDao;
37-
import org.apache.commons.lang3.StringUtils;
38-
import org.apache.http.ParseException;
3937
import org.apache.logging.log4j.Logger;
4038
import org.junit.Before;
4139
import org.junit.Test;
@@ -46,14 +44,8 @@
4644

4745
import com.cloud.utils.exception.CloudRuntimeException;
4846
import com.cloud.vm.VMInstanceVO;
49-
50-
import net.bytebuddy.agent.VirtualMachine;
5147
import com.cloud.vm.dao.VMInstanceDao;
5248

53-
import net.bytebuddy.agent.VirtualMachine;
54-
55-
import net.bytebuddy.agent.VirtualMachine;
56-
5749
public class BackrollBackupProviderTest {
5850
@Mock
5951
BackrollClient clientMock;
@@ -81,21 +73,119 @@ public void setUp() throws Exception {
8173
}
8274

8375
@Test
84-
public void listBackupOfferings_Test() {
85-
76+
public void listBackupOfferings_Test() throws BackrollApiException, IOException{
77+
Mockito.doReturn("dummyUrlToRequest").when(clientMock).getBackupOfferingUrl();
78+
Mockito.doReturn(Arrays.asList(new BackrollOffering("dummyName", "dummyId"))).when(clientMock).getBackupOfferings(Mockito.anyString());
79+
List<BackupOffering> results = backupProvider.listBackupOfferings(2L);
80+
assertTrue(results.size() == 1);
8681
}
8782

8883
@Test
8984
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;
90115
}
91116

92117
@Test
93118
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;
145+
}
146+
147+
@Test
148+
public void restoreVMFromBackupTrue_Test() throws BackrollApiException, IOException {
149+
VMInstanceVO vmInstanceVO = new VMInstanceVO();
150+
vmInstanceVO.setDataCenterId(2l);
151+
152+
BackupVO backupVo = new BackupVO();
153+
backupVo.setExternalId("abc,defgh");
154+
155+
Mockito.doReturn(true).when(clientMock).restoreVMFromBackup(Mockito.anyString(), Mockito.anyString());
156+
157+
Boolean result = backupProvider.restoreVMFromBackup(vmInstanceVO, backupVo);
158+
159+
assertTrue(result);
160+
}
161+
162+
@Test
163+
public void restoreVMFromBackupFalse_Test() throws BackrollApiException, IOException {
164+
VMInstanceVO vmInstanceVO = new VMInstanceVO();
165+
vmInstanceVO.setDataCenterId(2l);
166+
167+
BackupVO backupVo = new BackupVO();
168+
backupVo.setExternalId("abc,defgh");
169+
170+
Mockito.doReturn(false).when(clientMock).restoreVMFromBackup(Mockito.anyString(), Mockito.anyString());
171+
172+
try {
173+
backupProvider.restoreVMFromBackup(vmInstanceVO, backupVo);
174+
} catch (Exception e) {
175+
assertEquals(CloudRuntimeException.class, e.getClass());
176+
String expected = String.format("Failed to restore VM from Backup");
177+
assertEquals(expected , e.getMessage());
178+
}
94179
}
95180

96181
@Test
97-
public void restoreVMFromBackup_Test() {
182+
public void removeVMFromBackupOffering_Test(){
183+
assertTrue(backupProvider.removeVMFromBackupOffering(new VMInstanceVO()));
184+
}
98185

186+
@Test
187+
public void willDeleteBackupsOnOfferingRemoval_Test(){
188+
assertTrue(backupProvider.willDeleteBackupsOnOfferingRemoval());
99189
}
100190

101191

0 commit comments

Comments
 (0)