server: optimize DnsProviderManagerImplTest
diff --git a/server/src/test/java/org/apache/cloudstack/dns/DnsProviderManagerImplTest.java b/server/src/test/java/org/apache/cloudstack/dns/DnsProviderManagerImplTest.java index b4da564..f70d591 100644 --- a/server/src/test/java/org/apache/cloudstack/dns/DnsProviderManagerImplTest.java +++ b/server/src/test/java/org/apache/cloudstack/dns/DnsProviderManagerImplTest.java
@@ -42,11 +42,20 @@ import java.util.List; import java.util.Map; +import org.apache.cloudstack.acl.SecurityChecker; +import org.apache.cloudstack.api.ApiConstants; +import org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd; +import org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd; +import org.apache.cloudstack.api.command.user.dns.CreateDnsRecordCmd; import org.apache.cloudstack.api.command.user.dns.CreateDnsZoneCmd; +import org.apache.cloudstack.api.command.user.dns.DeleteDnsRecordCmd; import org.apache.cloudstack.api.command.user.dns.DeleteDnsServerCmd; import org.apache.cloudstack.api.command.user.dns.DisassociateDnsZoneFromNetworkCmd; import org.apache.cloudstack.api.command.user.dns.ListDnsRecordsCmd; +import org.apache.cloudstack.api.command.user.dns.ListDnsServersCmd; +import org.apache.cloudstack.api.command.user.dns.ListDnsZonesCmd; +import org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd; import org.apache.cloudstack.api.command.user.dns.UpdateDnsZoneCmd; import org.apache.cloudstack.api.response.DnsRecordResponse; import org.apache.cloudstack.api.response.DnsServerResponse; @@ -83,6 +92,8 @@ import org.springframework.test.util.ReflectionTestUtils; import com.cloud.domain.dao.DomainDao; +import com.cloud.event.ActionEventUtils; +import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.PermissionDeniedException; import com.cloud.network.dao.NetworkDao; @@ -90,9 +101,13 @@ import com.cloud.user.Account; import com.cloud.user.AccountManager; import com.cloud.user.AccountVO; +import com.cloud.user.dao.AccountDao; +import com.cloud.utils.Pair; +import com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn; import com.cloud.utils.db.Transaction; import com.cloud.utils.db.TransactionCallback; import com.cloud.utils.exception.CloudRuntimeException; +import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicDetailsDao; @@ -174,7 +189,7 @@ manager.setDnsProviders(Collections.singletonList(dnsProviderMock)); doNothing().when(accountMgr).checkAccess(any(Account.class), - nullable(org.apache.cloudstack.acl.SecurityChecker.AccessType.class), eq(true), any()); + nullable(SecurityChecker.AccessType.class), eq(true), any()); when(accountMgr.isRootAdmin(callerMock.getId())).thenReturn(true); } @@ -426,7 +441,7 @@ when(cmd.getCleanup()).thenReturn(true); when(dnsServerDao.findById(SERVER_ID)).thenReturn(serverVO); doNothing().when(accountMgr).checkAccess(any(Account.class), - nullable(org.apache.cloudstack.acl.SecurityChecker.AccessType.class), eq(true), any()); + nullable(SecurityChecker.AccessType.class), eq(true), any()); List<Long> zones = Collections.singletonList(ZONE_ID); when(dnsZoneDao.findDnsZoneIdsByServerId(SERVER_ID)).thenReturn(zones); @@ -453,7 +468,7 @@ when(dnsZoneDao.findById(ZONE_ID)).thenReturn(zoneVO); when(dnsServerDao.findById(anyLong())).thenReturn(serverVO); doNothing().when(accountMgr).checkAccess(any(Account.class), - nullable(org.apache.cloudstack.acl.SecurityChecker.AccessType.class), eq(true), any()); + nullable(SecurityChecker.AccessType.class), eq(true), any()); when(dnsZoneNetworkMapDao.findByZoneId(ZONE_ID)).thenReturn(null); when(dnsZoneDao.remove(ZONE_ID)).thenReturn(true); @@ -617,8 +632,8 @@ Mockito.doReturn(true).when(serverVO).getPublicServer(); when(serverOwner.getDomainId()).thenReturn(20L); when(callerMock.getDomainId()).thenReturn(DOMAIN_ID); - ReflectionTestUtils.setField(manager, "accountDao", Mockito.mock(com.cloud.user.dao.AccountDao.class)); - com.cloud.user.dao.AccountDao accountDaoMock = (com.cloud.user.dao.AccountDao) ReflectionTestUtils + ReflectionTestUtils.setField(manager, "accountDao", Mockito.mock(AccountDao.class)); + AccountDao accountDaoMock = (AccountDao) ReflectionTestUtils .getField(manager, "accountDao"); when(accountDaoMock.findByIdIncludingRemoved(ACCOUNT_ID)).thenReturn(serverOwner); when(domainDao.isChildDomain(20L, DOMAIN_ID)).thenReturn(false); @@ -661,8 +676,7 @@ @Test(expected = InvalidParameterValueException.class) public void testAssociateZoneToNetworkZoneNotFound() { - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd.class); + AssociateDnsZoneToNetworkCmd cmd = mock(AssociateDnsZoneToNetworkCmd.class); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(dnsZoneDao.findById(ZONE_ID)).thenReturn(null); manager.associateZoneToNetwork(cmd); @@ -670,8 +684,7 @@ @Test(expected = InvalidParameterValueException.class) public void testAssociateZoneToNetworkNetworkNotFound() { - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd.class); + AssociateDnsZoneToNetworkCmd cmd = mock(AssociateDnsZoneToNetworkCmd.class); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(cmd.getNetworkId()).thenReturn(NETWORK_ID); when(dnsZoneDao.findById(ZONE_ID)).thenReturn(zoneVO); @@ -682,8 +695,7 @@ @Test(expected = CloudRuntimeException.class) public void testAssociateZoneToNetworkNonSharedNetwork() { - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd.class); + AssociateDnsZoneToNetworkCmd cmd = mock(AssociateDnsZoneToNetworkCmd.class); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(cmd.getNetworkId()).thenReturn(NETWORK_ID); when(dnsZoneDao.findById(ZONE_ID)).thenReturn(zoneVO); @@ -696,8 +708,7 @@ @Test public void testAssociateZoneToNetworkSuccess() { - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd.class); + AssociateDnsZoneToNetworkCmd cmd = mock(AssociateDnsZoneToNetworkCmd.class); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(cmd.getNetworkId()).thenReturn(NETWORK_ID); @@ -717,8 +728,7 @@ @Test(expected = InvalidParameterValueException.class) public void testAssociateZoneToNetworkAlreadyAssociated() { - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AssociateDnsZoneToNetworkCmd.class); + AssociateDnsZoneToNetworkCmd cmd = mock(AssociateDnsZoneToNetworkCmd.class); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(cmd.getNetworkId()).thenReturn(NETWORK_ID); when(dnsZoneDao.findById(ZONE_ID)).thenReturn(zoneVO); @@ -733,8 +743,7 @@ @Test public void testCreateDnsRecordSuccess() throws Exception { - org.apache.cloudstack.api.command.user.dns.CreateDnsRecordCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.CreateDnsRecordCmd.class); + CreateDnsRecordCmd cmd = mock(CreateDnsRecordCmd.class); when(cmd.getName()).thenReturn("www"); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(cmd.getType()).thenReturn(DnsRecord.RecordType.A); @@ -750,8 +759,7 @@ @Test public void testDeleteDnsRecordSuccess() throws Exception { - org.apache.cloudstack.api.command.user.dns.DeleteDnsRecordCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.DeleteDnsRecordCmd.class); + DeleteDnsRecordCmd cmd = mock(DeleteDnsRecordCmd.class); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(cmd.getName()).thenReturn("www"); when(dnsZoneDao.findById(ZONE_ID)).thenReturn(zoneVO); @@ -771,8 +779,7 @@ @Test public void testAddDnsServerSuccess() throws Exception { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(cmd.getUrl()).thenReturn("http://192.0.2.1:8081"); when(cmd.getProvider()).thenReturn(DnsProviderType.PowerDNS); when(dnsServerDao.findByUrlAndAccount(anyString(), anyLong())).thenReturn(null); @@ -785,11 +792,10 @@ @Test public void testListDnsServers() { - org.apache.cloudstack.api.command.user.dns.ListDnsServersCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.ListDnsServersCmd.class); + ListDnsServersCmd cmd = mock(ListDnsServersCmd.class); when(domainDao.getDomainParentIds(anyLong())).thenReturn(Collections.emptySet()); List<DnsServerVO> servers = Collections.singletonList(serverVO); - com.cloud.utils.Pair<List<DnsServerVO>, Integer> searchPair = new com.cloud.utils.Pair<>(servers, 1); + Pair<List<DnsServerVO>, Integer> searchPair = new Pair<>(servers, 1); when(dnsServerDao.searchDnsServer(any(), anyLong(), any(), any(), any(), any())).thenReturn(searchPair); DnsServerJoinVO joinVO = mock(DnsServerJoinVO.class); @@ -803,8 +809,7 @@ @Test public void testUpdateDnsServer() throws Exception { - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd.class); + UpdateDnsServerCmd cmd = mock(UpdateDnsServerCmd.class); when(cmd.getId()).thenReturn(SERVER_ID); when(cmd.getName()).thenReturn("updated-name"); when(dnsServerDao.findById(SERVER_ID)).thenReturn(serverVO); @@ -816,13 +821,12 @@ @Test public void testListDnsZones() { - org.apache.cloudstack.api.command.user.dns.ListDnsZonesCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.ListDnsZonesCmd.class); + ListDnsZonesCmd cmd = mock(ListDnsZonesCmd.class); when(cmd.getId()).thenReturn(null); when(cmd.getDnsServerId()).thenReturn(null); when(dnsServerDao.listDnsServerIdsByAccountId(anyLong())).thenReturn(Collections.emptyList()); List<DnsZoneVO> zones = Collections.singletonList(zoneVO); - com.cloud.utils.Pair<List<DnsZoneVO>, Integer> searchPair = new com.cloud.utils.Pair<>(zones, 1); + Pair<List<DnsZoneVO>, Integer> searchPair = new Pair<>(zones, 1); when(dnsZoneDao.searchZones(any(), anyLong(), any(), any(), any(), any())).thenReturn(searchPair); DnsZoneJoinVO joinVO = mock(DnsZoneJoinVO.class); @@ -834,8 +838,7 @@ @Test(expected = InvalidParameterValueException.class) public void testAddDnsServerAlreadyExists() { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(cmd.getUrl()).thenReturn("http://192.0.2.1:8081"); when(dnsServerDao.findByUrlAndAccount(anyString(), anyLong())).thenReturn(serverVO); manager.addDnsServer(cmd); @@ -843,8 +846,7 @@ @Test public void testAddDnsServerTrimsUrlBeforeDuplicateCheckAndPersistence() throws Exception { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(cmd.getUrl()).thenReturn(" http://192.0.2.1:8081 "); when(cmd.getProvider()).thenReturn(DnsProviderType.PowerDNS); when(dnsServerDao.findByUrlAndAccount(anyString(), anyLong())).thenReturn(null); @@ -859,24 +861,21 @@ @Test(expected = InvalidParameterValueException.class) public void testAddDnsServerRejectsLoopbackUrl() { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(cmd.getUrl()).thenReturn("http://127.0.0.1:8081"); manager.addDnsServer(cmd); } @Test(expected = InvalidParameterValueException.class) public void testAddDnsServerRejectsUrlWithoutScheme() { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(cmd.getUrl()).thenReturn("192.0.2.1:8081"); manager.addDnsServer(cmd); } @Test public void testAddDnsServerAllowsPrivateAddressForRootAdmin() throws Exception { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(cmd.getUrl()).thenReturn("http://192.168.1.1:8081"); when(cmd.getProvider()).thenReturn(DnsProviderType.PowerDNS); when(dnsServerDao.findByUrlAndAccount(anyString(), anyLong())).thenReturn(null); @@ -890,8 +889,7 @@ @Test(expected = InvalidParameterValueException.class) public void testAddDnsServerPublicWithoutSuffixRejected() { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(accountMgr.isRootAdmin(callerMock.getId())).thenReturn(true); when(cmd.getUrl()).thenReturn("http://192.0.2.1:8081"); when(cmd.isPublic()).thenReturn(true); @@ -901,8 +899,7 @@ @Test(expected = InvalidParameterValueException.class) public void testUpdateDnsServerPublicWithoutSuffixRejected() { - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd.class); + UpdateDnsServerCmd cmd = mock(UpdateDnsServerCmd.class); when(cmd.getId()).thenReturn(SERVER_ID); when(cmd.isPublic()).thenReturn(true); when(accountMgr.isRootAdmin(callerMock.getId())).thenReturn(true); @@ -912,8 +909,7 @@ @Test(expected = CloudRuntimeException.class) public void testAddDnsServerValidationFailure() throws Exception { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(cmd.getUrl()).thenReturn("http://192.0.2.1:8081"); when(cmd.getProvider()).thenReturn(DnsProviderType.PowerDNS); when(cmd.getNameServers()).thenReturn(Collections.emptyList()); @@ -924,16 +920,14 @@ @Test(expected = PermissionDeniedException.class) public void testAddDnsServerNormalUser() throws Exception { - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.AddDnsServerCmd.class); + AddDnsServerCmd cmd = mock(AddDnsServerCmd.class); when(accountMgr.isRootAdmin(callerMock.getId())).thenReturn(false); manager.addDnsServer(cmd); } @Test(expected = InvalidParameterValueException.class) public void testUpdateDnsServerUrlDuplicate() { - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd.class); + UpdateDnsServerCmd cmd = mock(UpdateDnsServerCmd.class); when(cmd.getId()).thenReturn(SERVER_ID); when(cmd.getUrl()).thenReturn("http://192.0.2.1:8081"); DnsServerVO existingServer = mock(DnsServerVO.class); @@ -948,8 +942,7 @@ @Test(expected = InvalidParameterValueException.class) public void testUpdateDnsServerRejectsLoopbackUrl() { - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd.class); + UpdateDnsServerCmd cmd = mock(UpdateDnsServerCmd.class); when(cmd.getId()).thenReturn(SERVER_ID); when(cmd.getUrl()).thenReturn("http://127.0.0.1:8081"); when(dnsServerDao.findById(SERVER_ID)).thenReturn(serverVO); @@ -960,8 +953,7 @@ @Test public void testUpdateDnsServerAllowsPrivateAddressForRootAdmin() throws Exception { - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd.class); + UpdateDnsServerCmd cmd = mock(UpdateDnsServerCmd.class); when(cmd.getId()).thenReturn(SERVER_ID); when(cmd.getUrl()).thenReturn("http://192.168.1.1:8081"); when(dnsServerDao.findById(SERVER_ID)).thenReturn(serverVO); @@ -978,8 +970,7 @@ @Test public void testUpdateDnsServerTreatsWhitespaceOnlyUrlChangeAsUnchanged() throws Exception { - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd.class); + UpdateDnsServerCmd cmd = mock(UpdateDnsServerCmd.class); Integer unchangedPort = serverVO.getPort(); when(cmd.getId()).thenReturn(SERVER_ID); when(cmd.getUrl()).thenReturn(" http://192.0.2.1:8081 "); @@ -996,8 +987,7 @@ @Test public void testUpdateDnsServerUrlValid() throws Exception { - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd.class); + UpdateDnsServerCmd cmd = mock(UpdateDnsServerCmd.class); when(cmd.getId()).thenReturn(SERVER_ID); when(cmd.getUrl()).thenReturn("http://192.0.2.1:8081"); when(dnsServerDao.findById(SERVER_ID)).thenReturn(serverVO); @@ -1015,8 +1005,7 @@ @Test(expected = InvalidParameterValueException.class) public void testUpdateDnsServerValidationException() throws Exception { - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.UpdateDnsServerCmd.class); + UpdateDnsServerCmd cmd = mock(UpdateDnsServerCmd.class); when(cmd.getId()).thenReturn(SERVER_ID); when(cmd.getDnsApiKey()).thenReturn("new-api-key"); @@ -1033,10 +1022,10 @@ @Test public void testVmLifecycleSubscriberStateUnchanged() { DnsProviderManagerImpl.VmLifecycleSubscriber subscriber = manager.new VmLifecycleSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.OLD_STATE, com.cloud.vm.VirtualMachine.State.Running); - event.put(org.apache.cloudstack.api.ApiConstants.NEW_STATE, com.cloud.vm.VirtualMachine.State.Running); - event.put(org.apache.cloudstack.api.ApiConstants.INSTANCE_ID, 10L); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.OLD_STATE, VirtualMachine.State.Running); + event.put(ApiConstants.NEW_STATE, VirtualMachine.State.Running); + event.put(ApiConstants.INSTANCE_ID, 10L); subscriber.onPublishMessage("sender", "subject", event); verify(vmInstanceDao, never()).findByIdIncludingRemoved(anyLong()); @@ -1045,10 +1034,10 @@ @Test public void testVmLifecycleSubscriberRunning() { DnsProviderManagerImpl.VmLifecycleSubscriber subscriber = manager.new VmLifecycleSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.OLD_STATE, com.cloud.vm.VirtualMachine.State.Starting); - event.put(org.apache.cloudstack.api.ApiConstants.NEW_STATE, com.cloud.vm.VirtualMachine.State.Running); - event.put(org.apache.cloudstack.api.ApiConstants.INSTANCE_ID, 12L); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.OLD_STATE, VirtualMachine.State.Starting); + event.put(ApiConstants.NEW_STATE, VirtualMachine.State.Running); + event.put(ApiConstants.INSTANCE_ID, 12L); // Expect handleVmEvent to be called, which accesses // vmInstanceDao.findByIdIncludingRemoved @@ -1061,10 +1050,10 @@ @Test public void testVmLifecycleSubscriberDestroyed() { DnsProviderManagerImpl.VmLifecycleSubscriber subscriber = manager.new VmLifecycleSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.OLD_STATE, com.cloud.vm.VirtualMachine.State.Running); - event.put(org.apache.cloudstack.api.ApiConstants.NEW_STATE, VirtualMachine.State.Destroyed); - event.put(org.apache.cloudstack.api.ApiConstants.INSTANCE_ID, 15L); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.OLD_STATE, VirtualMachine.State.Running); + event.put(ApiConstants.NEW_STATE, VirtualMachine.State.Destroyed); + event.put(ApiConstants.INSTANCE_ID, 15L); when(nicDnsJoinDao.listIncludingRemovedByVmId(15L)).thenReturn(null); subscriber.onPublishMessage("sender", "subject", event); verify(nicDnsJoinDao, times(1)).listIncludingRemovedByVmId(15L); @@ -1073,10 +1062,10 @@ @Test public void testVmLifecycleSubscriberUnsupportedState() { DnsProviderManagerImpl.VmLifecycleSubscriber subscriber = manager.new VmLifecycleSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.OLD_STATE, com.cloud.vm.VirtualMachine.State.Running); - event.put(org.apache.cloudstack.api.ApiConstants.NEW_STATE, com.cloud.vm.VirtualMachine.State.Starting); - event.put(org.apache.cloudstack.api.ApiConstants.INSTANCE_ID, 20L); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.OLD_STATE, VirtualMachine.State.Running); + event.put(ApiConstants.NEW_STATE, VirtualMachine.State.Starting); + event.put(ApiConstants.INSTANCE_ID, 20L); subscriber.onPublishMessage("sender", "subject", event); verify(vmInstanceDao, never()).findByIdIncludingRemoved(anyLong()); @@ -1094,10 +1083,10 @@ @Test public void testNicLifecycleSubscriberCreate() { DnsProviderManagerImpl.NicLifecycleSubscriber subscriber = manager.new NicLifecycleSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.EVENT_TYPE, com.cloud.event.EventTypes.EVENT_NIC_CREATE); - event.put(org.apache.cloudstack.api.ApiConstants.NIC_ID, 100L); - event.put(org.apache.cloudstack.api.ApiConstants.INSTANCE_ID, 200L); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.EVENT_TYPE, EventTypes.EVENT_NIC_CREATE); + event.put(ApiConstants.NIC_ID, 100L); + event.put(ApiConstants.INSTANCE_ID, 200L); when(vmInstanceDao.findById(200L)).thenReturn(null); // Short circuits handleNicEvent @@ -1108,10 +1097,10 @@ @Test public void testNicLifecycleSubscriberDelete() { DnsProviderManagerImpl.NicLifecycleSubscriber subscriber = manager.new NicLifecycleSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.EVENT_TYPE, com.cloud.event.EventTypes.EVENT_NIC_DELETE); - event.put(org.apache.cloudstack.api.ApiConstants.NIC_ID, 101L); - event.put(org.apache.cloudstack.api.ApiConstants.INSTANCE_ID, 201L); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.EVENT_TYPE, EventTypes.EVENT_NIC_DELETE); + event.put(ApiConstants.NIC_ID, 101L); + event.put(ApiConstants.INSTANCE_ID, 201L); when(nicDnsJoinDao.findByIdIncludingRemoved(101L)).thenReturn(null); subscriber.onPublishMessage("sender", "subject", event); verify(nicDnsJoinDao, times(1)).findByIdIncludingRemoved(101L); @@ -1120,8 +1109,8 @@ @Test public void testNicLifecycleSubscriberMissingData() { DnsProviderManagerImpl.NicLifecycleSubscriber subscriber = manager.new NicLifecycleSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.EVENT_TYPE, com.cloud.event.EventTypes.EVENT_NIC_CREATE); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.EVENT_TYPE, EventTypes.EVENT_NIC_CREATE); // Missing NIC_ID and INSTANCE_ID subscriber.onPublishMessage("sender", "subject", event); @@ -1131,10 +1120,10 @@ @Test public void testNicLifecycleSubscriberUnsupportedEvent() { DnsProviderManagerImpl.NicLifecycleSubscriber subscriber = manager.new NicLifecycleSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.EVENT_TYPE, "unsupported-event"); - event.put(org.apache.cloudstack.api.ApiConstants.NIC_ID, 102L); - event.put(org.apache.cloudstack.api.ApiConstants.INSTANCE_ID, 202L); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.EVENT_TYPE, "unsupported-event"); + event.put(ApiConstants.NIC_ID, 102L); + event.put(ApiConstants.INSTANCE_ID, 202L); subscriber.onPublishMessage("sender", "subject", event); verify(vmInstanceDao, never()).findById(anyLong()); @@ -1168,8 +1157,7 @@ @Test public void testCreateDnsRecordAlreadyExistsThrowsCloudRuntimeException() throws Exception { - org.apache.cloudstack.api.command.user.dns.CreateDnsRecordCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.CreateDnsRecordCmd.class); + CreateDnsRecordCmd cmd = mock(CreateDnsRecordCmd.class); when(cmd.getName()).thenReturn("www"); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(cmd.getType()).thenReturn(DnsRecord.RecordType.A); @@ -1188,8 +1176,7 @@ @Test public void testDeleteDnsRecordProviderReturnsNullReturnsFalse() throws Exception { - org.apache.cloudstack.api.command.user.dns.DeleteDnsRecordCmd cmd = mock( - org.apache.cloudstack.api.command.user.dns.DeleteDnsRecordCmd.class); + DeleteDnsRecordCmd cmd = mock(DeleteDnsRecordCmd.class); when(cmd.getDnsZoneId()).thenReturn(ZONE_ID); when(cmd.getName()).thenReturn("www"); when(dnsZoneDao.findById(ZONE_ID)).thenReturn(zoneVO); @@ -1234,7 +1221,7 @@ @Test public void testHandleVmCreateEventFoundButNoActiveNics() throws DnsProviderException { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(vmInstanceDao.findById(30L)).thenReturn(instanceMock); when(nicDnsJoinDao.listActiveByVmId(30L)).thenReturn(Collections.emptyList()); @@ -1246,8 +1233,7 @@ @Test public void testHandleVmDestroyEventNicWithNullDnsUrlIsSkipped() throws DnsProviderException { - NicDnsJoinVO nicMock = - mock(NicDnsJoinVO.class); + NicDnsJoinVO nicMock = mock(NicDnsJoinVO.class); when(nicMock.getNicDnsName()).thenReturn(null); when(nicDnsJoinDao.listIncludingRemovedByVmId(31L)) .thenReturn(Collections.singletonList(nicMock)); @@ -1259,8 +1245,7 @@ @Test public void testHandleVmDestroyEventWithValidDnsUrlTriggersCleanup() throws Exception { - NicDnsJoinVO nicMock = - mock(NicDnsJoinVO.class); + NicDnsJoinVO nicMock = mock(NicDnsJoinVO.class); when(nicMock.getNicDnsName()).thenReturn("myvm.example.com"); when(nicMock.getDnsZoneId()).thenReturn(ZONE_ID); when(nicDnsJoinDao.listIncludingRemovedByVmId(32L)) @@ -1271,12 +1256,12 @@ when(nicDnsJoinDao.listActiveByVmIdZoneAndDnsRecord(eq(32L), eq(ZONE_ID), anyString())) .thenReturn(Collections.emptyList()); - try (MockedStatic<com.cloud.utils.db.Transaction> txMock = - Mockito.mockStatic(com.cloud.utils.db.Transaction.class)) { - txMock.when(() -> com.cloud.utils.db.Transaction.execute( - any(com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn.class))) + try (MockedStatic<Transaction> txMock = + Mockito.mockStatic(Transaction.class)) { + txMock.when(() -> Transaction.execute( + any(TransactionCallbackWithExceptionNoReturn.class))) .thenAnswer(invocation -> { - com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn<?> cb = + TransactionCallbackWithExceptionNoReturn<?> cb = invocation.getArgument(0); try { cb.doInTransactionWithoutResult(null); @@ -1288,14 +1273,14 @@ manager.handleVmDestroyEvent(32L); - verify(nicDetailsDao).removeDetail(nicMock.getId(), org.apache.cloudstack.api.ApiConstants.NIC_DNS_NAME); + verify(nicDetailsDao).removeDetail(nicMock.getId(), ApiConstants.NIC_DNS_NAME); verify(dnsProviderMock, times(2)).deleteRecord(eq(serverVO), eq(zoneVO), any(DnsRecord.class)); } } @Test public void testHandleNicPlugVmNotRunningExitsEarly() throws DnsProviderException { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(instanceMock.getState()).thenReturn(VirtualMachine.State.Destroyed); when(vmInstanceDao.findById(33L)).thenReturn(instanceMock); manager.handleNicPlug(33L, 500L); @@ -1305,8 +1290,7 @@ @Test public void testHandleNicUnplugNicHasValidDnsUrlTriggersSyncCleanup() throws Exception { - NicDnsJoinVO nicMock = - mock(NicDnsJoinVO.class); + NicDnsJoinVO nicMock = mock(NicDnsJoinVO.class); when(nicMock.getNicDnsName()).thenReturn("myvm.example.com"); when(nicMock.getDnsZoneId()).thenReturn(ZONE_ID); when(nicDnsJoinDao.findByIdIncludingRemoved(600L)).thenReturn(nicMock); @@ -1316,12 +1300,12 @@ when(nicDnsJoinDao.listActiveByVmIdZoneAndDnsRecord(eq(34L), eq(ZONE_ID), anyString())) .thenReturn(Collections.emptyList()); - try (MockedStatic<com.cloud.utils.db.Transaction> txMock = - Mockito.mockStatic(com.cloud.utils.db.Transaction.class)) { - txMock.when(() -> com.cloud.utils.db.Transaction.execute( - any(com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn.class))) + try (MockedStatic<Transaction> txMock = + Mockito.mockStatic(Transaction.class)) { + txMock.when(() -> Transaction.execute( + any(TransactionCallbackWithExceptionNoReturn.class))) .thenAnswer(invocation -> { - com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn<?> cb = + TransactionCallbackWithExceptionNoReturn<?> cb = invocation.getArgument(0); try { cb.doInTransactionWithoutResult(null); @@ -1333,14 +1317,14 @@ manager.handleNicUnplug(34L, 600L); - verify(nicDetailsDao).removeDetail(600L, org.apache.cloudstack.api.ApiConstants.NIC_DNS_NAME); + verify(nicDetailsDao).removeDetail(600L, ApiConstants.NIC_DNS_NAME); verify(dnsProviderMock, times(2)).deleteRecord(eq(serverVO), eq(zoneVO), any(DnsRecord.class)); } } @Test public void testHandleVmHostnameChangedVmFoundButNoActiveNicsExitsEarly() throws DnsProviderException { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(vmInstanceDao.findById(35L)).thenReturn(instanceMock); when(nicDnsJoinDao.listActiveByVmId(35L)).thenReturn(Collections.emptyList()); @@ -1352,14 +1336,13 @@ @Test public void testIsDnsCollisionReturnsTrueForDifferentInstance() { - NicDnsJoinVO existing = - mock(NicDnsJoinVO.class); + NicDnsJoinVO existing = mock(NicDnsJoinVO.class); when(existing.getInstanceId()).thenReturn(99L); when(nicDnsJoinDao.findActiveByDnsRecordAndZone(ZONE_ID, "vm.example.com")).thenReturn(existing); - try (MockedStatic<com.cloud.event.ActionEventUtils> aeMock = - Mockito.mockStatic(com.cloud.event.ActionEventUtils.class)) { - aeMock.when(() -> com.cloud.event.ActionEventUtils.onActionEvent( + try (MockedStatic<ActionEventUtils> aeMock = + Mockito.mockStatic(ActionEventUtils.class)) { + aeMock.when(() -> ActionEventUtils.onActionEvent( anyLong(), anyLong(), anyLong(), anyString(), anyString(), anyLong(), anyString())) .thenReturn(1L); boolean result = (boolean) ReflectionTestUtils.invokeMethod( @@ -1389,8 +1372,8 @@ @Test public void testHandleNicPlugRunningVmNicFoundButZoneNullExitsGracefully() throws DnsProviderException { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); - when(instanceMock.getState()).thenReturn(com.cloud.vm.VirtualMachine.State.Running); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); + when(instanceMock.getState()).thenReturn(VirtualMachine.State.Running); when(vmInstanceDao.findById(40L)).thenReturn(instanceMock); NicDnsJoinVO nicMock = @@ -1408,7 +1391,7 @@ @Test public void testHandleVmHostnameChangedNonEmptyNicsAllZonesMissingSkipsTransactions() throws DnsProviderException { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(vmInstanceDao.findById(41L)).thenReturn(instanceMock); NicDnsJoinVO nicMock = @@ -1425,7 +1408,7 @@ @Test public void testHandleVmCreateEventNonEmptyNicsAllZonesMissingSkipsSync() throws DnsProviderException { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(vmInstanceDao.findById(42L)).thenReturn(instanceMock); NicDnsJoinVO nicMock = @@ -1452,11 +1435,10 @@ public void testVmRenameSubscriberMissingInstanceIdSwallowsNpe() { DnsProviderManagerImpl.VmRenameActionSubscriber subscriber = manager.new VmRenameActionSubscriber(); - java.util.Map<String, Object> event = new java.util.HashMap<>(); - event.put(org.apache.cloudstack.api.ApiConstants.EVENT_TYPE, - com.cloud.event.EventTypes.EVENT_VM_UPDATE); - event.put(org.apache.cloudstack.api.ApiConstants.HOST_NAME, "newvm"); - event.put(org.apache.cloudstack.api.ApiConstants.OLD_HOST_NAME, "oldvm"); + Map<String, Object> event = new HashMap<>(); + event.put(ApiConstants.EVENT_TYPE, EventTypes.EVENT_VM_UPDATE); + event.put(ApiConstants.HOST_NAME, "newvm"); + event.put(ApiConstants.OLD_HOST_NAME, "oldvm"); // INSTANCE_ID intentionally absent → (long) null → NullPointerException → caught internally subscriber.onPublishMessage("sender", "topic", event); verify(vmInstanceDao, never()).findById(anyLong()); @@ -1473,7 +1455,7 @@ @Test public void testHandleVmCreateEventFullSyncNoCollision() throws Exception { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(instanceMock.getHostName()).thenReturn("myvm"); when(vmInstanceDao.findById(51L)).thenReturn(instanceMock); @@ -1491,12 +1473,12 @@ when(nicDnsJoinDao.listActiveByVmIdZoneAndDnsRecord(eq(51L), eq(ZONE_ID), anyString())) .thenReturn(Collections.emptyList()); - try (MockedStatic<com.cloud.utils.db.Transaction> txMock = - Mockito.mockStatic(com.cloud.utils.db.Transaction.class)) { - txMock.when(() -> com.cloud.utils.db.Transaction.execute( - any(com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn.class))) + try (MockedStatic<Transaction> txMock = + Mockito.mockStatic(Transaction.class)) { + txMock.when(() -> Transaction.execute( + any(TransactionCallbackWithExceptionNoReturn.class))) .thenAnswer(invocation -> { - com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn<?> cb = + TransactionCallbackWithExceptionNoReturn<?> cb = invocation.getArgument(0); try { cb.doInTransactionWithoutResult(null); } catch (Exception e) { throw new RuntimeException(e); } @@ -1506,14 +1488,14 @@ manager.handleVmCreateEvent(51L); verify(nicDetailsDao).addDetail(anyLong(), - eq(org.apache.cloudstack.api.ApiConstants.NIC_DNS_NAME), anyString(), eq(true)); + eq(ApiConstants.NIC_DNS_NAME), anyString(), eq(true)); verify(dnsProviderMock, times(2)).deleteRecord(eq(serverVO), eq(zoneVO), any(DnsRecord.class)); } } @Test public void testHandleVmCreateEventCollisionSkipsAddDetail() throws Exception { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(instanceMock.getHostName()).thenReturn("myvm"); when(vmInstanceDao.findById(52L)).thenReturn(instanceMock); @@ -1530,17 +1512,17 @@ when(colliding.getInstanceId()).thenReturn(999L); when(nicDnsJoinDao.findActiveByDnsRecordAndZone(eq(ZONE_ID), anyString())).thenReturn(colliding); - try (MockedStatic<com.cloud.utils.db.Transaction> txMock = - Mockito.mockStatic(com.cloud.utils.db.Transaction.class); - MockedStatic<com.cloud.event.ActionEventUtils> aeMock = - Mockito.mockStatic(com.cloud.event.ActionEventUtils.class)) { - aeMock.when(() -> com.cloud.event.ActionEventUtils.onActionEvent( + try (MockedStatic<Transaction> txMock = + Mockito.mockStatic(Transaction.class); + MockedStatic<ActionEventUtils> aeMock = + Mockito.mockStatic(ActionEventUtils.class)) { + aeMock.when(() -> ActionEventUtils.onActionEvent( anyLong(), anyLong(), anyLong(), anyString(), anyString(), anyLong(), anyString())) .thenReturn(1L); - txMock.when(() -> com.cloud.utils.db.Transaction.execute( - any(com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn.class))) + txMock.when(() -> Transaction.execute( + any(TransactionCallbackWithExceptionNoReturn.class))) .thenAnswer(invocation -> { - com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn<?> cb = + TransactionCallbackWithExceptionNoReturn<?> cb = invocation.getArgument(0); try { cb.doInTransactionWithoutResult(null); } catch (Exception e) { throw new RuntimeException(e); } @@ -1565,7 +1547,7 @@ @Test public void testHandleVmHostnameChangedFqdnUnchangedSkipsNic() throws DnsProviderException { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(vmInstanceDao.findById(61L)).thenReturn(instanceMock); NicDnsJoinVO nicMock = @@ -1586,7 +1568,7 @@ @Test public void testHandleVmHostnameChangedFullRenamePath() throws Exception { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(vmInstanceDao.findById(62L)).thenReturn(instanceMock); NicDnsJoinVO nicMock = @@ -1604,12 +1586,12 @@ when(nicDnsJoinDao.listActiveByVmIdZoneAndDnsRecord(eq(62L), eq(ZONE_ID), anyString())) .thenReturn(Collections.emptyList()); - try (MockedStatic<com.cloud.utils.db.Transaction> txMock = - Mockito.mockStatic(com.cloud.utils.db.Transaction.class)) { - txMock.when(() -> com.cloud.utils.db.Transaction.execute( - any(com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn.class))) + try (MockedStatic<Transaction> txMock = + Mockito.mockStatic(Transaction.class)) { + txMock.when(() -> Transaction.execute( + any(TransactionCallbackWithExceptionNoReturn.class))) .thenAnswer(invocation -> { - com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn<?> cb = + TransactionCallbackWithExceptionNoReturn<?> cb = invocation.getArgument(0); try { cb.doInTransactionWithoutResult(null); } catch (Exception e) { throw new RuntimeException(e); } @@ -1620,10 +1602,10 @@ // Tx1: old URL removed from nic_details verify(nicDetailsDao).removeDetail(anyLong(), - eq(org.apache.cloudstack.api.ApiConstants.NIC_DNS_NAME)); + eq(ApiConstants.NIC_DNS_NAME)); // Tx2: new URL written to nic_details verify(nicDetailsDao).addDetail(anyLong(), - eq(org.apache.cloudstack.api.ApiConstants.NIC_DNS_NAME), anyString(), eq(true)); + eq(ApiConstants.NIC_DNS_NAME), anyString(), eq(true)); // deleteRecord called for both old-sync (A+AAAA) and new-sync (A+AAAA) = 4 total verify(dnsProviderMock, times(4)).deleteRecord(eq(serverVO), eq(zoneVO), any(DnsRecord.class)); } @@ -1631,7 +1613,7 @@ @Test public void testHandleVmHostnameChangedCollisionOnNewUrlSkipsAddDetail() { - com.cloud.vm.VMInstanceVO instanceMock = mock(com.cloud.vm.VMInstanceVO.class); + VMInstanceVO instanceMock = mock(VMInstanceVO.class); when(vmInstanceDao.findById(63L)).thenReturn(instanceMock); NicDnsJoinVO nicMock = @@ -1651,17 +1633,17 @@ when(nicDnsJoinDao.listActiveByVmIdZoneAndDnsRecord(eq(63L), eq(ZONE_ID), anyString())) .thenReturn(Collections.emptyList()); - try (MockedStatic<com.cloud.utils.db.Transaction> txMock = - Mockito.mockStatic(com.cloud.utils.db.Transaction.class); - MockedStatic<com.cloud.event.ActionEventUtils> aeMock = - Mockito.mockStatic(com.cloud.event.ActionEventUtils.class)) { - aeMock.when(() -> com.cloud.event.ActionEventUtils.onActionEvent( + try (MockedStatic<Transaction> txMock = + Mockito.mockStatic(Transaction.class); + MockedStatic<ActionEventUtils> aeMock = + Mockito.mockStatic(ActionEventUtils.class)) { + aeMock.when(() -> ActionEventUtils.onActionEvent( anyLong(), anyLong(), anyLong(), anyString(), anyString(), anyLong(), anyString())) .thenReturn(1L); - txMock.when(() -> com.cloud.utils.db.Transaction.execute( - any(com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn.class))) + txMock.when(() -> Transaction.execute( + any(TransactionCallbackWithExceptionNoReturn.class))) .thenAnswer(invocation -> { - com.cloud.utils.db.TransactionCallbackWithExceptionNoReturn<?> cb = + TransactionCallbackWithExceptionNoReturn<?> cb = invocation.getArgument(0); try { cb.doInTransactionWithoutResult(null); } catch (Exception e) { throw new RuntimeException(e); }