|
17 | 17 |
|
18 | 18 | package com.cloud.network.lb; |
19 | 19 |
|
| 20 | +import com.cloud.exception.ResourceUnavailableException; |
20 | 21 | import com.cloud.network.Network; |
21 | 22 | import com.cloud.network.NetworkModel; |
22 | 23 | import com.cloud.network.dao.LoadBalancerCertMapDao; |
@@ -92,6 +93,9 @@ public class LoadBalancingRulesManagerImplTest{ |
92 | 93 | @InjectMocks |
93 | 94 | LoadBalancingRulesManagerImpl lbr = new LoadBalancingRulesManagerImpl(); |
94 | 95 |
|
| 96 | + @Mock |
| 97 | + NetworkVO networkMock; |
| 98 | + |
95 | 99 | @Mock |
96 | 100 | LoadBalancerVO loadBalancerMock; |
97 | 101 |
|
@@ -198,8 +202,7 @@ private void setupUpdateLoadBalancerRule() throws Exception{ |
198 | 202 | when(loadBalancerMock.getId()).thenReturn(lbRuleId); |
199 | 203 | when(loadBalancerMock.getNetworkId()).thenReturn(networkId); |
200 | 204 |
|
201 | | - NetworkVO network = Mockito.mock(NetworkVO.class); |
202 | | - when(_networkDao.findById(networkId)).thenReturn(network); |
| 205 | + when(_networkDao.findById(networkId)).thenReturn(networkMock); |
203 | 206 |
|
204 | 207 | Mockito.doNothing().when(_accountMgr).checkAccess(Mockito.any(Account.class), Mockito.isNull(SecurityChecker.AccessType.class), Mockito.eq(true), Mockito.any(LoadBalancerVO.class)); |
205 | 208 |
|
@@ -282,4 +285,27 @@ public void testUpdateLoadBalancerRule4() throws Exception { |
282 | 285 | Mockito.verify(lbr, never()).applyLoadBalancerConfig(lbRuleId); |
283 | 286 | Mockito.verify(_lbCertMapDao, never()).remove(anyLong()); |
284 | 287 | } |
| 288 | + |
| 289 | + @Test(expected = CloudRuntimeException.class) |
| 290 | + public void testUpdateLoadBalancerRule5() throws Exception { |
| 291 | + setupUpdateLoadBalancerRule(); |
| 292 | + |
| 293 | + // Update protocol from SSL to TCP, throws an exception |
| 294 | + UpdateLoadBalancerRuleCmd cmd = new UpdateLoadBalancerRuleCmd(); |
| 295 | + ReflectionTestUtils.setField(cmd, ApiConstants.ID, lbRuleId); |
| 296 | + ReflectionTestUtils.setField(cmd, "lbProtocol", NetUtils.TCP_PROTO); |
| 297 | + when(loadBalancerMock.getLbProtocol()).thenReturn(NetUtils.SSL_PROTO).thenReturn(NetUtils.TCP_PROTO); |
| 298 | + Mockito.doThrow(ResourceUnavailableException.class).when(lbr).applyLoadBalancerConfig(lbRuleId); |
| 299 | + |
| 300 | + List<Network.Provider> providers = Arrays.asList(Network.Provider.VirtualRouter); |
| 301 | + when(_networkDao.findById(anyLong())).thenReturn(networkMock); |
| 302 | + when(_networkMgr.getProvidersForServiceInNetwork(networkMock, Network.Service.Lb)).thenReturn(providers); |
| 303 | + |
| 304 | + lbr.updateLoadBalancerRule(cmd); |
| 305 | + |
| 306 | + Mockito.verify(_lbCertMapDao, never()).remove(anyLong()); |
| 307 | + Mockito.verify(lbr, times(1)).applyLoadBalancerConfig(lbRuleId); |
| 308 | + Mockito.verify(loadBalancerMock, times(1)).setLbProtocol(NetUtils.TCP_PROTO); |
| 309 | + Mockito.verify(loadBalancerMock, times(1)).setLbProtocol(NetUtils.SSL_PROTO); |
| 310 | + } |
285 | 311 | } |
0 commit comments