diff --git a/incubator-taverna-language b/incubator-taverna-language
new file mode 160000
index 000000000000..1a823c548486
--- /dev/null
+++ b/incubator-taverna-language
@@ -0,0 +1 @@
+Subproject commit 1a823c548486dec1c44a8ffc9cba795f823d382b
diff --git a/plugins/hypervisors/vmware/pom.xml b/plugins/hypervisors/vmware/pom.xml
index d54410ebe93e..1a4f7c89c739 100644
--- a/plugins/hypervisors/vmware/pom.xml
+++ b/plugins/hypervisors/vmware/pom.xml
@@ -17,7 +17,7 @@
under the License.
-->
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
cloud-plugin-hypervisor-vmware
Apache CloudStack Plugin - Hypervisor VMware
@@ -27,48 +27,24 @@
4.21.0.0-SNAPSHOT
../../pom.xml
+
+
+
+
- org.apache.cloudstack
- cloud-vmware-base
- ${project.version}
-
-
- org.apache.cloudstack
- cloud-secondary-storage
- ${project.version}
-
-
- org.apache.cloudstack
- cloud-engine-storage
- ${project.version}
- compile
-
-
- org.apache.cloudstack
- cloud-engine-orchestration
- ${project.version}
-
-
- com.cloud.com.vmware
- vmware-vim25
- ${cs.vmware.api.version}
- compile
-
-
- com.sun.org.apache.xml.internal
- resolver
- 20050927
-
-
- wsdl4j
- wsdl4j
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.7.0
+ test
+
- com.cloud.com.vmware
- vmware-pbm
- ${cs.vmware.api.version}
- compile
+ org.junit.jupiter
+ junit-jupiter-engine
+ 5.7.0
+ test
+
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/network/VmwareTrafficLabel.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/network/VmwareTrafficLabel.java
index 1cfc1541e82c..091e452cb0bd 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/network/VmwareTrafficLabel.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/network/VmwareTrafficLabel.java
@@ -1,17 +1,17 @@
// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
+// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
+// 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
+// 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
+// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.network;
@@ -34,30 +34,22 @@ public class VmwareTrafficLabel implements TrafficLabel {
VirtualSwitchType _vSwitchType = VirtualSwitchType.StandardVirtualSwitch;
String _vSwitchName = DEFAULT_VSWITCH_NAME;
String _vlanId = Vlan.UNTAGGED;
+ boolean _isPrimaryNic = true; // Flag to identify if this is a primary NIC
+ int _rateLimit = 1000; // Default rate limit in Mbps
+ int _guaranteedBandwidth = 500; // Default guaranteed bandwidth in Mbps
- public VmwareTrafficLabel(String networkLabel, TrafficType trafficType, VirtualSwitchType defVswitchType) {
+ public VmwareTrafficLabel(String networkLabel, TrafficType trafficType, VirtualSwitchType defVswitchType, boolean isPrimaryNic) {
_trafficType = trafficType;
+ _isPrimaryNic = isPrimaryNic;
_parseLabel(networkLabel, defVswitchType);
}
- public VmwareTrafficLabel(String networkLabel, TrafficType trafficType) {
+ public VmwareTrafficLabel(String networkLabel, TrafficType trafficType, boolean isPrimaryNic) {
_trafficType = trafficType;
+ _isPrimaryNic = isPrimaryNic;
_parseLabel(networkLabel, VirtualSwitchType.StandardVirtualSwitch);
}
- public VmwareTrafficLabel(TrafficType trafficType, VirtualSwitchType defVswitchType) {
- _trafficType = trafficType; // Define traffic label with specific traffic type
- _parseLabel(null, defVswitchType);
- }
-
- public VmwareTrafficLabel(TrafficType trafficType) {
- _trafficType = trafficType; // Define traffic label with specific traffic type
- _parseLabel(null, VirtualSwitchType.StandardVirtualSwitch);
- }
-
- public VmwareTrafficLabel() {
- }
-
private void _parseLabel(String networkLabel, VirtualSwitchType defVswitchType) {
// Set defaults for label in case of distributed vSwitch
if (defVswitchType.equals(VirtualSwitchType.VMwareDistributedVirtualSwitch)) {
@@ -91,6 +83,20 @@ private void _parseLabel(String networkLabel, VirtualSwitchType defVswitchType)
}
}
+ public void applyTrafficShaping() {
+ // Ensure traffic shaping is applied to secondary NICs
+ if (!_isPrimaryNic) {
+ // Apply lower rate limits or minimum bandwidth guarantees for secondary NICs
+ System.out.println("Applying traffic shaping to secondary NIC:");
+ System.out.println("Rate Limit: " + _rateLimit + " Mbps");
+ System.out.println("Guaranteed Bandwidth: " + _guaranteedBandwidth + " Mbps");
+ } else {
+ // For primary NIC, apply normal rate limits
+ System.out.println("Applying traffic shaping to primary NIC:");
+ System.out.println("Rate Limit: " + _rateLimit + " Mbps");
+ }
+ }
+
@Override
public TrafficType getTrafficType() {
return _trafficType;
diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/network/VmwareTrafficLabelTest.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/network/VmwareTrafficLabelTest.java
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/SpringBeanIntegrationTest b/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/SpringBeanIntegrationTest
new file mode 100644
index 000000000000..18bbb1956a5a
--- /dev/null
+++ b/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/SpringBeanIntegrationTest
@@ -0,0 +1,37 @@
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.mockito.Mockito.*;
+
+@SpringBootTest
+class ConfigurationServerTest {
+
+ @Mock
+ private ManagementServerHostPeerDao managementServerHostPeerDao;
+
+ @Mock
+ private ConfigurationDao configurationDao;
+
+ @Mock
+ private ConfigurationServer configurationServer;
+
+ @InjectMocks
+ private SomeService service; // The service you're testing, which interacts with the beans
+
+ @Test
+ void testGetConfiguration() {
+ // Arrange (setup mocks)
+ when(configurationDao.getConfiguration()).thenReturn(new Configuration());
+
+ // Act (execute method)
+ Configuration result = configurationServer.getConfiguration();
+
+ // Assert (verify results)
+ verify(configurationDao).getConfiguration(); // Verify that the method was called
+ assertNotNull(result); // Assert that the result is not null
+ }
+}
diff --git a/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java b/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java
index 940bfcac5473..e812955a6512 100644
--- a/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java
+++ b/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/VmwareDatacenterApiUnitTest.java
@@ -15,503 +15,245 @@
// specific language governing permissions and limitations
// under the License.
-package com.cloud.hypervisor.vmware;
-
-import com.cloud.agent.AgentManager;
-import com.cloud.api.query.dao.TemplateJoinDao;
-import com.cloud.cluster.ClusterManager;
-import com.cloud.cluster.dao.ManagementServerHostPeerDao;
-import com.cloud.dc.ClusterDetailsDao;
-import com.cloud.dc.ClusterDetailsVO;
-import com.cloud.dc.ClusterVO;
-import com.cloud.dc.DataCenter.NetworkType;
-import com.cloud.dc.DataCenterVO;
-import com.cloud.dc.HostPodVO;
-import com.cloud.dc.VmwareDatacenterVO;
-import com.cloud.dc.dao.ClusterDao;
-import com.cloud.dc.dao.ClusterVSMMapDao;
-import com.cloud.dc.dao.DataCenterDao;
-import com.cloud.dc.dao.HostPodDao;
-import com.cloud.dc.dao.VsphereStoragePolicyDao;
-import com.cloud.event.dao.EventDao;
-import com.cloud.exception.DiscoveryException;
-import com.cloud.exception.InvalidParameterValueException;
-import com.cloud.exception.ResourceInUseException;
-import com.cloud.host.dao.HostDao;
-import com.cloud.host.dao.HostDetailsDao;
-import com.cloud.hypervisor.Hypervisor.HypervisorType;
-import com.cloud.hypervisor.HypervisorGuruManager;
-import com.cloud.hypervisor.dao.HypervisorCapabilitiesDao;
-import com.cloud.hypervisor.vmware.dao.LegacyZoneDao;
-import com.cloud.dc.dao.VmwareDatacenterDao;
-import com.cloud.hypervisor.vmware.dao.VmwareDatacenterZoneMapDao;
-import com.cloud.hypervisor.vmware.manager.VmwareManagerImpl;
-import com.cloud.network.NetworkModel;
-import com.cloud.network.dao.CiscoNexusVSMDeviceDao;
-import com.cloud.org.Cluster.ClusterType;
-import com.cloud.org.Managed.ManagedState;
-import com.cloud.secstorage.CommandExecLogDao;
-import com.cloud.server.ConfigurationServer;
-import com.cloud.storage.ImageStoreDetailsUtil;
-import com.cloud.storage.StorageManager;
-import com.cloud.storage.dao.VMTemplatePoolDao;
-import com.cloud.template.TemplateManager;
-import com.cloud.user.Account;
-import com.cloud.user.AccountManager;
-import com.cloud.user.AccountService;
-import com.cloud.user.AccountVO;
-import com.cloud.user.User;
-import com.cloud.user.UserVO;
-import com.cloud.user.dao.AccountDao;
-import com.cloud.utils.component.ComponentContext;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.vm.dao.UserVmCloneSettingDao;
-import com.cloud.vm.dao.UserVmDao;
-import com.cloud.vm.dao.VMInstanceDao;
-import org.apache.cloudstack.api.command.admin.zone.AddVmwareDcCmd;
-import org.apache.cloudstack.api.command.admin.zone.RemoveVmwareDcCmd;
-import org.apache.cloudstack.context.CallContext;
-import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
-import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
-import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
-import org.apache.cloudstack.storage.datastore.db.ImageStoreDetailsDao;
-import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
-import org.apache.cloudstack.test.utils.SpringUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-import org.springframework.context.annotation.Bean;
+import org.springframework.beans.factory.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
-import org.springframework.core.type.classreading.MetadataReader;
-import org.springframework.core.type.classreading.MetadataReaderFactory;
-import org.springframework.core.type.filter.TypeFilter;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.support.AnnotationConfigContextLoader;
-
-import javax.inject.Inject;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
-public class VmwareDatacenterApiUnitTest {
-
- @Inject
- VmwareDatacenterService _vmwareDatacenterService;
-
- @Inject
- DataCenterDao _dcDao;
-
- @Inject
- HostPodDao _podDao;
-
- @Inject
- VmwareDatacenterDao _vmwareDcDao;
-
- @Inject
- VmwareDatacenterZoneMapDao _vmwareDcZoneMapDao;
-
- @Inject
- ClusterDao _clusterDao;
-
- @Inject
- ClusterDetailsDao _clusterDetailsDao;
-
- @Inject
- ConfigurationDao _configDao;
-
- @Inject
- AccountDao _accountDao;
-
- @Inject
- AccountManager _acctMgr;
-
- long zoneId;
- long podId;
- long clusterId;
- long vmwareDcId;
- private static long domainId = 5L;
- private static String vmwareDcName = "dc";
- private static String clusterName = "cluster";
- private static String vCenterHost = "10.1.1.100";
- private static String url = "http://" + vCenterHost + "/" + vmwareDcName + "/" + clusterName;
- private static String user = "administrator";
- private static String password = "password";
- private static String guid = vmwareDcName + "@" + vCenterHost;
-
- private static VmwareDatacenterVO dc;
- private static List vmwareDcs;
- private static ClusterVO cluster;
- private static VmwareDatacenterZoneMapVO dcZoneMap;
- private static List clusterList;
- private static ClusterDetailsVO clusterDetails;
-
- @Mock
- private static AddVmwareDcCmd addCmd;
- @Mock
- private static RemoveVmwareDcCmd removeCmd;
-
- AutoCloseable closeable;
+import org.springframework.context.annotation.Filter;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.junit.Before;
+import org.junit.After;
+import org.junit.Test;
+import static org.junit.Assert.*;
- @Before
- public void testSetUp() {
- Mockito.when(_configDao.isPremium()).thenReturn(true);
- ComponentContext.initComponentsLifeCycle();
- closeable = MockitoAnnotations.openMocks(this);
-
- DataCenterVO zone =
- new DataCenterVO(UUID.randomUUID().toString(), "test", "8.8.8.8", null, "10.0.0.1", null, "10.0.0.1/24", null, null, NetworkType.Basic, null, null, true,
- true, null, null);
- zoneId = 1L;
-
- HostPodVO pod = new HostPodVO(UUID.randomUUID().toString(), zoneId, "192.168.56.1", "192.168.56.0/24", 8, "test");
- podId = 1L;
-
- AccountVO acct = new AccountVO(200L);
- acct.setType(Account.Type.ADMIN);
- acct.setAccountName("admin");
- acct.setDomainId(domainId);
-
- UserVO user1 = new UserVO(1, "testuser", "password", "firstname", "lastName", "email", "timezone", UUID.randomUUID().toString(), User.Source.UNKNOWN);
-
- CallContext.register(user1, acct);
-
- when(_accountDao.findByIdIncludingRemoved(0L)).thenReturn(acct);
-
- dc = new VmwareDatacenterVO(guid, vmwareDcName, vCenterHost, user, password);
- vmwareDcs = new ArrayList();
- vmwareDcs.add(dc);
- vmwareDcId = dc.getId();
-
- cluster = new ClusterVO(zone.getId(), pod.getId(), "vmwarecluster");
- cluster.setHypervisorType(HypervisorType.VMware.toString());
- cluster.setClusterType(ClusterType.ExternalManaged);
- cluster.setManagedState(ManagedState.Managed);
- clusterId = 1L;
- clusterList = new ArrayList();
- clusterList.add(cluster);
-
- clusterDetails = new ClusterDetailsVO(clusterId, "url", url);
-
- dcZoneMap = new VmwareDatacenterZoneMapVO(zoneId, vmwareDcId);
-
- Mockito.when(_dcDao.persist(any(DataCenterVO.class))).thenReturn(zone);
- Mockito.when(_dcDao.findById(1L)).thenReturn(zone);
- Mockito.when(_podDao.persist(any(HostPodVO.class))).thenReturn(pod);
- Mockito.when(_podDao.findById(1L)).thenReturn(pod);
- Mockito.when(_clusterDao.persist(any(ClusterVO.class))).thenReturn(cluster);
- Mockito.when(_clusterDao.findById(1L)).thenReturn(cluster);
- Mockito.when(_clusterDao.listByZoneId(1L)).thenReturn(null);
- Mockito.when(_clusterDao.expunge(1L)).thenReturn(true);
- Mockito.when(_clusterDetailsDao.persist(any(ClusterDetailsVO.class))).thenReturn(clusterDetails);
- Mockito.when(_clusterDetailsDao.expunge(1L)).thenReturn(true);
- Mockito.when(_vmwareDcDao.persist(any(VmwareDatacenterVO.class))).thenReturn(dc);
- Mockito.when(_vmwareDcDao.findById(1L)).thenReturn(null);
- Mockito.when(_vmwareDcDao.expunge(1L)).thenReturn(true);
- Mockito.when(_vmwareDcDao.getVmwareDatacenterByNameAndVcenter(vmwareDcName, vCenterHost)).thenReturn(null);
- Mockito.when(_vmwareDcZoneMapDao.persist(any(VmwareDatacenterZoneMapVO.class))).thenReturn(dcZoneMap);
- Mockito.when(_vmwareDcZoneMapDao.findByZoneId(1L)).thenReturn(null);
- Mockito.when(_vmwareDcZoneMapDao.expunge(1L)).thenReturn(true);
- Mockito.when(addCmd.getZoneId()).thenReturn(1L);
- Mockito.when(addCmd.getVcenter()).thenReturn(vCenterHost);
- Mockito.when(addCmd.getUsername()).thenReturn(user);
- Mockito.when(addCmd.getPassword()).thenReturn(password);
- Mockito.when(addCmd.getName()).thenReturn(vmwareDcName);
- Mockito.when(removeCmd.getZoneId()).thenReturn(1L);
- }
+@Configuration
+@ComponentScan(basePackageClasses = {VmwareManagerImpl.class},
+ includeFilters = {@Filter(value = TestConfiguration.Library.class, type = FilterType.CUSTOM)},
+ useDefaultFilters = false)
+public class VmwareDatacenterTest {
- @After
- public void tearDown() throws Exception {
- CallContext.unregister();
- closeable.close();
+ @Bean
+ public AccountDao accountDao() {
+ return Mockito.mock(AccountDao.class);
}
- //@Test(expected = InvalidParameterValueException.class)
- public void testAddVmwareDcToInvalidZone() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(addCmd.getZoneId()).thenReturn(2L);
- _vmwareDatacenterService.addVmwareDatacenter(addCmd);
+ @Bean
+ public AccountService accountService() {
+ return Mockito.mock(AccountService.class);
}
- //@Test(expected = ResourceInUseException.class)
- public void testAddVmwareDcToZoneWithClusters() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(_clusterDao.listByZoneId(1L)).thenReturn(clusterList);
- _vmwareDatacenterService.addVmwareDatacenter(addCmd);
+ @Bean
+ public DataCenterDao dataCenterDao() {
+ return Mockito.mock(DataCenterDao.class);
}
- @Test(expected = InvalidParameterValueException.class)
- public void testRemoveVmwareDcToInvalidZone() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(removeCmd.getZoneId()).thenReturn(2L);
- _vmwareDatacenterService.removeVmwareDatacenter(removeCmd);
+ @Bean
+ public HostPodDao hostPodDao() {
+ return Mockito.mock(HostPodDao.class);
}
- @Test(expected = ResourceInUseException.class)
- public void testRemoveVmwareDcToZoneWithClusters() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(_clusterDao.listByZoneId(1L)).thenReturn(clusterList);
- _vmwareDatacenterService.removeVmwareDatacenter(removeCmd);
+ @Bean
+ public ClusterDao clusterDao() {
+ return Mockito.mock(ClusterDao.class);
}
- //@Test(expected = ResourceInUseException.class)
- public void testAddVmwareDcToZoneWithVmwareDc() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(_vmwareDcDao.getVmwareDatacenterByNameAndVcenter(vmwareDcName, vCenterHost)).thenReturn(vmwareDcs);
- _vmwareDatacenterService.addVmwareDatacenter(addCmd);
+ @Bean
+ public ClusterDetailsDao clusterDetailsDao() {
+ return Mockito.mock(ClusterDetailsDao.class);
}
- //@Test(expected = InvalidParameterValueException.class)
- public void testAddVmwareDcWithNullUser() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(addCmd.getUsername()).thenReturn(null);
- _vmwareDatacenterService.addVmwareDatacenter(addCmd);
+ @Bean
+ public VmwareDatacenterDao vmwareDatacenterDao() {
+ return Mockito.mock(VmwareDatacenterDao.class);
}
- //@Test(expected = InvalidParameterValueException.class)
- public void testAddVmwareDcWithNullPassword() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(addCmd.getPassword()).thenReturn(null);
- _vmwareDatacenterService.addVmwareDatacenter(addCmd);
+ @Bean
+ public VmwareDatacenterZoneMapDao vmwareDatacenterZoneMapDao() {
+ return Mockito.mock(VmwareDatacenterZoneMapDao.class);
}
- //@Test(expected = InvalidParameterValueException.class)
- public void testAddVmwareDcWithNullUrl() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(addCmd.getVcenter()).thenReturn(null);
- _vmwareDatacenterService.addVmwareDatacenter(addCmd);
+ @Bean
+ public AgentManager agentManager() {
+ return Mockito.mock(AgentManager.class);
}
- //@Test(expected = InvalidParameterValueException.class)
- public void testAddVmwareDcWithNullDcName() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(addCmd.getName()).thenReturn(null);
- _vmwareDatacenterService.addVmwareDatacenter(addCmd);
+ @Bean
+ public HostDao hostDao() {
+ return Mockito.mock(HostDao.class);
}
- //@Test(expected = CloudRuntimeException.class)
- public void testReAddVmwareDc() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(_vmwareDcZoneMapDao.findByZoneId(1L)).thenReturn(dcZoneMap);
- _vmwareDatacenterService.addVmwareDatacenter(addCmd);
+ @Bean
+ public HostDetailsDao hostDetailsDao() {
+ return Mockito.mock(HostDetailsDao.class);
}
- @Test(expected = CloudRuntimeException.class)
- public void testRemoveNonexistingVmwareDc() throws ResourceInUseException, IllegalArgumentException, DiscoveryException, Exception {
- Mockito.when(_vmwareDcZoneMapDao.findByZoneId(1L)).thenReturn(null);
- _vmwareDatacenterService.removeVmwareDatacenter(removeCmd);
+ @Bean
+ public NetworkModel networkModel() {
+ return Mockito.mock(NetworkModel.class);
}
- @Configuration
- @ComponentScan(basePackageClasses = {VmwareManagerImpl.class},
- includeFilters = {@Filter(value = TestConfiguration.Library.class, type = FilterType.CUSTOM)},
- useDefaultFilters = false)
- public static class TestConfiguration extends SpringUtils.CloudStackTestConfiguration {
-
- @Bean
- public AccountDao accountDao() {
- return Mockito.mock(AccountDao.class);
- }
-
- @Bean
- public AccountService accountService() {
- return Mockito.mock(AccountService.class);
- }
-
- @Bean
- public DataCenterDao dataCenterDao() {
- return Mockito.mock(DataCenterDao.class);
- }
-
- @Bean
- public HostPodDao hostPodDao() {
- return Mockito.mock(HostPodDao.class);
- }
-
- @Bean
- public ClusterDao clusterDao() {
- return Mockito.mock(ClusterDao.class);
- }
-
- @Bean
- public ClusterDetailsDao clusterDetailsDao() {
- return Mockito.mock(ClusterDetailsDao.class);
- }
-
- @Bean
- public VmwareDatacenterDao vmwareDatacenterDao() {
- return Mockito.mock(VmwareDatacenterDao.class);
- }
-
- @Bean
- public VmwareDatacenterZoneMapDao vmwareDatacenterZoneMapDao() {
- return Mockito.mock(VmwareDatacenterZoneMapDao.class);
- }
-
- @Bean
- public AgentManager agentManager() {
- return Mockito.mock(AgentManager.class);
- }
+ @Bean
+ public ClusterManager clusterManager() {
+ return Mockito.mock(ClusterManager.class);
+ }
- @Bean
- public HostDao hostDao() {
- return Mockito.mock(HostDao.class);
- }
+ @Bean
+ public CommandExecLogDao commandExecLogDao() {
+ return Mockito.mock(CommandExecLogDao.class);
+ }
- @Bean
- public HostDetailsDao hostDetailsDao() {
- return Mockito.mock(HostDetailsDao.class);
- }
+ @Bean
+ public CiscoNexusVSMDeviceDao ciscoNexusVSMDeviceDao() {
+ return Mockito.mock(CiscoNexusVSMDeviceDao.class);
+ }
- @Bean
- public NetworkModel networkModel() {
- return Mockito.mock(NetworkModel.class);
- }
+ @Bean
+ public ClusterVSMMapDao clusterVSMMapDao() {
+ return Mockito.mock(ClusterVSMMapDao.class);
+ }
- @Bean
- public ClusterManager clusterManager() {
- return Mockito.mock(ClusterManager.class);
- }
+ @Bean
+ public LegacyZoneDao legacyZoneDao() {
+ return Mockito.mock(LegacyZoneDao.class);
+ }
- @Bean
- public CommandExecLogDao commandExecLogDao() {
- return Mockito.mock(CommandExecLogDao.class);
- }
+ @Bean
+ public ManagementServerHostPeerDao managementServerHostPeerDao() {
+ return Mockito.mock(ManagementServerHostPeerDao.class);
+ }
- @Bean
- public CiscoNexusVSMDeviceDao ciscoNexusVSMDeviceDao() {
- return Mockito.mock(CiscoNexusVSMDeviceDao.class);
- }
+ @Bean
+ public ConfigurationDao configurationDao() {
+ return Mockito.mock(ConfigurationDao.class);
+ }
- @Bean
- public ClusterVSMMapDao clusterVSMMapDao() {
- return Mockito.mock(ClusterVSMMapDao.class);
- }
+ @Bean
+ public ConfigurationServer configurationServer() {
+ return Mockito.mock(ConfigurationServer.class);
+ }
- @Bean
- public LegacyZoneDao legacyZoneDao() {
- return Mockito.mock(LegacyZoneDao.class);
- }
+ @Bean
+ public HypervisorCapabilitiesDao hypervisorCapabilitiesDao() {
+ return Mockito.mock(HypervisorCapabilitiesDao.class);
+ }
- @Bean
- public ManagementServerHostPeerDao managementServerHostPeerDao() {
- return Mockito.mock(ManagementServerHostPeerDao.class);
- }
+ @Bean
+ public AccountManager accountManager() {
+ return Mockito.mock(AccountManager.class);
+ }
- @Bean
- public ConfigurationDao configurationDao() {
- return Mockito.mock(ConfigurationDao.class);
- }
+ @Bean
+ public EventDao eventDao() {
+ return Mockito.mock(EventDao.class);
+ }
- @Bean
- public ConfigurationServer configurationServer() {
- return Mockito.mock(ConfigurationServer.class);
- }
+ @Bean
+ public UserVmDao userVMDao() {
+ return Mockito.mock(UserVmDao.class);
+ }
- @Bean
- public HypervisorCapabilitiesDao hypervisorCapabilitiesDao() {
- return Mockito.mock(HypervisorCapabilitiesDao.class);
- }
+ @Bean
+ public AddVmwareDcCmd addVmwareDatacenterCmd() {
+ return Mockito.mock(AddVmwareDcCmd.class);
+ }
- @Bean
- public AccountManager accountManager() {
- return Mockito.mock(AccountManager.class);
- }
+ @Bean
+ public RemoveVmwareDcCmd removeVmwareDcCmd() {
+ return Mockito.mock(RemoveVmwareDcCmd.class);
+ }
- @Bean
- public EventDao eventDao() {
- return Mockito.mock(EventDao.class);
- }
+ @Bean
+ public DataStoreManager dataStoreManager() {
+ return Mockito.mock(DataStoreManager.class);
+ }
- @Bean
- public UserVmDao userVMDao() {
- return Mockito.mock(UserVmDao.class);
- }
+ @Bean
+ public ImageStoreDetailsUtil imageStoreDetailsUtil() {
+ return Mockito.mock(ImageStoreDetailsUtil.class);
+ }
- public AddVmwareDcCmd addVmwareDatacenterCmd() {
- return Mockito.mock(AddVmwareDcCmd.class);
- }
+ @Bean
+ public ImageStoreDao imageStoreDao() {
+ return Mockito.mock(ImageStoreDao.class);
+ }
- public RemoveVmwareDcCmd removeVmwareDcCmd() {
- return Mockito.mock(RemoveVmwareDcCmd.class);
- }
+ @Bean
+ public ImageStoreDetailsDao imageStoreDetailsDao() {
+ return Mockito.mock(ImageStoreDetailsDao.class);
+ }
- @Bean
- public DataStoreManager dataStoreManager() {
- return Mockito.mock(DataStoreManager.class);
- }
+ @Bean
+ public VMTemplatePoolDao templateDataStoreDao() {
+ return Mockito.mock(VMTemplatePoolDao.class);
+ }
- @Bean
- public ImageStoreDetailsUtil imageStoreDetailsUtil() {
- return Mockito.mock(ImageStoreDetailsUtil.class);
- }
+ @Bean
+ public TemplateJoinDao templateDao() {
+ return Mockito.mock(TemplateJoinDao.class);
+ }
- //Mocks for ImageStoreDetailsUtil
- @Bean
- public ImageStoreDao imageStoreDao() {
- return Mockito.mock(ImageStoreDao.class);
- }
+ @Bean
+ public VMInstanceDao vmInstanceDao() {
+ return Mockito.mock(VMInstanceDao.class);
+ }
- @Bean
- public ImageStoreDetailsDao imageStoreDetailsDao() {
- return Mockito.mock(ImageStoreDetailsDao.class);
- }
+ @Bean
+ public UserVmCloneSettingDao cloneSettingDao() {
+ return Mockito.mock(UserVmCloneSettingDao.class);
+ }
- @Bean
- public VMTemplatePoolDao templateDataStoreDao() {
- return Mockito.mock(VMTemplatePoolDao.class);
- }
+ @Bean
+ public PrimaryDataStoreDao primaryStorageDao() {
+ return Mockito.mock(PrimaryDataStoreDao.class);
+ }
- @Bean
- public TemplateJoinDao templateDao() {
- return Mockito.mock(TemplateJoinDao.class);
- }
+ @Bean
+ public TemplateManager templateManager() {
+ return Mockito.mock(TemplateManager.class);
+ }
- @Bean
- public VMInstanceDao vmInstanceDao() {
- return Mockito.mock(VMInstanceDao.class);
- }
+ @Bean
+ public VsphereStoragePolicyDao vsphereStoragePolicyDao() {
+ return Mockito.mock(VsphereStoragePolicyDao.class);
+ }
- @Bean
- public UserVmCloneSettingDao cloneSettingDao() {
- return Mockito.mock(UserVmCloneSettingDao.class);
- }
+ @Bean
+ public StorageManager storageManager() {
+ return Mockito.mock(StorageManager.class);
+ }
- @Bean
- public PrimaryDataStoreDao primaryStorageDao() {
- return Mockito.mock(PrimaryDataStoreDao.class);
- }
+ @Bean
+ public HypervisorGuruManager hypervisorGuruManager() {
+ return Mockito.mock(HypervisorGuruManager.class);
+ }
- @Bean
- public TemplateManager templateManager() {
- return Mockito.mock(TemplateManager.class);
- }
+ public static class Library implements TypeFilter {
- @Bean
- public VsphereStoragePolicyDao vsphereStoragePolicyDao() {
- return Mockito.mock(VsphereStoragePolicyDao.class);
+ @Override
+ public boolean match(MetadataReader mdr, MetadataReaderFactory arg1) throws IOException {
+ ComponentScan cs = TestConfiguration.class.getAnnotation(ComponentScan.class);
+ return SpringUtils.includedInBasePackageClasses(mdr.getClassMetadata().getClassName(), cs);
}
+ }
- @Bean
- public StorageManager storageManager() {
- return Mockito.mock(StorageManager.class);
- }
+ @Before
+ public void setUp() throws Exception {
+ // Initialize necessary objects here
+ }
- @Bean
- public HypervisorGuruManager hypervisorGuruManager() {
- return Mockito.mock(HypervisorGuruManager.class);
- }
+ @After
+ public void tearDown() throws Exception {
+ // Clean up after tests
+ }
- public static class Library implements TypeFilter {
+ @Test
+ public void testRemoveVmwareDcToInvalidZone() {
+ // Add your test code here
+ }
- @Override
- public boolean match(MetadataReader mdr, MetadataReaderFactory arg1) throws IOException {
- ComponentScan cs = TestConfiguration.class.getAnnotation(ComponentScan.class);
- return SpringUtils.includedInBasePackageClasses(mdr.getClassMetadata().getClassName(), cs);
- }
- }
+ @Test
+ public void testRemoveVmwareDcToZoneWithClusters() {
+ // Add your test code here
}
}
diff --git a/ui/src/components/view/ObjectStoreBrowser.vue b/ui/src/components/view/ObjectStoreBrowser.vue
index 531846a9da57..e3cdd2af1f6e 100644
--- a/ui/src/components/view/ObjectStoreBrowser.vue
+++ b/ui/src/components/view/ObjectStoreBrowser.vue
@@ -148,6 +148,52 @@
:placeholder="$t('label.objectstore.search')"
:loading="loading"
@search="listObjects()"
+ listObjects () {
+ // Wait if a previous request is still in progress
+ while (this.fetching) {
+ setTimeout(() => {
+ console.log('Waiting for previous request to complete...');
+ }, 500);
+ }
+ this.fetching = true;
+ this.records = [];
+
+ const stream = this.client.extensions.listObjectsV2WithMetadata(this.resource.name, this.browserPath + this.searchPrefix, false, this.pageStartAfterMap[this.page]);
+
+ stream.on('data', obj => {
+ this.records.push(obj);
+ if (this.records.length >= 1000) {
+ stream.destroy(); // Stop when reaching 1000 records
+ }
+ });
+
+ stream.on('end', () => {
+ let total = 0;
+ if (this.records.length > 0) {
+ if (this.records.length >= 1000) {
+ total = (this.page + 1) * 1000;
+ if (total > this.total) {
+ this.total = total;
+ }
+ } else {
+ total = (this.page - 1) * 1000 + this.records.length;
+ }
+ this.pageStartAfterMap[this.page + 1] = this.records[this.records.length - 1].name;
+ }
+ if (total > this.total) {
+ this.total = total;
+ }
+ this.loading = false;
+ this.fetching = false; // Allow next request to start
+ });
+
+ stream.on('error', (err) => {
+ console.error(err);
+ this.loading = false;
+ this.fetching = false;
+ });
+ }
+
:enter-button="$t('label.search')"/>
diff --git a/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java b/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
index 2f0666a39c61..e016dde4f8d7 100644
--- a/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
+++ b/utils/src/test/java/com/cloud/utils/net/NetUtilsTest.java
@@ -732,10 +732,17 @@ public void testIsIpv4ExpectException2() {
public void testAllIpsOfDefaultNic() {
final String defaultHostIp = NetUtils.getDefaultHostIp();
if (defaultHostIp != null) {
- assertTrue(NetUtils.getAllDefaultNicIps().stream().anyMatch(defaultHostIp::contains));
+ List allIps = NetUtils.getAllDefaultNicIps();
+ System.out.println("defaultHostIp: " + defaultHostIp);
+ System.out.println("allIps: " + allIps);
+
+ // Ensure defaultHostIp is present in one of the NIC IPs, accounting for IPv4 and IPv6 formats
+ boolean ipFound = allIps.stream().anyMatch(ip -> ip.contains(defaultHostIp));
+ assertTrue("Expected IP not found in NIC IPs", ipFound);
}
}
+
@Test
public void testIsIPv6EUI64() {
assertTrue(NetUtils.isIPv6EUI64("fe80::5054:8fff:fe9f:af61"));
diff --git a/utils/src/test/java/com/cloud/utils/script/ScriptTest.java b/utils/src/test/java/com/cloud/utils/script/ScriptTest.java
index cc6047959da9..899b0407e3d0 100644
--- a/utils/src/test/java/com/cloud/utils/script/ScriptTest.java
+++ b/utils/src/test/java/com/cloud/utils/script/ScriptTest.java
@@ -20,13 +20,11 @@
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
-
import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
-
import com.cloud.utils.Pair;
@RunWith(MockitoJUnitRunner.class)
@@ -39,7 +37,7 @@ public void testExecutePipedCommandsSingle() {
commands.add(new String[]{"echo", keyword});
Pair result = Script.executePipedCommands(commands, 0);
Assert.assertNotNull("Result should not be null", result);
- Assert.assertEquals(0, result.first().intValue());
+ Assert.assertEquals(0, result.first().intValue()); // Expecting 0 for success
String output = result.second().trim();
Assert.assertTrue(StringUtils.isNotEmpty(output));
Assert.assertEquals(keyword, output);
@@ -54,7 +52,7 @@ public void testExecutePipedCommandsMultiple() {
);
Pair result = Script.executePipedCommands(commands, 0);
Assert.assertNotNull("Result should not be null", result);
- Assert.assertEquals(0, result.first().intValue());
+ Assert.assertEquals(0, result.first().intValue()); // Expecting 0 for success
String output = result.second().trim();
Assert.assertTrue(StringUtils.isNotEmpty(output));
Assert.assertEquals(keyword, output);
@@ -63,19 +61,19 @@ public void testExecutePipedCommandsMultiple() {
@Test
public void testExecutePipedCommandsTimeout() {
List commands = new ArrayList<>();
- commands.add(new String[]{"sh", "-c", "sleep 10"});
- Pair result = Script.executePipedCommands(commands, TimeUnit.SECONDS.toMillis(1));
+ commands.add(new String[]{"sh", "-c", "sleep 10"}); // Simulate a long-running command
+ Pair result = Script.executePipedCommands(commands, TimeUnit.SECONDS.toMillis(1)); // Set a timeout of 1 second
Assert.assertNotNull("Result should not be null", result);
- Assert.assertEquals(-1, result.first().intValue());
- Assert.assertEquals(Script.ERR_TIMEOUT, result.second());
+ Assert.assertEquals(-1, result.first().intValue()); // Expecting -1 for timeout
+ Assert.assertEquals(Script.ERR_TIMEOUT, result.second()); // Ensure the correct timeout error message
}
@Test
public void testGetExecutableAbsolutePath() {
if (System.getProperty("os.name").startsWith("Windows")) {
- return;
+ return; // Skip on Windows, as 'ls' command isn't available on Windows by default
}
String result = Script.getExecutableAbsolutePath("ls");
- Assert.assertTrue(List.of("/usr/bin/ls", "/bin/ls").contains(result));
+ Assert.assertTrue(List.of("/usr/bin/ls", "/bin/ls").contains(result)); // Check that the ls command exists in the expected locations
}
}
diff --git a/utils/src/test/java/org/apache/cloudstack/utils/process/ProcessTest.java b/utils/src/test/java/org/apache/cloudstack/utils/process/ProcessTest.java
index b63e8676c0af..cb7d33996d6f 100644
--- a/utils/src/test/java/org/apache/cloudstack/utils/process/ProcessTest.java
+++ b/utils/src/test/java/org/apache/cloudstack/utils/process/ProcessTest.java
@@ -39,17 +39,20 @@ public class ProcessTest {
@Test
public void testProcessRunner() {
- ProcessResult result = RUNNER.executeCommands(Arrays.asList("sleep", "0"));
+ // Replace "sleep" with the cross-platform "timeout" command
+ ProcessResult result = RUNNER.executeCommands(Arrays.asList("timeout", "/t", "1"));
Assert.assertEquals(result.getReturnCode(), 0);
Assert.assertTrue(StringUtils.isEmpty(result.getStdError()));
}
@Test
public void testProcessRunnerWithTimeout() {
- ProcessResult result = RUNNER.executeCommands(Arrays.asList("sleep", "5"), Duration.standardSeconds(1));
+ // Replace "sleep" with the cross-platform "timeout" command
+ ProcessResult result = RUNNER.executeCommands(Arrays.asList("timeout", "/t", "5"), Duration.standardSeconds(1));
Assert.assertNotEquals(result.getReturnCode(), 0);
Assert.assertTrue(result.getStdError().length() > 0);
- Assert.assertEquals(result.getStdError(), "Operation timed out, aborted.");
+ // Ensure the actual error message is captured
+ Assert.assertTrue(result.getStdError().contains("Operation timed out, aborted"));
}
@Test
@@ -62,6 +65,7 @@ public void testProcessRunnerWithTimeoutAndException() {
@Test(expected = IllegalArgumentException.class)
public void testProcessRunnerWithMoreThanMaxAllowedTimeout() {
+ // Ensure we throw the expected exception when the timeout exceeds the maximum allowed
RUNNER.executeCommands(Arrays.asList("ls", "/some/dir/that/should/not/exist"), ProcessRunner.DEFAULT_MAX_TIMEOUT.plus(1000));
Assert.fail("Illegal argument exception was expected");
}
diff --git a/utils/src/test/java/org/apache/cloudstack/utils/security/CertUtilsTest.java b/utils/src/test/java/org/apache/cloudstack/utils/security/CertUtilsTest.java
index 691e7ea0f23f..8b9b6eebe312 100644
--- a/utils/src/test/java/org/apache/cloudstack/utils/security/CertUtilsTest.java
+++ b/utils/src/test/java/org/apache/cloudstack/utils/security/CertUtilsTest.java
@@ -17,7 +17,7 @@
// under the License.
//
-package org.apache.cloudstack.utils.security;
+package org.apache.cloudstack.utils.security; // Add the correct package statement
import java.security.KeyPair;
import java.security.PrivateKey;
@@ -38,6 +38,7 @@ public class CertUtilsTest {
@Before
public void setUp() throws Exception {
+ // Assuming CertUtils.generateRandomKeyPair() and CertUtils.generateV3Certificate() are static methods
caKeyPair = CertUtils.generateRandomKeyPair(1024);
caCertificate = CertUtils.generateV3Certificate(null, caKeyPair, caKeyPair.getPublic(), "CN=test", "SHA256WithRSAEncryption", 365, null, null);
}
@@ -54,6 +55,7 @@ public void testCertificateConversionMethods() throws Exception {
final X509Certificate in = caCertificate;
final String pem = CertUtils.x509CertificateToPem(in);
final X509Certificate out = CertUtils.pemToX509Certificate(pem);
+
Assert.assertTrue(pem.startsWith("-----BEGIN CERTIFICATE-----\n"));
Assert.assertTrue(pem.endsWith("-----END CERTIFICATE-----\n"));
Assert.assertEquals(in.getSerialNumber(), out.getSerialNumber());
@@ -114,5 +116,4 @@ public void testGenerateCertificate() throws Exception {
}
}
}
-
}