1818
1919import com .cloud .dc .DataCenter ;
2020import com .cloud .exception .InvalidParameterValueException ;
21+ import com .cloud .network .vpc .VpcVO ;
22+ import com .cloud .network .vpc .dao .VpcDao ;
2123import com .cloud .utils .Pair ;
2224import org .junit .Assert ;
2325import org .junit .Test ;
26+ import org .junit .runner .RunWith ;
27+ import org .mockito .ArgumentMatchers ;
2428import org .mockito .InjectMocks ;
29+ import org .mockito .Mock ;
2530import org .mockito .Mockito ;
31+ import org .mockito .junit .MockitoJUnitRunner ;
2632
33+ @ RunWith (MockitoJUnitRunner .class )
2734public class NetworkModelImplTest {
28- final String [] ip4Dns1 = {"5.5.5.5" , "6.6.6.6" };
29- final String [] ip4Dns2 = {"7.7.7.7" , "8.8.8.8" };
30- final String [] ip6Dns1 = {"2001:4860:4860::5555" , "2001:4860:4860::6666" };
31- final String [] ip6Dns2 = {"2001:4860:4860::7777" , "2001:4860:4860::8888" };
35+ final String [] ip4Dns1 = {"5.5.5.5" , "6.6.6.6" , "9.9.9.9" };
36+ final String [] ip4Dns2 = {"7.7.7.7" , "8.8.8.8" , "10.10.10.10" };
37+ final String [] ip6Dns1 = {"2001:4860:4860::5555" , "2001:4860:4860::6666" , "2001:4860:4860::9999" };
38+ final String [] ip6Dns2 = {"2001:4860:4860::7777" , "2001:4860:4860::8888" , "2001:4860:4860::AAAA" };
39+
40+ @ Mock
41+ private VpcDao vpcDao ;
3242
3343 @ InjectMocks
3444 private NetworkModelImpl networkModel = new NetworkModelImpl ();
3545
36- private void prepareMocks (boolean isIp6 , Network network , DataCenter zone ,
37- String dns1 , String dns2 , String dns3 , String dns4 ) {
46+ private void prepareMocks (boolean isIp6 , Network network , DataCenter zone , VpcVO vpc ,
47+ String networkDns1 , String zoneDns1 , String networkDns2 , String zoneDns2 ,
48+ String vpcDns1 , String vpcDns2 ) {
3849 if (isIp6 ) {
39- Mockito .when (network .getIp6Dns1 ()).thenReturn (dns1 );
40- Mockito .when (zone .getIp6Dns1 ()).thenReturn (dns2 );
41- Mockito .when (network .getIp6Dns2 ()).thenReturn (dns3 );
42- Mockito .when (zone .getIp6Dns2 ()).thenReturn (dns4 );
50+ Mockito .when (network .getIp6Dns1 ()).thenReturn (networkDns1 );
51+ Mockito .when (zone .getIp6Dns1 ()).thenReturn (zoneDns1 );
52+ Mockito .when (network .getIp6Dns2 ()).thenReturn (networkDns2 );
53+ Mockito .when (zone .getIp6Dns2 ()).thenReturn (zoneDns2 );
54+ Mockito .when (vpc .getIp6Dns1 ()).thenReturn (vpcDns1 );
55+ Mockito .when (vpc .getIp6Dns2 ()).thenReturn (vpcDns2 );
4356 } else {
44- Mockito .when (network .getDns1 ()).thenReturn (dns1 );
45- Mockito .when (zone .getDns1 ()).thenReturn (dns2 );
46- Mockito .when (network .getDns2 ()).thenReturn (dns3 );
47- Mockito .when (zone .getDns2 ()).thenReturn (dns4 );
57+ Mockito .when (network .getDns1 ()).thenReturn (networkDns1 );
58+ Mockito .when (zone .getDns1 ()).thenReturn (zoneDns1 );
59+ Mockito .when (network .getDns2 ()).thenReturn (networkDns2 );
60+ Mockito .when (zone .getDns2 ()).thenReturn (zoneDns2 );
61+ Mockito .when (vpc .getIp4Dns1 ()).thenReturn (vpcDns1 );
62+ Mockito .when (vpc .getIp4Dns2 ()).thenReturn (vpcDns2 );
4863 }
4964 }
5065
@@ -53,38 +68,53 @@ private void testDnsCases(boolean isIp6) {
5368 String [] dns2 = isIp6 ? ip6Dns2 : ip4Dns2 ;
5469 Network network = Mockito .mock (Network .class );
5570 DataCenter zone = Mockito .mock (DataCenter .class );
56- // Both network and zone have valid dns
57- prepareMocks (isIp6 , network , zone , dns1 [0 ], dns1 [1 ], dns2 [0 ], dns1 [1 ]);
71+ VpcVO vpc = Mockito .mock (VpcVO .class );
72+ Mockito .when (network .getVpcId ()).thenReturn (1L );
73+ Mockito .doReturn (vpc ).when (vpcDao ).findById (ArgumentMatchers .anyLong ());
74+ // network, vpc and zone have valid dns
75+ prepareMocks (isIp6 , network , zone , vpc , dns1 [0 ], dns1 [1 ], dns2 [0 ], dns2 [1 ], dns1 [2 ], dns2 [2 ]);
5876 Pair <String , String > result = isIp6 ? networkModel .getNetworkIp6Dns (network , zone ) :
5977 networkModel .getNetworkIp4Dns (network , zone );
6078 Assert .assertEquals (dns1 [0 ], result .first ());
6179 Assert .assertEquals (dns2 [0 ], result .second ());
62- // Network has valid dns and zone don't
63- prepareMocks (isIp6 , network , zone , dns1 [0 ], null , dns2 [0 ], null );
80+ // Network has valid dns and vpc/ zone don't
81+ prepareMocks (isIp6 , network , zone , vpc , dns1 [0 ], null , dns2 [0 ], null , null , null );
6482 result = isIp6 ? networkModel .getNetworkIp6Dns (network , zone ) :
6583 networkModel .getNetworkIp4Dns (network , zone );
6684 Assert .assertEquals (dns1 [0 ], result .first ());
6785 Assert .assertEquals (dns2 [0 ], result .second ());
68- // Zone has a valid dns and network don't
69- prepareMocks (isIp6 , network , zone , null , dns1 [1 ], null , dns2 [1 ]);
86+ // Vpc has valid dns and network/zone don't
87+ prepareMocks (isIp6 , network , zone , vpc , null , null , null , null , dns1 [2 ], dns2 [2 ]);
88+ result = isIp6 ? networkModel .getNetworkIp6Dns (network , zone ) :
89+ networkModel .getNetworkIp4Dns (network , zone );
90+ Assert .assertEquals (dns1 [2 ], result .first ());
91+ Assert .assertEquals (dns2 [2 ], result .second ());
92+ // Zone has a valid dns and network/vpc don't
93+ prepareMocks (isIp6 , network , zone , vpc , null , dns1 [1 ], null , dns2 [1 ], null , null );
7094 result = isIp6 ? networkModel .getNetworkIp6Dns (network , zone ) :
7195 networkModel .getNetworkIp4Dns (network , zone );
7296 Assert .assertEquals (dns1 [1 ], result .first ());
7397 Assert .assertEquals (dns2 [1 ], result .second ());
74- // Zone has a valid dns and network has only first dns
75- prepareMocks (isIp6 , network , zone , dns1 [0 ], dns1 [1 ], null , dns2 [1 ]);
98+ // Zone/vpc has a valid dns and network has only first dns
99+ prepareMocks (isIp6 , network , zone , vpc , dns1 [0 ], dns1 [1 ], null , dns2 [1 ], dns1 [ 2 ], dns2 [ 2 ]);
76100 result = isIp6 ? networkModel .getNetworkIp6Dns (network , zone ) :
77101 networkModel .getNetworkIp4Dns (network , zone );
78102 Assert .assertEquals (dns1 [0 ], result .first ());
79103 Assert .assertNull (result .second ());
80- // Both network and zone only have the first dns
81- prepareMocks (isIp6 , network , zone , dns1 [0 ], dns1 [1 ], null , null );
104+ // network don't have a valid dns, vpc has only first dns, Zone has a valid dns
105+ prepareMocks (isIp6 , network , zone , vpc , null , dns1 [1 ], null , dns2 [1 ], dns1 [2 ], null );
106+ result = isIp6 ? networkModel .getNetworkIp6Dns (network , zone ) :
107+ networkModel .getNetworkIp4Dns (network , zone );
108+ Assert .assertEquals (dns1 [2 ], result .first ());
109+ Assert .assertNull (result .second ());
110+ // network/vpc/zone only have the first dns
111+ prepareMocks (isIp6 , network , zone , vpc , dns1 [0 ], dns1 [1 ], null , null , dns1 [2 ], null );
82112 result = isIp6 ? networkModel .getNetworkIp6Dns (network , zone ) :
83113 networkModel .getNetworkIp4Dns (network , zone );
84114 Assert .assertEquals (dns1 [0 ], result .first ());
85115 Assert .assertNull (result .second ());
86- // Both network and zone dns are null
87- prepareMocks (isIp6 , network , zone , null , null , null , null );
116+ // network/vpc and zone dns are null
117+ prepareMocks (isIp6 , network , zone , vpc , null , null , null , null , null , null );
88118 result = isIp6 ? networkModel .getNetworkIp6Dns (network , zone ) :
89119 networkModel .getNetworkIp4Dns (network , zone );
90120 Assert .assertNull (result .first ());
0 commit comments