1616// under the License.
1717package com .cloud .network .router ;
1818
19- import org .apache .cloudstack .framework .config .dao .ConfigurationDao ;
20- import org .junit .Test ;
21- import org .junit .runner .RunWith ;
22- import org .mockito .Mock ;
23- import org .mockito .runners .MockitoJUnitRunner ;
24-
25- import com .cloud .cluster .dao .ManagementServerHostDao ;
26- import com .cloud .dc .dao .ClusterDao ;
27- import com .cloud .dc .dao .DataCenterDao ;
28- import com .cloud .dc .dao .HostPodDao ;
29- import com .cloud .dc .dao .VlanDao ;
30- import com .cloud .host .dao .HostDao ;
19+ import com .cloud .agent .AgentManager ;
20+ import com .cloud .agent .api .CheckS2SVpnConnectionsAnswer ;
21+ import com .cloud .agent .api .CheckS2SVpnConnectionsCommand ;
22+ import com .cloud .alert .AlertManager ;
23+ import com .cloud .host .Host ;
24+ import com .cloud .host .HostVO ;
25+ import com .cloud .host .Status ;
26+ import com .cloud .hypervisor .Hypervisor ;
27+ import com .cloud .network .Site2SiteVpnConnection ;
28+ import com .cloud .network .dao .Site2SiteVpnConnectionVO ;
29+ import com .cloud .network .dao .Site2SiteCustomerGatewayDao ;
3130import com .cloud .network .dao .FirewallRulesDao ;
3231import com .cloud .network .dao .IPAddressDao ;
3332import com .cloud .network .dao .LoadBalancerDao ;
3736import com .cloud .network .dao .OpRouterMonitorServiceDao ;
3837import com .cloud .network .dao .PhysicalNetworkServiceProviderDao ;
3938import com .cloud .network .dao .RemoteAccessVpnDao ;
40- import com .cloud .network .dao .Site2SiteCustomerGatewayDao ;
39+ import com .cloud .network .dao .Site2SiteCustomerGatewayVO ;
4140import com .cloud .network .dao .Site2SiteVpnConnectionDao ;
4241import com .cloud .network .dao .Site2SiteVpnGatewayDao ;
4342import com .cloud .network .dao .UserIpv6AddressDao ;
4443import com .cloud .network .dao .VirtualRouterProviderDao ;
4544import com .cloud .network .dao .VpnUserDao ;
45+ import com .cloud .network .vpn .Site2SiteVpnManager ;
46+ import com .cloud .storage .Storage ;
47+ import com .cloud .vm .DomainRouterVO ;
48+ import com .cloud .vm .VirtualMachine ;
49+ import org .apache .cloudstack .framework .config .dao .ConfigurationDao ;
50+ import org .apache .cloudstack .utils .identity .ManagementServerNode ;
51+ import org .junit .Test ;
52+ import org .junit .runner .RunWith ;
53+ import org .mockito .InjectMocks ;
54+ import org .mockito .Mock ;
55+ import org .mockito .runners .MockitoJUnitRunner ;
56+
57+ import com .cloud .cluster .dao .ManagementServerHostDao ;
58+ import com .cloud .dc .dao .ClusterDao ;
59+ import com .cloud .dc .dao .DataCenterDao ;
60+ import com .cloud .dc .dao .HostPodDao ;
61+ import com .cloud .dc .dao .VlanDao ;
62+ import com .cloud .host .dao .HostDao ;
4663import com .cloud .network .rules .dao .PortForwardingRulesDao ;
4764import com .cloud .offerings .dao .NetworkOfferingDao ;
4865import com .cloud .service .dao .ServiceOfferingDao ;
5976import com .cloud .vm .dao .UserVmDao ;
6077import com .cloud .vm .dao .UserVmDetailsDao ;
6178import com .cloud .vm .dao .VMInstanceDao ;
79+ import java .util .ArrayList ;
80+ import java .util .Date ;
81+ import java .util .List ;
82+ import static org .mockito .Mockito .doNothing ;
83+ import static org .mockito .Mockito .doReturn ;
84+ import static org .mockito .Mockito .when ;
85+ import static org .mockito .Matchers .any ;
86+ import static org .mockito .Matchers .anyLong ;
87+ import static org .mockito .Matchers .anyString ;
88+ import static org .junit .Assert .assertEquals ;
89+
90+
6291
6392@ RunWith (MockitoJUnitRunner .class )
6493public class VirtualNetworkApplianceManagerImplTest {
@@ -177,6 +206,31 @@ public class VirtualNetworkApplianceManagerImplTest {
177206
178207 @ Mock private VirtualMachineManager _itMgr ;
179208
209+ @ Mock
210+ private AgentManager _agentMgr ;
211+
212+ @ Mock
213+ private CheckS2SVpnConnectionsCommand _s2sConnCommand ;
214+
215+ @ Mock
216+ private CheckS2SVpnConnectionsAnswer _s2sVpnAnswer ;
217+
218+ @ Mock
219+ private DomainRouterVO _router ;
220+
221+ @ Mock
222+ private AlertManager _alertMgr ;
223+
224+ @ Mock
225+ private Site2SiteVpnManager _s2sVpnMgr ;
226+
227+ @ Mock
228+ private RouterControlHelper _routerControlHelper ;
229+
230+ @ InjectMocks
231+ private VirtualNetworkApplianceManagerImpl virtualNetworkApplianceManagerImpl ;
232+
233+
180234 // @InjectMocks
181235 // private VirtualNetworkApplianceManagerImpl virtualNetworkApplianceManagerImpl;
182236
@@ -202,4 +256,53 @@ public void testDeployRouterNotRedundant() throws Exception {
202256 // // TODO: more elaborate mocking needed to have a vr returned
203257 //assertEquals(vr, null);
204258 }
259+
260+ @ Test
261+ public void testUpdateSite2SiteVpnConnectionState () throws Exception {
262+
263+ DomainRouterVO router = new DomainRouterVO (1L , 1L , 1L , "First testing router" , 1L , Hypervisor .HypervisorType .XenServer , 1L , 1L , 1L , 1L , false , VirtualRouter .RedundantState .MASTER , true , true , 1L );
264+ router .setState (VirtualMachine .State .Running );
265+ router .setPrivateIpAddress ("192.168.50.15" );
266+
267+ List <DomainRouterVO > routers = new ArrayList <DomainRouterVO >();
268+ routers .add (router );
269+
270+ Site2SiteVpnConnectionVO conn = new Site2SiteVpnConnectionVO (1L , 1L , 1L , 1L , false );
271+ Site2SiteVpnConnectionVO conn1 = new Site2SiteVpnConnectionVO (1L , 1L , 1L , 1L , false );
272+ conn .setState (Site2SiteVpnConnection .State .Disconnected );
273+ conn1 .setState (Site2SiteVpnConnection .State .Disconnected );
274+ List <Site2SiteVpnConnectionVO > conns = new ArrayList <Site2SiteVpnConnectionVO >();
275+ conns .add (conn );
276+ conns .add (conn1 );
277+
278+ Site2SiteCustomerGatewayVO gw = new Site2SiteCustomerGatewayVO ("Testing gateway" , 1L , 1L , "192.168.50.15" , "Guest List" , "ipsecPsk" , "ikePolicy" , "espPolicy" , 1L , 1L , true , true );
279+ HostVO hostVo = new HostVO (1L , "Testing host" , Host .Type .Routing , "192.168.50.15" , "privateNetmask" , "privateMacAddress" , "publicIpAddress" , "publicNetmask" , "publicMacAddress" , "storageIpAddress" , "storageNetmask" , "storageMacAddress" , "deuxStorageIpAddress" , "duxStorageNetmask" , "deuxStorageMacAddress" , "guid" , Status .Up , "version" , "iqn" , new Date () , 1L , 1L , 1L , 1L , "parent" , 20L , Storage .StoragePoolType .Gluster );
280+ hostVo .setManagementServerId (ManagementServerNode .getManagementServerId ());
281+
282+ ArrayList <String > ipList = new ArrayList <>();
283+ ipList .add ("192.168.50.15" );
284+
285+ _s2sConnCommand = new CheckS2SVpnConnectionsCommand (ipList );
286+
287+ when (_s2sVpnMgr .getConnectionsForRouter (router )).thenReturn (conns );
288+ when (_s2sVpnConnectionDao .persist (conn )).thenReturn (null );
289+ when (_s2sCustomerGatewayDao .findById (conn .getCustomerGatewayId ())).thenReturn (gw );
290+ when (_hostDao .findById (router .getHostId ())).thenReturn (hostVo );
291+ when (_routerControlHelper .getRouterControlIp (router .getId ())).thenReturn ("192.168.50.15" );
292+ doReturn (_s2sVpnAnswer ).when (_agentMgr ).easySend (anyLong (), any (CheckS2SVpnConnectionsCommand .class ));
293+ when (_s2sVpnAnswer .getResult ()).thenReturn (true );
294+ when (_s2sVpnConnectionDao .acquireInLockTable (conn .getId ())).thenReturn (conn );
295+ when (_s2sVpnAnswer .isIPPresent ("192.168.50.15" )).thenReturn (true );
296+ when (_s2sVpnAnswer .isConnected ("192.168.50.15" )).thenReturn (true );
297+ doNothing ().when (_alertMgr ).sendAlert (any (AlertManager .AlertType .class ), anyLong (), anyLong (), anyString (), anyString ());
298+
299+ virtualNetworkApplianceManagerImpl .updateSite2SiteVpnConnectionState (routers );
300+
301+ for (Site2SiteVpnConnection connection : conns ){
302+ assertEquals (Site2SiteVpnConnection .State .Connected , connection .getState ());
303+ }
304+ }
305+
306+
307+
205308}
0 commit comments