Skip to content

Commit 4805f09

Browse files
committed
Merge remote-tracking branch 'apache/pr/10252' into 4.19-upgrade-gson
2 parents 4ec94ee + f3e28fe commit 4805f09

File tree

3 files changed

+65
-17
lines changed

3 files changed

+65
-17
lines changed

server/src/main/java/com/cloud/alert/AlertManagerImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -738,13 +738,14 @@ public void sendAlert(AlertType alertType, DataCenter dataCenter, Pod pod, Clust
738738
AlertVO alert = null;
739739
Long clusterId = cluster == null ? null : cluster.getId();
740740
Long podId = pod == null ? null : pod.getId();
741+
long dcId = dataCenter == null ? 0L : dataCenter.getId();
741742
if ((alertType != AlertManager.AlertType.ALERT_TYPE_HOST) && (alertType != AlertManager.AlertType.ALERT_TYPE_USERVM)
742743
&& (alertType != AlertManager.AlertType.ALERT_TYPE_DOMAIN_ROUTER) && (alertType != AlertManager.AlertType.ALERT_TYPE_CONSOLE_PROXY)
743744
&& (alertType != AlertManager.AlertType.ALERT_TYPE_SSVM) && (alertType != AlertManager.AlertType.ALERT_TYPE_STORAGE_MISC)
744745
&& (alertType != AlertManager.AlertType.ALERT_TYPE_MANAGEMENT_NODE) && (alertType != AlertManager.AlertType.ALERT_TYPE_RESOURCE_LIMIT_EXCEEDED)
745746
&& (alertType != AlertManager.AlertType.ALERT_TYPE_UPLOAD_FAILED) && (alertType != AlertManager.AlertType.ALERT_TYPE_OOBM_AUTH_ERROR)
746747
&& (alertType != AlertManager.AlertType.ALERT_TYPE_HA_ACTION) && (alertType != AlertManager.AlertType.ALERT_TYPE_CA_CERT)) {
747-
alert = _alertDao.getLastAlert(alertType.getType(), dataCenter.getId(), podId, clusterId);
748+
alert = _alertDao.getLastAlert(alertType.getType(), dcId, podId, clusterId);
748749
}
749750

750751
if (alert == null) {
@@ -754,7 +755,7 @@ public void sendAlert(AlertType alertType, DataCenter dataCenter, Pod pod, Clust
754755
newAlert.setContent(content);
755756
newAlert.setClusterId(clusterId);
756757
newAlert.setPodId(podId);
757-
newAlert.setDataCenterId(dataCenter.getId());
758+
newAlert.setDataCenterId(dcId);
758759
newAlert.setSentCount(1);
759760
newAlert.setLastSent(new Date());
760761
newAlert.setName(alertType.getName());

server/src/main/java/com/cloud/bgp/BGPServiceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,9 @@ public boolean allocateASNumber(long zoneId, Long asNumber, Long networkId, Long
255255
netName = network.getName();
256256
}
257257

258-
LOGGER.debug("Allocating the AS Number {} to {} on zone {}", asNumber::toString,
259-
(Objects.nonNull(vpcId) ? "VPC " + vpc : "network " + network)::toString,
260-
() -> dataCenterDao.findById(zoneId));
258+
String networkName = Objects.nonNull(vpcId) ? ("VPC " + vpc) : ("network " + network);
259+
LOGGER.debug("Allocating the AS Number {} to {} on zone {}", asNumberVO::toString,
260+
networkName::toString, () -> dataCenterDao.findById(zoneId));
261261
asNumberVO.setAllocated(true);
262262
asNumberVO.setAllocatedTime(new Date());
263263
if (Objects.nonNull(vpcId)) {

server/src/test/java/com/cloud/alert/AlertManagerImplTest.java

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@
2626
import org.apache.cloudstack.utils.mailing.SMTPMailSender;
2727
import org.apache.logging.log4j.Logger;
2828
import org.junit.Assert;
29+
import org.junit.Before;
2930
import org.junit.Test;
3031
import org.junit.runner.RunWith;
32+
import org.mockito.ArgumentCaptor;
3133
import org.mockito.InjectMocks;
3234
import org.mockito.Mock;
3335
import org.mockito.Mockito;
@@ -37,6 +39,12 @@
3739
import javax.mail.MessagingException;
3840
import java.io.UnsupportedEncodingException;
3941

42+
import static org.junit.Assert.assertEquals;
43+
import static org.junit.Assert.assertNotNull;
44+
import static org.junit.Assert.assertNull;
45+
import static org.mockito.ArgumentMatchers.any;
46+
import static org.mockito.Mockito.verify;
47+
4048
@RunWith(MockitoJUnitRunner.class)
4149
public class AlertManagerImplTest {
4250

@@ -45,7 +53,7 @@ public class AlertManagerImplTest {
4553
AlertManagerImpl alertManagerImplMock;
4654

4755
@Mock
48-
AlertDao alertDaoMock;
56+
AlertDao _alertDao;
4957

5058
@Mock
5159
private DataCenterDao _dcDao;
@@ -65,7 +73,16 @@ public class AlertManagerImplTest {
6573
@Mock
6674
SMTPMailSender mailSenderMock;
6775

68-
private void sendMessage (){
76+
private final String[] recipients = new String[]{"[email protected]"};
77+
private final String senderAddress = "[email protected]";
78+
79+
@Before
80+
public void setUp() {
81+
alertManagerImplMock.recipients = recipients;
82+
alertManagerImplMock.senderAddress = senderAddress;
83+
}
84+
85+
private void sendMessage() {
6986
try {
7087
DataCenterVO zone = Mockito.mock(DataCenterVO.class);
7188
Mockito.when(zone.getId()).thenReturn(0L);
@@ -77,46 +94,76 @@ private void sendMessage (){
7794
Mockito.when(cluster.getId()).thenReturn(1L);
7895
Mockito.when(_clusterDao.findById(1L)).thenReturn(cluster);
7996

80-
alertManagerImplMock.sendAlert(AlertManager.AlertType.ALERT_TYPE_CPU, 0, 1l, 1l, "", "");
97+
alertManagerImplMock.sendAlert(AlertManager.AlertType.ALERT_TYPE_CPU, 0, 1L, 1L, "", "");
8198
} catch (UnsupportedEncodingException | MessagingException e) {
8299
Assert.fail();
83100
}
84101
}
85102

86103
@Test
87104
public void sendAlertTestSendMail() {
88-
Mockito.doReturn(null).when(alertDaoMock).getLastAlert(Mockito.anyShort(), Mockito.anyLong(),
105+
Mockito.doReturn(null).when(_alertDao).getLastAlert(Mockito.anyShort(), Mockito.anyLong(),
89106
Mockito.anyLong(), Mockito.anyLong());
90-
Mockito.doReturn(null).when(alertDaoMock).persist(Mockito.any());
91-
alertManagerImplMock.recipients = new String [] {""};
107+
Mockito.doReturn(null).when(_alertDao).persist(any());
108+
alertManagerImplMock.recipients = new String[]{""};
92109

93110
sendMessage();
94111

95-
Mockito.verify(alertManagerImplMock).sendMessage(Mockito.any());
112+
Mockito.verify(alertManagerImplMock).sendMessage(any());
96113
}
97114

98115
@Test
99116
public void sendAlertTestDebugLogging() {
100117
Mockito.doReturn(0).when(alertVOMock).getSentCount();
101-
Mockito.doReturn(alertVOMock).when(alertDaoMock).getLastAlert(Mockito.anyShort(), Mockito.anyLong(),
118+
Mockito.doReturn(alertVOMock).when(_alertDao).getLastAlert(Mockito.anyShort(), Mockito.anyLong(),
102119
Mockito.anyLong(), Mockito.anyLong());
103120

104121
sendMessage();
105122

106123
Mockito.verify(alertManagerImplMock.logger).debug(Mockito.anyString());
107-
Mockito.verify(alertManagerImplMock, Mockito.never()).sendMessage(Mockito.any());
124+
Mockito.verify(alertManagerImplMock, Mockito.never()).sendMessage(any());
108125
}
109126

110127
@Test
111128
public void sendAlertTestWarnLogging() {
112-
Mockito.doReturn(null).when(alertDaoMock).getLastAlert(Mockito.anyShort(), Mockito.anyLong(),
129+
Mockito.doReturn(null).when(_alertDao).getLastAlert(Mockito.anyShort(), Mockito.anyLong(),
113130
Mockito.anyLong(), Mockito.anyLong());
114-
Mockito.doReturn(null).when(alertDaoMock).persist(Mockito.any());
131+
Mockito.doReturn(null).when(_alertDao).persist(Mockito.any());
115132
alertManagerImplMock.recipients = null;
116133

117134
sendMessage();
118135

119136
Mockito.verify(alertManagerImplMock.logger, Mockito.times(2)).warn(Mockito.anyString());
120-
Mockito.verify(alertManagerImplMock, Mockito.never()).sendMessage(Mockito.any());
137+
Mockito.verify(alertManagerImplMock, Mockito.never()).sendMessage(any());
138+
}
139+
140+
@Test
141+
public void testSendAlertWithNullParameters() throws MessagingException, UnsupportedEncodingException {
142+
// Given
143+
String subject = "Test Subject";
144+
String content = "Test Content";
145+
AlertManager.AlertType alertType = AlertManager.AlertType.ALERT_TYPE_MEMORY;
146+
147+
// When
148+
alertManagerImplMock.sendAlert(alertType, null, null, null, subject, content);
149+
150+
// Then
151+
ArgumentCaptor<AlertVO> alertCaptor = ArgumentCaptor.forClass(AlertVO.class);
152+
verify(_alertDao).persist(alertCaptor.capture());
153+
154+
AlertVO capturedAlert = alertCaptor.getValue();
155+
assertNotNull("Captured alert should not be null", capturedAlert);
156+
assertEquals(0L, capturedAlert.getDataCenterId());
157+
assertNull(capturedAlert.getPodId());
158+
assertNull(capturedAlert.getClusterId());
159+
assertEquals(subject, capturedAlert.getSubject());
160+
assertEquals(content, capturedAlert.getContent());
161+
assertEquals(alertType.getType(), capturedAlert.getType());
162+
}
163+
164+
@Test(expected = NullPointerException.class)
165+
public void testSendAlertWithNullAlertType() throws MessagingException, UnsupportedEncodingException {
166+
// When
167+
alertManagerImplMock.sendAlert(null, 0, 1L, 1L, "subject", "content");
121168
}
122169
}

0 commit comments

Comments
 (0)