mirror of https://github.com/apache/cloudstack.git
add unit tests
This commit is contained in:
parent
cdd125052d
commit
786372fa96
|
|
@ -115,7 +115,7 @@ public class CloneBackupOfferingCmd extends BaseAsyncCmd {
|
|||
try {
|
||||
BackupOffering policy = backupManager.cloneBackupOffering(this);
|
||||
if (policy == null) {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to clone a backup offering");
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to clone backup offering");
|
||||
}
|
||||
BackupOfferingResponse response = _responseGenerator.createBackupOfferingResponse(policy);
|
||||
response.setResponseName(getCommandName());
|
||||
|
|
|
|||
|
|
@ -59,13 +59,19 @@ public class CloneServiceOfferingCmd extends CreateServiceOfferingCmd {
|
|||
|
||||
@Override
|
||||
public void execute() {
|
||||
ServiceOffering result = _configService.cloneServiceOffering(this);
|
||||
if (result != null) {
|
||||
ServiceOfferingResponse response = _responseGenerator.createServiceOfferingResponse(result);
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to clone service offering");
|
||||
try {
|
||||
ServiceOffering result = _configService.cloneServiceOffering(this);
|
||||
if (result != null) {
|
||||
ServiceOfferingResponse response = _responseGenerator.createServiceOfferingResponse(result);
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to clone service offering");
|
||||
}
|
||||
} catch (com.cloud.exception.InvalidParameterValueException e) {
|
||||
throw new ServerApiException(ApiErrorCode.PARAM_ERROR, e.getMessage());
|
||||
} catch (com.cloud.utils.exception.CloudRuntimeException e) {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,303 @@
|
|||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
package org.apache.cloudstack.api.command.admin.backup;
|
||||
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import org.apache.cloudstack.api.ApiErrorCode;
|
||||
import org.apache.cloudstack.api.ResponseGenerator;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.api.response.BackupOfferingResponse;
|
||||
import org.apache.cloudstack.backup.BackupManager;
|
||||
import org.apache.cloudstack.backup.BackupOffering;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class CloneBackupOfferingCmdTest {
|
||||
|
||||
private CloneBackupOfferingCmd cloneBackupOfferingCmd;
|
||||
|
||||
@Mock
|
||||
private BackupManager backupManager;
|
||||
|
||||
@Mock
|
||||
private ResponseGenerator responseGenerator;
|
||||
|
||||
@Mock
|
||||
private BackupOffering mockBackupOffering;
|
||||
|
||||
@Mock
|
||||
private BackupOfferingResponse mockBackupOfferingResponse;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
cloneBackupOfferingCmd = new CloneBackupOfferingCmd();
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "backupManager", backupManager);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "_responseGenerator", responseGenerator);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSourceOfferingId() {
|
||||
Long sourceOfferingId = 999L;
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
assertEquals(sourceOfferingId, cloneBackupOfferingCmd.getSourceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetName() {
|
||||
String name = "ClonedBackupOffering";
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", name);
|
||||
assertEquals(name, cloneBackupOfferingCmd.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDescription() {
|
||||
String description = "Cloned Backup Offering Description";
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "description", description);
|
||||
assertEquals(description, cloneBackupOfferingCmd.getDescription());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetZoneId() {
|
||||
Long zoneId = 123L;
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "zoneId", zoneId);
|
||||
assertEquals(zoneId, cloneBackupOfferingCmd.getZoneId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetExternalId() {
|
||||
String externalId = "external-backup-123";
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "externalId", externalId);
|
||||
assertEquals(externalId, cloneBackupOfferingCmd.getExternalId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAllowUserDrivenBackups() {
|
||||
Boolean allowUserDrivenBackups = true;
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "userDrivenBackups", allowUserDrivenBackups);
|
||||
assertEquals(allowUserDrivenBackups, cloneBackupOfferingCmd.getUserDrivenBackups());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllowUserDrivenBackupsDefaultTrue() {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "userDrivenBackups", null);
|
||||
Boolean result = cloneBackupOfferingCmd.getUserDrivenBackups();
|
||||
assertTrue(result == null || result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAllowUserDrivenBackupsFalse() {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "userDrivenBackups", false);
|
||||
assertEquals(Boolean.FALSE, cloneBackupOfferingCmd.getUserDrivenBackups());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteSuccess() throws Exception {
|
||||
Long sourceOfferingId = 999L;
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", "ClonedBackupOffering");
|
||||
|
||||
when(backupManager.cloneBackupOffering(any(CloneBackupOfferingCmd.class))).thenReturn(mockBackupOffering);
|
||||
when(responseGenerator.createBackupOfferingResponse(mockBackupOffering)).thenReturn(mockBackupOfferingResponse);
|
||||
|
||||
cloneBackupOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneBackupOfferingCmd.getResponseObject());
|
||||
assertEquals(mockBackupOfferingResponse, cloneBackupOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteFailure() throws Exception {
|
||||
Long sourceOfferingId = 999L;
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(backupManager.cloneBackupOffering(any(CloneBackupOfferingCmd.class))).thenReturn(null);
|
||||
|
||||
try {
|
||||
cloneBackupOfferingCmd.execute();
|
||||
fail("Expected ServerApiException to be thrown");
|
||||
} catch (ServerApiException e) {
|
||||
assertEquals(ApiErrorCode.INTERNAL_ERROR, e.getErrorCode());
|
||||
assertEquals("Failed to clone backup offering", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithInvalidParameterException() throws Exception {
|
||||
Long sourceOfferingId = 999L;
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(backupManager.cloneBackupOffering(any(CloneBackupOfferingCmd.class)))
|
||||
.thenThrow(new InvalidParameterValueException("Invalid source offering ID"));
|
||||
|
||||
try {
|
||||
cloneBackupOfferingCmd.execute();
|
||||
fail("Expected ServerApiException to be thrown");
|
||||
} catch (ServerApiException e) {
|
||||
assertEquals(ApiErrorCode.PARAM_ERROR, e.getErrorCode());
|
||||
assertEquals("Invalid source offering ID", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithCloudRuntimeException() throws Exception {
|
||||
Long sourceOfferingId = 999L;
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(backupManager.cloneBackupOffering(any(CloneBackupOfferingCmd.class)))
|
||||
.thenThrow(new CloudRuntimeException("Runtime error during clone"));
|
||||
|
||||
try {
|
||||
cloneBackupOfferingCmd.execute();
|
||||
fail("Expected ServerApiException to be thrown");
|
||||
} catch (ServerApiException e) {
|
||||
assertEquals(ApiErrorCode.INTERNAL_ERROR, e.getErrorCode());
|
||||
assertEquals("Runtime error during clone", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteSuccessWithAllParameters() throws Exception {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", 999L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", "ClonedBackupOffering");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "description", "Test Description");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "zoneId", 123L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "externalId", "ext-123");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "userDrivenBackups", true);
|
||||
|
||||
when(backupManager.cloneBackupOffering(any(CloneBackupOfferingCmd.class))).thenReturn(mockBackupOffering);
|
||||
when(responseGenerator.createBackupOfferingResponse(mockBackupOffering)).thenReturn(mockBackupOfferingResponse);
|
||||
|
||||
cloneBackupOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneBackupOfferingCmd.getResponseObject());
|
||||
assertEquals(mockBackupOfferingResponse, cloneBackupOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneWithAllParameters() {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", 999L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", "ClonedBackupOffering");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "description", "Cloned backup offering for testing");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "zoneId", 123L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "externalId", "external-backup-123");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "userDrivenBackups", true);
|
||||
|
||||
assertEquals(Long.valueOf(999L), cloneBackupOfferingCmd.getSourceOfferingId());
|
||||
assertEquals("ClonedBackupOffering", cloneBackupOfferingCmd.getName());
|
||||
assertEquals("Cloned backup offering for testing", cloneBackupOfferingCmd.getDescription());
|
||||
assertEquals(Long.valueOf(123L), cloneBackupOfferingCmd.getZoneId());
|
||||
assertEquals("external-backup-123", cloneBackupOfferingCmd.getExternalId());
|
||||
assertEquals(Boolean.TRUE, cloneBackupOfferingCmd.getUserDrivenBackups());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneWithMinimalParameters() {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", 999L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", "ClonedBackupOffering");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "description", "Description");
|
||||
|
||||
assertEquals(Long.valueOf(999L), cloneBackupOfferingCmd.getSourceOfferingId());
|
||||
assertEquals("ClonedBackupOffering", cloneBackupOfferingCmd.getName());
|
||||
assertEquals("Description", cloneBackupOfferingCmd.getDescription());
|
||||
|
||||
assertNull(cloneBackupOfferingCmd.getZoneId());
|
||||
assertNull(cloneBackupOfferingCmd.getExternalId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSourceOfferingIdNullByDefault() {
|
||||
assertNull(cloneBackupOfferingCmd.getSourceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNameNullByDefault() {
|
||||
assertNull(cloneBackupOfferingCmd.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDescriptionNullByDefault() {
|
||||
assertNull(cloneBackupOfferingCmd.getDescription());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testZoneIdNullByDefault() {
|
||||
assertNull(cloneBackupOfferingCmd.getZoneId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExternalIdNullByDefault() {
|
||||
assertNull(cloneBackupOfferingCmd.getExternalId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneBackupOfferingInheritingZone() {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", 999L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", "ClonedBackupOffering");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "description", "Clone with inherited zone");
|
||||
|
||||
assertEquals(Long.valueOf(999L), cloneBackupOfferingCmd.getSourceOfferingId());
|
||||
assertNull(cloneBackupOfferingCmd.getZoneId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneBackupOfferingInheritingExternalId() {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", 999L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", "ClonedBackupOffering");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "description", "Clone with inherited external ID");
|
||||
|
||||
assertEquals(Long.valueOf(999L), cloneBackupOfferingCmd.getSourceOfferingId());
|
||||
assertNull(cloneBackupOfferingCmd.getExternalId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneBackupOfferingOverridingZone() {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", 999L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", "ClonedBackupOffering");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "description", "Clone with new zone");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "zoneId", 456L);
|
||||
|
||||
assertEquals(Long.valueOf(999L), cloneBackupOfferingCmd.getSourceOfferingId());
|
||||
assertEquals(Long.valueOf(456L), cloneBackupOfferingCmd.getZoneId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneBackupOfferingDisallowUserDrivenBackups() {
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "sourceOfferingId", 999L);
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "name", "ClonedBackupOffering");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "description", "Clone without user-driven backups");
|
||||
ReflectionTestUtils.setField(cloneBackupOfferingCmd, "userDrivenBackups", false);
|
||||
|
||||
assertEquals(Boolean.FALSE, cloneBackupOfferingCmd.getUserDrivenBackups());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,325 @@
|
|||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
package org.apache.cloudstack.api.command.admin.network;
|
||||
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import org.apache.cloudstack.api.ApiErrorCode;
|
||||
import org.apache.cloudstack.api.ResponseGenerator;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.api.response.NetworkOfferingResponse;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class CloneNetworkOfferingCmdTest {
|
||||
|
||||
private CloneNetworkOfferingCmd cloneNetworkOfferingCmd;
|
||||
|
||||
@Mock
|
||||
private com.cloud.configuration.ConfigurationService configService;
|
||||
|
||||
@Mock
|
||||
private ResponseGenerator responseGenerator;
|
||||
|
||||
@Mock
|
||||
private NetworkOffering mockNetworkOffering;
|
||||
|
||||
@Mock
|
||||
private NetworkOfferingResponse mockNetworkOfferingResponse;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
cloneNetworkOfferingCmd = new CloneNetworkOfferingCmd();
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "_configService", configService);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "_responseGenerator", responseGenerator);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSourceOfferingId() {
|
||||
Long sourceOfferingId = 123L;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
assertEquals(sourceOfferingId, cloneNetworkOfferingCmd.getSourceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAddServices() {
|
||||
List<String> addServices = Arrays.asList("Dhcp", "Dns");
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "addServices", addServices);
|
||||
assertEquals(addServices, cloneNetworkOfferingCmd.getAddServices());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDropServices() {
|
||||
List<String> dropServices = Arrays.asList("Firewall", "Vpn");
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "dropServices", dropServices);
|
||||
assertEquals(dropServices, cloneNetworkOfferingCmd.getDropServices());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetGuestIpType() {
|
||||
String guestIpType = "Isolated";
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "guestIptype", guestIpType);
|
||||
assertEquals(guestIpType, cloneNetworkOfferingCmd.getGuestIpType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetTraffictype() {
|
||||
String trafficType = "GUEST";
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "traffictype", trafficType);
|
||||
assertEquals(trafficType, cloneNetworkOfferingCmd.getTraffictype());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetName() {
|
||||
String name = "ClonedNetworkOffering";
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "networkOfferingName", name);
|
||||
assertEquals(name, cloneNetworkOfferingCmd.getNetworkOfferingName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDisplayText() {
|
||||
String displayText = "Cloned Network Offering Display Text";
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "displayText", displayText);
|
||||
assertEquals(displayText, cloneNetworkOfferingCmd.getDisplayText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDisplayTextDefaultsToName() {
|
||||
String name = "ClonedNetworkOffering";
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "networkOfferingName", name);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "displayText", null);
|
||||
assertEquals(name, cloneNetworkOfferingCmd.getDisplayText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetAvailability() {
|
||||
String availability = "Required";
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "availability", availability);
|
||||
assertEquals(availability, cloneNetworkOfferingCmd.getAvailability());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetTags() {
|
||||
String tags = "tag1,tag2,tag3";
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "tags", tags);
|
||||
assertEquals(tags, cloneNetworkOfferingCmd.getTags());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteSuccess() {
|
||||
Long sourceOfferingId = 123L;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(configService.cloneNetworkOffering(any(CloneNetworkOfferingCmd.class))).thenReturn(mockNetworkOffering);
|
||||
when(responseGenerator.createNetworkOfferingResponse(mockNetworkOffering)).thenReturn(mockNetworkOfferingResponse);
|
||||
|
||||
cloneNetworkOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneNetworkOfferingCmd.getResponseObject());
|
||||
assertEquals(mockNetworkOfferingResponse, cloneNetworkOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test(expected = ServerApiException.class)
|
||||
public void testExecuteFailure() {
|
||||
Long sourceOfferingId = 123L;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(configService.cloneNetworkOffering(any(CloneNetworkOfferingCmd.class))).thenReturn(null);
|
||||
|
||||
try {
|
||||
cloneNetworkOfferingCmd.execute();
|
||||
fail("Expected ServerApiException to be thrown");
|
||||
} catch (ServerApiException e) {
|
||||
assertEquals(ApiErrorCode.INTERNAL_ERROR, e.getErrorCode());
|
||||
assertEquals("Failed to clone network offering", e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetConserveMode() {
|
||||
Boolean conserveMode = true;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "conserveMode", conserveMode);
|
||||
assertEquals(conserveMode, cloneNetworkOfferingCmd.getConserveMode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSpecifyVlan() {
|
||||
Boolean specifyVlan = false;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "specifyVlan", specifyVlan);
|
||||
assertEquals(specifyVlan, cloneNetworkOfferingCmd.getSpecifyVlan());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSpecifyIpRanges() {
|
||||
Boolean specifyIpRanges = true;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "specifyIpRanges", specifyIpRanges);
|
||||
assertEquals(specifyIpRanges, cloneNetworkOfferingCmd.getSpecifyIpRanges());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetIsPersistent() {
|
||||
Boolean isPersistent = true;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "isPersistent", isPersistent);
|
||||
assertEquals(isPersistent, cloneNetworkOfferingCmd.getIsPersistent());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetEgressDefaultPolicy() {
|
||||
Boolean egressDefaultPolicy = false;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "egressDefaultPolicy", egressDefaultPolicy);
|
||||
assertEquals(egressDefaultPolicy, cloneNetworkOfferingCmd.getEgressDefaultPolicy());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetServiceOfferingId() {
|
||||
Long serviceOfferingId = 456L;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "serviceOfferingId", serviceOfferingId);
|
||||
assertEquals(serviceOfferingId, cloneNetworkOfferingCmd.getServiceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetForVpc() {
|
||||
Boolean forVpc = true;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "forVpc", forVpc);
|
||||
assertEquals(forVpc, cloneNetworkOfferingCmd.getForVpc());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetMaxConnections() {
|
||||
Integer maxConnections = 1000;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "maxConnections", maxConnections);
|
||||
assertEquals(maxConnections, cloneNetworkOfferingCmd.getMaxconnections());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNetworkRate() {
|
||||
Integer networkRate = 200;
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "networkRate", networkRate);
|
||||
assertEquals(networkRate, cloneNetworkOfferingCmd.getNetworkRate());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetInternetProtocol() {
|
||||
String internetProtocol = "ipv4";
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "internetProtocol", internetProtocol);
|
||||
assertEquals(internetProtocol, cloneNetworkOfferingCmd.getInternetProtocol());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddServicesNullByDefault() {
|
||||
assertNull(cloneNetworkOfferingCmd.getAddServices());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDropServicesNullByDefault() {
|
||||
assertNull(cloneNetworkOfferingCmd.getDropServices());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSupportedServicesParameter() {
|
||||
List<String> supportedServices = Arrays.asList("Dhcp", "Dns", "SourceNat");
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "supportedServices", supportedServices);
|
||||
assertEquals(supportedServices, cloneNetworkOfferingCmd.getSupportedServices());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testServiceProviderListParameter() {
|
||||
Map<String, HashMap<String, String>> serviceProviderList = new HashMap<>();
|
||||
|
||||
HashMap<String, String> dhcpProvider = new HashMap<>();
|
||||
dhcpProvider.put("service", "Dhcp");
|
||||
dhcpProvider.put("provider", "VirtualRouter");
|
||||
|
||||
HashMap<String, String> dnsProvider = new HashMap<>();
|
||||
dnsProvider.put("service", "Dns");
|
||||
dnsProvider.put("provider", "VirtualRouter");
|
||||
|
||||
serviceProviderList.put("0", dhcpProvider);
|
||||
serviceProviderList.put("1", dnsProvider);
|
||||
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "serviceProviderList", serviceProviderList);
|
||||
|
||||
Map<String, List<String>> result = cloneNetworkOfferingCmd.getServiceProviders();
|
||||
assertNotNull(result);
|
||||
assertEquals(2, result.size());
|
||||
assertNotNull(result.get("Dhcp"));
|
||||
assertNotNull(result.get("Dns"));
|
||||
assertEquals("VirtualRouter", result.get("Dhcp").get(0));
|
||||
assertEquals("VirtualRouter", result.get("Dns").get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneWithAllParameters() {
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "sourceOfferingId", 123L);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "networkOfferingName", "ClonedOffering");
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "displayText", "Cloned Offering Display");
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "availability", "Optional");
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "guestIptype", "Isolated");
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "traffictype", "GUEST");
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "conserveMode", true);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "specifyVlan", false);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "isPersistent", true);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "egressDefaultPolicy", false);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "networkRate", 200);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "serviceOfferingId", 456L);
|
||||
|
||||
assertEquals(Long.valueOf(123L), cloneNetworkOfferingCmd.getSourceOfferingId());
|
||||
assertEquals("ClonedOffering", cloneNetworkOfferingCmd.getNetworkOfferingName());
|
||||
assertEquals("Cloned Offering Display", cloneNetworkOfferingCmd.getDisplayText());
|
||||
assertEquals("Optional", cloneNetworkOfferingCmd.getAvailability());
|
||||
assertEquals("Isolated", cloneNetworkOfferingCmd.getGuestIpType());
|
||||
assertEquals("GUEST", cloneNetworkOfferingCmd.getTraffictype());
|
||||
assertEquals(Boolean.TRUE, cloneNetworkOfferingCmd.getConserveMode());
|
||||
assertEquals(Boolean.FALSE, cloneNetworkOfferingCmd.getSpecifyVlan());
|
||||
assertEquals(Boolean.TRUE, cloneNetworkOfferingCmd.getIsPersistent());
|
||||
assertEquals(Boolean.FALSE, cloneNetworkOfferingCmd.getEgressDefaultPolicy());
|
||||
assertEquals(Integer.valueOf(200), cloneNetworkOfferingCmd.getNetworkRate());
|
||||
assertEquals(Long.valueOf(456L), cloneNetworkOfferingCmd.getServiceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneWithAddAndDropServices() {
|
||||
List<String> addServices = Arrays.asList("StaticNat", "PortForwarding");
|
||||
List<String> dropServices = Arrays.asList("Vpn");
|
||||
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "sourceOfferingId", 123L);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "addServices", addServices);
|
||||
ReflectionTestUtils.setField(cloneNetworkOfferingCmd, "dropServices", dropServices);
|
||||
|
||||
assertEquals(addServices, cloneNetworkOfferingCmd.getAddServices());
|
||||
assertEquals(dropServices, cloneNetworkOfferingCmd.getDropServices());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,669 @@
|
|||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
package org.apache.cloudstack.api.command.admin.offering;
|
||||
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.offering.ServiceOffering;
|
||||
import org.apache.cloudstack.api.ApiErrorCode;
|
||||
import org.apache.cloudstack.api.ResponseGenerator;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.api.response.ServiceOfferingResponse;
|
||||
import org.apache.cloudstack.vm.lease.VMLeaseManager;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class CloneServiceOfferingCmdTest {
|
||||
|
||||
private CloneServiceOfferingCmd cloneServiceOfferingCmd;
|
||||
|
||||
@Mock
|
||||
private com.cloud.configuration.ConfigurationService configService;
|
||||
|
||||
@Mock
|
||||
private ResponseGenerator responseGenerator;
|
||||
|
||||
@Mock
|
||||
private ServiceOffering mockServiceOffering;
|
||||
|
||||
@Mock
|
||||
private ServiceOfferingResponse mockServiceOfferingResponse;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
cloneServiceOfferingCmd = new CloneServiceOfferingCmd();
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "_configService", configService);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "_responseGenerator", responseGenerator);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSourceOfferingId() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
assertEquals(sourceOfferingId, cloneServiceOfferingCmd.getSourceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetServiceOfferingName() {
|
||||
String name = "ClonedServiceOffering";
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", name);
|
||||
assertEquals(name, cloneServiceOfferingCmd.getServiceOfferingName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDisplayText() {
|
||||
String displayText = "Cloned Service Offering Display Text";
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "displayText", displayText);
|
||||
assertEquals(displayText, cloneServiceOfferingCmd.getDisplayText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDisplayTextDefaultsToName() {
|
||||
String name = "ClonedServiceOffering";
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", name);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "displayText", null);
|
||||
assertEquals(name, cloneServiceOfferingCmd.getDisplayText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetCpu() {
|
||||
Integer cpu = 4;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuNumber", cpu);
|
||||
assertEquals(cpu, cloneServiceOfferingCmd.getCpuNumber());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetMemory() {
|
||||
Integer memory = 8192;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "memory", memory);
|
||||
assertEquals(memory, cloneServiceOfferingCmd.getMemory());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetCpuSpeed() {
|
||||
Integer cpuSpeed = 2000;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuSpeed", cpuSpeed);
|
||||
assertEquals(cpuSpeed, cloneServiceOfferingCmd.getCpuSpeed());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetOfferHa() {
|
||||
Boolean offerHa = true;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "offerHa", offerHa);
|
||||
assertEquals(offerHa, cloneServiceOfferingCmd.isOfferHa());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetLimitCpuUse() {
|
||||
Boolean limitCpuUse = false;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "limitCpuUse", limitCpuUse);
|
||||
assertEquals(limitCpuUse, cloneServiceOfferingCmd.isLimitCpuUse());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetVolatileVm() {
|
||||
Boolean volatileVm = true;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "isVolatile", volatileVm);
|
||||
assertEquals(volatileVm, cloneServiceOfferingCmd.isVolatileVm());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetStorageType() {
|
||||
String storageType = "local";
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "storageType", storageType);
|
||||
assertEquals(storageType, cloneServiceOfferingCmd.getStorageType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetTags() {
|
||||
String tags = "ssd,premium,dedicated";
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "tags", tags);
|
||||
assertEquals(tags, cloneServiceOfferingCmd.getTags());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetHostTag() {
|
||||
String hostTag = "gpu-enabled";
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "hostTag", hostTag);
|
||||
assertEquals(hostTag, cloneServiceOfferingCmd.getHostTag());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNetworkRate() {
|
||||
Integer networkRate = 1000;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "networkRate", networkRate);
|
||||
assertEquals(networkRate, cloneServiceOfferingCmd.getNetworkRate());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDeploymentPlanner() {
|
||||
String deploymentPlanner = "UserDispersingPlanner";
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "deploymentPlanner", deploymentPlanner);
|
||||
assertEquals(deploymentPlanner, cloneServiceOfferingCmd.getDeploymentPlanner());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDetails() {
|
||||
Map<String, HashMap<String, String>> details = new HashMap<>();
|
||||
|
||||
HashMap<String, String> cpuOvercommit = new HashMap<>();
|
||||
cpuOvercommit.put("key", "cpuOvercommitRatio");
|
||||
cpuOvercommit.put("value", "2.0");
|
||||
|
||||
HashMap<String, String> memoryOvercommit = new HashMap<>();
|
||||
memoryOvercommit.put("key", "memoryOvercommitRatio");
|
||||
memoryOvercommit.put("value", "1.5");
|
||||
|
||||
details.put("0", cpuOvercommit);
|
||||
details.put("1", memoryOvercommit);
|
||||
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "details", details);
|
||||
|
||||
Map<String, String> result = cloneServiceOfferingCmd.getDetails();
|
||||
assertNotNull(result);
|
||||
assertEquals("2.0", result.get("cpuOvercommitRatio"));
|
||||
assertEquals("1.5", result.get("memoryOvercommitRatio"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsPurgeResources() {
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "purgeResources", true);
|
||||
assertTrue(cloneServiceOfferingCmd.isPurgeResources());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsPurgeResourcesFalse() {
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "purgeResources", false);
|
||||
assertFalse(cloneServiceOfferingCmd.isPurgeResources());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIsPurgeResourcesDefaultFalse() {
|
||||
assertFalse(cloneServiceOfferingCmd.isPurgeResources());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetLeaseDuration() {
|
||||
Integer leaseDuration = 3600;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "leaseDuration", leaseDuration);
|
||||
assertEquals(leaseDuration, cloneServiceOfferingCmd.getLeaseDuration());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetLeaseExpiryAction() {
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "leaseExpiryAction", "stop");
|
||||
assertEquals(VMLeaseManager.ExpiryAction.STOP, cloneServiceOfferingCmd.getLeaseExpiryAction());
|
||||
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "leaseExpiryAction", "DESTROY");
|
||||
assertEquals(VMLeaseManager.ExpiryAction.DESTROY, cloneServiceOfferingCmd.getLeaseExpiryAction());
|
||||
}
|
||||
|
||||
@Test(expected = InvalidParameterValueException.class)
|
||||
public void testGetLeaseExpiryActionInvalidValue() {
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "leaseExpiryAction", "InvalidAction");
|
||||
cloneServiceOfferingCmd.getLeaseExpiryAction();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetVgpuProfileId() {
|
||||
Long vgpuProfileId = 10L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "vgpuProfileId", vgpuProfileId);
|
||||
assertEquals(vgpuProfileId, cloneServiceOfferingCmd.getVgpuProfileId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetGpuCount() {
|
||||
Integer gpuCount = 2;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "gpuCount", gpuCount);
|
||||
assertEquals(gpuCount, cloneServiceOfferingCmd.getGpuCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetGpuDisplay() {
|
||||
Boolean gpuDisplay = true;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "gpuDisplay", gpuDisplay);
|
||||
assertEquals(gpuDisplay, cloneServiceOfferingCmd.getGpuDisplay());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteSuccess() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
assertEquals(mockServiceOfferingResponse, cloneServiceOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteFailure() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(null);
|
||||
|
||||
try {
|
||||
cloneServiceOfferingCmd.execute();
|
||||
fail("Expected ServerApiException to be thrown");
|
||||
} catch (ServerApiException e) {
|
||||
assertEquals(ApiErrorCode.INTERNAL_ERROR, e.getErrorCode());
|
||||
assertEquals("Failed to clone service offering", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteSuccessWithAllParameters() {
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", 555L);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", "ClonedOffering");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "displayText", "Test Display");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuNumber", 4);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "memory", 8192);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuSpeed", 2000);
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
assertEquals(mockServiceOfferingResponse, cloneServiceOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithInvalidParameterException() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class)))
|
||||
.thenThrow(new InvalidParameterValueException("Invalid source offering ID"));
|
||||
|
||||
try {
|
||||
cloneServiceOfferingCmd.execute();
|
||||
fail("Expected ServerApiException to be thrown");
|
||||
} catch (ServerApiException e) {
|
||||
assertEquals(ApiErrorCode.PARAM_ERROR, e.getErrorCode());
|
||||
assertEquals("Invalid source offering ID", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithCloudRuntimeException() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class)))
|
||||
.thenThrow(new com.cloud.utils.exception.CloudRuntimeException("Runtime error during clone"));
|
||||
|
||||
try {
|
||||
cloneServiceOfferingCmd.execute();
|
||||
fail("Expected ServerApiException to be thrown");
|
||||
} catch (ServerApiException e) {
|
||||
assertEquals(ApiErrorCode.INTERNAL_ERROR, e.getErrorCode());
|
||||
assertEquals("Runtime error during clone", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteResponseNameIsSet() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
// Verify that response name would be set (actual verification would require accessing the response object's internal state)
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneWithAllParameters() {
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", 555L);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", "ClonedServiceOffering");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "displayText", "Cloned Service Offering");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuNumber", 4);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "memory", 8192);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuSpeed", 2000);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "offerHa", true);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "limitCpuUse", false);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "isVolatile", true);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "storageType", "local");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "tags", "premium");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "hostTag", "gpu-enabled");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "networkRate", 1000);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "deploymentPlanner", "UserDispersingPlanner");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "purgeResources", true);
|
||||
|
||||
assertEquals(Long.valueOf(555L), cloneServiceOfferingCmd.getSourceOfferingId());
|
||||
assertEquals("ClonedServiceOffering", cloneServiceOfferingCmd.getServiceOfferingName());
|
||||
assertEquals("Cloned Service Offering", cloneServiceOfferingCmd.getDisplayText());
|
||||
assertEquals(Integer.valueOf(4), cloneServiceOfferingCmd.getCpuNumber());
|
||||
assertEquals(Integer.valueOf(8192), cloneServiceOfferingCmd.getMemory());
|
||||
assertEquals(Integer.valueOf(2000), cloneServiceOfferingCmd.getCpuSpeed());
|
||||
assertEquals(Boolean.TRUE, cloneServiceOfferingCmd.isOfferHa());
|
||||
assertEquals(Boolean.FALSE, cloneServiceOfferingCmd.isLimitCpuUse());
|
||||
assertEquals(Boolean.TRUE, cloneServiceOfferingCmd.isVolatileVm());
|
||||
assertEquals("local", cloneServiceOfferingCmd.getStorageType());
|
||||
assertEquals("premium", cloneServiceOfferingCmd.getTags());
|
||||
assertEquals("gpu-enabled", cloneServiceOfferingCmd.getHostTag());
|
||||
assertEquals(Integer.valueOf(1000), cloneServiceOfferingCmd.getNetworkRate());
|
||||
assertEquals("UserDispersingPlanner", cloneServiceOfferingCmd.getDeploymentPlanner());
|
||||
assertTrue(cloneServiceOfferingCmd.isPurgeResources());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSourceOfferingIdNullByDefault() {
|
||||
assertNull(cloneServiceOfferingCmd.getSourceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSystemVmType() {
|
||||
String systemVmType = "domainrouter";
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "systemVmType", systemVmType);
|
||||
assertEquals(systemVmType, cloneServiceOfferingCmd.getSystemVmType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBytesReadRate() {
|
||||
Long bytesReadRate = 1000000L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "bytesReadRate", bytesReadRate);
|
||||
assertEquals(bytesReadRate, cloneServiceOfferingCmd.getBytesReadRate());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBytesWriteRate() {
|
||||
Long bytesWriteRate = 1000000L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "bytesWriteRate", bytesWriteRate);
|
||||
assertEquals(bytesWriteRate, cloneServiceOfferingCmd.getBytesWriteRate());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetIopsReadRate() {
|
||||
Long iopsReadRate = 1000L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "iopsReadRate", iopsReadRate);
|
||||
assertEquals(iopsReadRate, cloneServiceOfferingCmd.getIopsReadRate());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetIopsWriteRate() {
|
||||
Long iopsWriteRate = 1000L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "iopsWriteRate", iopsWriteRate);
|
||||
assertEquals(iopsWriteRate, cloneServiceOfferingCmd.getIopsWriteRate());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneServiceOfferingWithGpuProfile() {
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", 555L);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", "GPU-Offering-Clone");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "vgpuProfileId", 10L);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "gpuCount", 2);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "gpuDisplay", true);
|
||||
|
||||
assertEquals(Long.valueOf(10L), cloneServiceOfferingCmd.getVgpuProfileId());
|
||||
assertEquals(Integer.valueOf(2), cloneServiceOfferingCmd.getGpuCount());
|
||||
assertTrue(cloneServiceOfferingCmd.getGpuDisplay());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneServiceOfferingWithLease() {
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", 555L);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", "Lease-Offering-Clone");
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "leaseDuration", 7200);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "leaseExpiryAction", "destroy");
|
||||
|
||||
assertEquals(Integer.valueOf(7200), cloneServiceOfferingCmd.getLeaseDuration());
|
||||
assertEquals(VMLeaseManager.ExpiryAction.DESTROY, cloneServiceOfferingCmd.getLeaseExpiryAction());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithOverriddenParameters() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
String newName = "ClonedOffering-Override";
|
||||
String newDisplayText = "Overridden Display Text";
|
||||
Integer newCpu = 8;
|
||||
Integer newMemory = 16384;
|
||||
Integer newCpuSpeed = 3000;
|
||||
Boolean newOfferHa = true;
|
||||
Boolean newLimitCpuUse = true;
|
||||
String newStorageType = "shared";
|
||||
String newTags = "premium,gpu";
|
||||
String newHostTag = "compute-optimized";
|
||||
Integer newNetworkRate = 2000;
|
||||
String newDeploymentPlanner = "FirstFitPlanner";
|
||||
Boolean newPurgeResources = true;
|
||||
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", newName);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "displayText", newDisplayText);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuNumber", newCpu);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "memory", newMemory);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuSpeed", newCpuSpeed);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "offerHa", newOfferHa);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "limitCpuUse", newLimitCpuUse);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "storageType", newStorageType);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "tags", newTags);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "hostTag", newHostTag);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "networkRate", newNetworkRate);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "deploymentPlanner", newDeploymentPlanner);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "purgeResources", newPurgeResources);
|
||||
|
||||
assertEquals(sourceOfferingId, cloneServiceOfferingCmd.getSourceOfferingId());
|
||||
assertEquals(newName, cloneServiceOfferingCmd.getServiceOfferingName());
|
||||
assertEquals(newDisplayText, cloneServiceOfferingCmd.getDisplayText());
|
||||
assertEquals(newCpu, cloneServiceOfferingCmd.getCpuNumber());
|
||||
assertEquals(newMemory, cloneServiceOfferingCmd.getMemory());
|
||||
assertEquals(newCpuSpeed, cloneServiceOfferingCmd.getCpuSpeed());
|
||||
assertEquals(newOfferHa, cloneServiceOfferingCmd.isOfferHa());
|
||||
assertEquals(newLimitCpuUse, cloneServiceOfferingCmd.isLimitCpuUse());
|
||||
assertEquals(newStorageType, cloneServiceOfferingCmd.getStorageType());
|
||||
assertEquals(newTags, cloneServiceOfferingCmd.getTags());
|
||||
assertEquals(newHostTag, cloneServiceOfferingCmd.getHostTag());
|
||||
assertEquals(newNetworkRate, cloneServiceOfferingCmd.getNetworkRate());
|
||||
assertEquals(newDeploymentPlanner, cloneServiceOfferingCmd.getDeploymentPlanner());
|
||||
assertTrue(cloneServiceOfferingCmd.isPurgeResources());
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
assertEquals(mockServiceOfferingResponse, cloneServiceOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithPartialOverrides() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
String newName = "PartialOverride";
|
||||
Integer newCpu = 6;
|
||||
Integer newMemory = 12288;
|
||||
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", newName);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "cpuNumber", newCpu);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "memory", newMemory);
|
||||
|
||||
assertEquals(newName, cloneServiceOfferingCmd.getServiceOfferingName());
|
||||
assertEquals(newCpu, cloneServiceOfferingCmd.getCpuNumber());
|
||||
assertEquals(newMemory, cloneServiceOfferingCmd.getMemory());
|
||||
|
||||
assertNull(cloneServiceOfferingCmd.getCpuSpeed());
|
||||
assertFalse(cloneServiceOfferingCmd.isOfferHa());
|
||||
assertNull(cloneServiceOfferingCmd.getStorageType());
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
assertEquals(mockServiceOfferingResponse, cloneServiceOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithGpuOverrides() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
String newName = "GPU-Clone-Override";
|
||||
Long vgpuProfileId = 15L;
|
||||
Integer gpuCount = 4;
|
||||
Boolean gpuDisplay = false;
|
||||
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", newName);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "vgpuProfileId", vgpuProfileId);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "gpuCount", gpuCount);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "gpuDisplay", gpuDisplay);
|
||||
|
||||
assertEquals(newName, cloneServiceOfferingCmd.getServiceOfferingName());
|
||||
assertEquals(vgpuProfileId, cloneServiceOfferingCmd.getVgpuProfileId());
|
||||
assertEquals(gpuCount, cloneServiceOfferingCmd.getGpuCount());
|
||||
assertEquals(gpuDisplay, cloneServiceOfferingCmd.getGpuDisplay());
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
assertEquals(mockServiceOfferingResponse, cloneServiceOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithLeaseOverrides() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
String newName = "Lease-Clone-Override";
|
||||
Integer leaseDuration = 14400; // 4 hours
|
||||
String leaseExpiryAction = "stop";
|
||||
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", newName);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "leaseDuration", leaseDuration);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "leaseExpiryAction", leaseExpiryAction);
|
||||
|
||||
assertEquals(newName, cloneServiceOfferingCmd.getServiceOfferingName());
|
||||
assertEquals(leaseDuration, cloneServiceOfferingCmd.getLeaseDuration());
|
||||
assertEquals(VMLeaseManager.ExpiryAction.STOP, cloneServiceOfferingCmd.getLeaseExpiryAction());
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
assertEquals(mockServiceOfferingResponse, cloneServiceOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithStorageOverrides() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
String newName = "Storage-Clone-Override";
|
||||
Long bytesReadRate = 2000000L;
|
||||
Long bytesWriteRate = 1500000L;
|
||||
Long iopsReadRate = 2000L;
|
||||
Long iopsWriteRate = 1500L;
|
||||
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", newName);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "bytesReadRate", bytesReadRate);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "bytesWriteRate", bytesWriteRate);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "iopsReadRate", iopsReadRate);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "iopsWriteRate", iopsWriteRate);
|
||||
|
||||
assertEquals(newName, cloneServiceOfferingCmd.getServiceOfferingName());
|
||||
assertEquals(bytesReadRate, cloneServiceOfferingCmd.getBytesReadRate());
|
||||
assertEquals(bytesWriteRate, cloneServiceOfferingCmd.getBytesWriteRate());
|
||||
assertEquals(iopsReadRate, cloneServiceOfferingCmd.getIopsReadRate());
|
||||
assertEquals(iopsWriteRate, cloneServiceOfferingCmd.getIopsWriteRate());
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
assertEquals(mockServiceOfferingResponse, cloneServiceOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteWithDetailsOverride() {
|
||||
Long sourceOfferingId = 555L;
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
String newName = "Details-Clone-Override";
|
||||
Map<String, HashMap<String, String>> details = new HashMap<>();
|
||||
|
||||
HashMap<String, String> cpuOvercommit = new HashMap<>();
|
||||
cpuOvercommit.put("key", "cpuOvercommitRatio");
|
||||
cpuOvercommit.put("value", "3.0");
|
||||
|
||||
HashMap<String, String> memoryOvercommit = new HashMap<>();
|
||||
memoryOvercommit.put("key", "memoryOvercommitRatio");
|
||||
memoryOvercommit.put("value", "2.5");
|
||||
|
||||
HashMap<String, String> customDetail = new HashMap<>();
|
||||
customDetail.put("key", "customParameter");
|
||||
customDetail.put("value", "customValue");
|
||||
|
||||
details.put("0", cpuOvercommit);
|
||||
details.put("1", memoryOvercommit);
|
||||
details.put("2", customDetail);
|
||||
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "serviceOfferingName", newName);
|
||||
ReflectionTestUtils.setField(cloneServiceOfferingCmd, "details", details);
|
||||
|
||||
assertEquals(newName, cloneServiceOfferingCmd.getServiceOfferingName());
|
||||
Map<String, String> result = cloneServiceOfferingCmd.getDetails();
|
||||
assertNotNull(result);
|
||||
assertEquals("3.0", result.get("cpuOvercommitRatio"));
|
||||
assertEquals("2.5", result.get("memoryOvercommitRatio"));
|
||||
assertEquals("customValue", result.get("customParameter"));
|
||||
|
||||
when(configService.cloneServiceOffering(any(CloneServiceOfferingCmd.class))).thenReturn(mockServiceOffering);
|
||||
when(responseGenerator.createServiceOfferingResponse(mockServiceOffering)).thenReturn(mockServiceOfferingResponse);
|
||||
|
||||
cloneServiceOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneServiceOfferingCmd.getResponseObject());
|
||||
assertEquals(mockServiceOfferingResponse, cloneServiceOfferingCmd.getResponseObject());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,300 @@
|
|||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
package org.apache.cloudstack.api.command.admin.vpc;
|
||||
|
||||
import com.cloud.network.vpc.VpcOffering;
|
||||
import com.cloud.network.vpc.VpcProvisioningService;
|
||||
import org.apache.cloudstack.api.ApiErrorCode;
|
||||
import org.apache.cloudstack.api.ResponseGenerator;
|
||||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.api.response.VpcOfferingResponse;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class CloneVpcOfferingCmdTest {
|
||||
|
||||
private CloneVPCOfferingCmd cloneVpcOfferingCmd;
|
||||
|
||||
@Mock
|
||||
private VpcProvisioningService vpcService;
|
||||
|
||||
@Mock
|
||||
private ResponseGenerator responseGenerator;
|
||||
|
||||
@Mock
|
||||
private VpcOffering mockVpcOffering;
|
||||
|
||||
@Mock
|
||||
private VpcOfferingResponse mockVpcOfferingResponse;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
cloneVpcOfferingCmd = new CloneVPCOfferingCmd();
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "_vpcProvSvc", vpcService);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "_responseGenerator", responseGenerator);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSourceOfferingId() {
|
||||
Long sourceOfferingId = 789L;
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
assertEquals(sourceOfferingId, cloneVpcOfferingCmd.getSourceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetName() {
|
||||
String name = "ClonedVpcOffering";
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "vpcOfferingName", name);
|
||||
assertEquals(name, cloneVpcOfferingCmd.getVpcOfferingName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDisplayText() {
|
||||
String displayText = "Cloned VPC Offering Display Text";
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "displayText", displayText);
|
||||
assertEquals(displayText, cloneVpcOfferingCmd.getDisplayText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDisplayTextDefaultsToName() {
|
||||
String name = "ClonedVpcOffering";
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "vpcOfferingName", name);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "displayText", null);
|
||||
assertEquals(name, cloneVpcOfferingCmd.getDisplayText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetServiceOfferingId() {
|
||||
Long serviceOfferingId = 456L;
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "serviceOfferingId", serviceOfferingId);
|
||||
assertEquals(serviceOfferingId, cloneVpcOfferingCmd.getServiceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetInternetProtocol() {
|
||||
String internetProtocol = "dualstack";
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "internetProtocol", internetProtocol);
|
||||
assertEquals(internetProtocol, cloneVpcOfferingCmd.getInternetProtocol());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetProvider() {
|
||||
String provider = "NSX";
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "provider", provider);
|
||||
assertEquals(provider, cloneVpcOfferingCmd.getProvider());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNetworkMode() {
|
||||
String networkMode = "ROUTED";
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "networkMode", networkMode);
|
||||
assertEquals(networkMode, cloneVpcOfferingCmd.getNetworkMode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetRoutingMode() {
|
||||
String routingMode = "dynamic";
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "routingMode", routingMode);
|
||||
assertEquals(routingMode, cloneVpcOfferingCmd.getRoutingMode());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetNsxSupportLb() {
|
||||
Boolean nsxSupportLb = true;
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "nsxSupportsLbService", nsxSupportLb);
|
||||
assertEquals(nsxSupportLb, cloneVpcOfferingCmd.getNsxSupportsLbService());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSpecifyAsnumber() {
|
||||
Boolean specifyAsnumber = false;
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "specifyAsNumber", specifyAsnumber);
|
||||
assertEquals(specifyAsnumber, cloneVpcOfferingCmd.getSpecifyAsNumber());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteSuccess() {
|
||||
Long sourceOfferingId = 789L;
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(vpcService.cloneVPCOffering(any(CloneVPCOfferingCmd.class))).thenReturn(mockVpcOffering);
|
||||
when(responseGenerator.createVpcOfferingResponse(mockVpcOffering)).thenReturn(mockVpcOfferingResponse);
|
||||
|
||||
cloneVpcOfferingCmd.execute();
|
||||
|
||||
assertNotNull(cloneVpcOfferingCmd.getResponseObject());
|
||||
assertEquals(mockVpcOfferingResponse, cloneVpcOfferingCmd.getResponseObject());
|
||||
}
|
||||
|
||||
@Test(expected = ServerApiException.class)
|
||||
public void testExecuteFailure() {
|
||||
Long sourceOfferingId = 789L;
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "sourceOfferingId", sourceOfferingId);
|
||||
|
||||
when(vpcService.cloneVPCOffering(any(CloneVPCOfferingCmd.class))).thenReturn(null);
|
||||
|
||||
try {
|
||||
cloneVpcOfferingCmd.execute();
|
||||
fail("Expected ServerApiException to be thrown");
|
||||
} catch (ServerApiException e) {
|
||||
assertEquals(ApiErrorCode.INTERNAL_ERROR, e.getErrorCode());
|
||||
assertEquals("Failed to clone VPC offering", e.getMessage());
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSupportedServices() {
|
||||
List<String> supportedServices = Arrays.asList("Dhcp", "Dns", "SourceNat", "NetworkACL");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "supportedServices", supportedServices);
|
||||
assertEquals(supportedServices, cloneVpcOfferingCmd.getSupportedServices());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetServiceProviders() {
|
||||
Map<String, HashMap<String, String>> serviceProviderList = new HashMap<>();
|
||||
|
||||
HashMap<String, String> dhcpProvider = new HashMap<>();
|
||||
dhcpProvider.put("service", "Dhcp");
|
||||
dhcpProvider.put("provider", "VpcVirtualRouter");
|
||||
|
||||
HashMap<String, String> dnsProvider = new HashMap<>();
|
||||
dnsProvider.put("service", "Dns");
|
||||
dnsProvider.put("provider", "VpcVirtualRouter");
|
||||
|
||||
HashMap<String, String> aclProvider = new HashMap<>();
|
||||
aclProvider.put("service", "NetworkACL");
|
||||
aclProvider.put("provider", "VpcVirtualRouter");
|
||||
|
||||
serviceProviderList.put("0", dhcpProvider);
|
||||
serviceProviderList.put("1", dnsProvider);
|
||||
serviceProviderList.put("2", aclProvider);
|
||||
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "serviceProviderList", serviceProviderList);
|
||||
|
||||
Map<String, List<String>> result = cloneVpcOfferingCmd.getServiceProviders();
|
||||
assertNotNull(result);
|
||||
assertEquals(3, result.size());
|
||||
assertNotNull(result.get("Dhcp"));
|
||||
assertNotNull(result.get("Dns"));
|
||||
assertNotNull(result.get("NetworkACL"));
|
||||
assertEquals("VpcVirtualRouter", result.get("Dhcp").get(0));
|
||||
assertEquals("VpcVirtualRouter", result.get("Dns").get(0));
|
||||
assertEquals("VpcVirtualRouter", result.get("NetworkACL").get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetEnable() {
|
||||
Boolean enable = true;
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "enable", enable);
|
||||
assertEquals(enable, cloneVpcOfferingCmd.getEnable());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneWithAllParameters() {
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "sourceOfferingId", 789L);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "vpcOfferingName", "ClonedVpcOffering");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "displayText", "Cloned VPC Offering");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "serviceOfferingId", 456L);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "internetProtocol", "ipv4");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "provider", "NSX");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "networkMode", "NATTED");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "routingMode", "static");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "nsxSupportsLbService", true);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "specifyAsNumber", false);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "enable", true);
|
||||
|
||||
assertEquals(Long.valueOf(789L), cloneVpcOfferingCmd.getSourceOfferingId());
|
||||
assertEquals("ClonedVpcOffering", cloneVpcOfferingCmd.getVpcOfferingName());
|
||||
assertEquals("Cloned VPC Offering", cloneVpcOfferingCmd.getDisplayText());
|
||||
assertEquals(Long.valueOf(456L), cloneVpcOfferingCmd.getServiceOfferingId());
|
||||
assertEquals("ipv4", cloneVpcOfferingCmd.getInternetProtocol());
|
||||
assertEquals("NSX", cloneVpcOfferingCmd.getProvider());
|
||||
assertEquals("NATTED", cloneVpcOfferingCmd.getNetworkMode());
|
||||
assertEquals("static", cloneVpcOfferingCmd.getRoutingMode());
|
||||
assertEquals(Boolean.TRUE, cloneVpcOfferingCmd.getNsxSupportsLbService());
|
||||
assertEquals(Boolean.FALSE, cloneVpcOfferingCmd.getSpecifyAsNumber());
|
||||
assertEquals(Boolean.TRUE, cloneVpcOfferingCmd.getEnable());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSourceOfferingIdNullByDefault() {
|
||||
assertNull(cloneVpcOfferingCmd.getSourceOfferingId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testProviderNullByDefault() {
|
||||
assertNull(cloneVpcOfferingCmd.getProvider());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testServiceCapabilityList() {
|
||||
Map<String, List<String>> serviceCapabilityList = new HashMap<>();
|
||||
serviceCapabilityList.put("Connectivity", Arrays.asList("RegionLevelVpc:true", "DistributedRouter:true"));
|
||||
serviceCapabilityList.put("SourceNat", Arrays.asList("RedundantRouter:true"));
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "serviceCapabilityList", serviceCapabilityList);
|
||||
|
||||
Map<String, List<String>> result = cloneVpcOfferingCmd.getServiceCapabilityList();
|
||||
assertNotNull(result);
|
||||
assertEquals(serviceCapabilityList, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneVpcOfferingWithNsxProvider() {
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "sourceOfferingId", 789L);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "provider", "NSX");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "nsxSupportsLbService", true);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "networkMode", "ROUTED");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "routingMode", "dynamic");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "specifyAsNumber", true);
|
||||
|
||||
assertEquals("NSX", cloneVpcOfferingCmd.getProvider());
|
||||
assertEquals(Boolean.TRUE, cloneVpcOfferingCmd.getNsxSupportsLbService());
|
||||
assertEquals("ROUTED", cloneVpcOfferingCmd.getNetworkMode());
|
||||
assertEquals("dynamic", cloneVpcOfferingCmd.getRoutingMode());
|
||||
assertEquals(Boolean.TRUE, cloneVpcOfferingCmd.getSpecifyAsNumber());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCloneVpcOfferingWithNetrisProvider() {
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "sourceOfferingId", 789L);
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "provider", "Netris");
|
||||
ReflectionTestUtils.setField(cloneVpcOfferingCmd, "networkMode", "NATTED");
|
||||
|
||||
assertEquals("Netris", cloneVpcOfferingCmd.getProvider());
|
||||
assertEquals("NATTED", cloneVpcOfferingCmd.getNetworkMode());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue