4343import static org .mockito .Mockito .mock ;
4444
4545public class TestConfiguredRMFailoverProxyProvider {
46- private Configuration conf ;
4746 private final static List <String > HOST_LIST = Arrays .asList (
4847 "host01" ,
4948 "host02" ,
@@ -62,28 +61,16 @@ public class TestConfiguredRMFailoverProxyProvider {
6261 private final static String MULTI_A_RM_SCHEDULER_ADDRESS = "rmscheduler.com" ;
6362 private final static long REFRESH_TIME_INTERVAL = 1000 ; // unit ms
6463
65- ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol > proxyProvider ;
66-
67- @ Before
68- public void testInit () {
69- conf = new Configuration ();
70- conf .set (YarnConfiguration .RM_HA_IDS , "rm1,rm2" );
71- RMProxy rm1Mock = mock (RMProxy .class );
72- doNothing ().when (rm1Mock ).checkAllowedProtocols (ApplicationClientProtocol .class );
73- proxyProvider = new ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol >();
74- proxyProvider .init (conf , rm1Mock , ApplicationClientProtocol .class );
75- }
76-
7764 public Configuration getDNSConfig () {
7865 Configuration dnsConf = new Configuration ();
7966 dnsConf .set (YarnConfiguration .RESOLVE_RM_ADDRESS_KEY , MockDomainNameResolver .class .getName ());
8067 dnsConf .set (YarnConfiguration .RM_HA_IDS , MULTI_A_RM_ID );
81- dnsConf .set (HAUtil .addSuffix (YarnConfiguration .RM_ADDRESS , MULTI_A_RM_ID ), MULTI_A_RM_ADDRESS +
82- ":" + YarnConfiguration .DEFAULT_RM_PORT );
83- dnsConf .set (HAUtil .addSuffix (YarnConfiguration .RM_ADMIN_ADDRESS , MULTI_A_RM_ID ), MULTI_A_RM_ADDRESS +
84- ":" + YarnConfiguration .DEFAULT_RM_ADMIN_PORT );
85- dnsConf .set (HAUtil .addSuffix (YarnConfiguration .RM_SCHEDULER_ADDRESS , MULTI_A_RM_ID ), MULTI_A_RM_SCHEDULER_ADDRESS +
86- ":" + YarnConfiguration .DEFAULT_RM_SCHEDULER_PORT );
68+ dnsConf .set (HAUtil .addSuffix (YarnConfiguration .RM_ADDRESS , MULTI_A_RM_ID ),
69+ MULTI_A_RM_ADDRESS + ":" + YarnConfiguration .DEFAULT_RM_PORT );
70+ dnsConf .set (HAUtil .addSuffix (YarnConfiguration .RM_ADMIN_ADDRESS , MULTI_A_RM_ID ),
71+ MULTI_A_RM_ADDRESS + ":" + YarnConfiguration .DEFAULT_RM_ADMIN_PORT );
72+ dnsConf .set (HAUtil .addSuffix (YarnConfiguration .RM_SCHEDULER_ADDRESS , MULTI_A_RM_ID ),
73+ MULTI_A_RM_SCHEDULER_ADDRESS + ":" + YarnConfiguration .DEFAULT_RM_SCHEDULER_PORT );
8774 dnsConf .setBoolean (YarnConfiguration .RESOLVE_RM_ADDRESS_NEEDED_KEY , true );
8875 dnsConf .setBoolean (YarnConfiguration .RESOLVE_RM_ADDRESS_TO_FQDN , true );
8976 return dnsConf ;
@@ -121,39 +108,44 @@ private void overrideDNSMapping(int excludeIdx) throws UnknownHostException {
121108 ((MockDomainNameResolver )HAUtil .getDnr ()).setPtrMap (ptrMap );
122109 }
123110
124- @ Test (expected = IllegalStateException .class )
125- public void testInitWithNoInstances () {
126- Configuration conf = new Configuration ();;
111+ @ SuppressWarnings ("unchecked" ) // mock generics
112+ private void initProxyProvider (
113+ Configuration conf ,
114+ ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol > proxyProvider ) {
127115 RMProxy rm1Mock = mock (RMProxy .class );
128116 doNothing ().when (rm1Mock ).checkAllowedProtocols (ApplicationClientProtocol .class );
129- ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol > proxyProviderWithNoInstances = new ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol >();
130- proxyProviderWithNoInstances .init (conf , rm1Mock , ApplicationClientProtocol .class );
117+ proxyProvider .init (conf , rm1Mock , ApplicationClientProtocol .class );
118+ }
119+
120+ @ Test (expected = IllegalStateException .class )
121+ public void testInitWithNoInstances () {
122+ Configuration conf = new Configuration ();
123+ ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol > proxyProviderWithNoInstances =
124+ new ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol >();
125+ initProxyProvider (conf , proxyProviderWithNoInstances );
131126 }
132127
133128 @ Test
134129 public void testGetProxy () {
135- FailoverProxyProvider .ProxyInfo <ApplicationClientProtocol > proxy = proxyProvider .getProxy ();
136130 Configuration conf = new Configuration ();
137131 conf .set (YarnConfiguration .RM_HA_IDS , "rm1,rm2,rm3,rm4" );
138- RMProxy rm1Mock = mock ( RMProxy . class );
139- doNothing (). when ( rm1Mock ). checkAllowedProtocols ( ApplicationClientProtocol . class );
140- ConfiguredRMFailoverProxyProvider < ApplicationClientProtocol > proxyProviderWithNoInstances = new ConfiguredRMFailoverProxyProvider < ApplicationClientProtocol >( );
141- proxyProviderWithNoInstances . init ( conf , rm1Mock , ApplicationClientProtocol . class );
142- assertEquals ( proxyProviderWithNoInstances . rmServiceIds [ 0 ], "rm1" );
143- FailoverProxyProvider . ProxyInfo < ApplicationClientProtocol > current = proxyProviderWithNoInstances .getProxy ();
132+ ConfiguredRMFailoverProxyProvider < ApplicationClientProtocol > proxyProvider =
133+ new ConfiguredRMFailoverProxyProvider < ApplicationClientProtocol >( );
134+ initProxyProvider ( conf , proxyProvider );
135+ assertEquals ( proxyProvider . rmServiceIds [ 0 ], "rm1" );
136+ FailoverProxyProvider . ProxyInfo < ApplicationClientProtocol > current =
137+ proxyProvider .getProxy ();
144138 assertEquals (current .proxyInfo , "rm1" );
145139 }
146140
147141 @ Test
148142 public void testInitWithMultiARecordRM () throws UnknownHostException {
149143 Configuration conf = getDNSConfig ();
150- RMProxy rm1Mock = mock (RMProxy .class );
151- doNothing ().when (rm1Mock ).checkAllowedProtocols (ApplicationClientProtocol .class );
152144 ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol > proxyProviderWithmultiA =
153145 new ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol >();
154146 HAUtil .setDnrByConfiguration (conf );
155147 overrideDNSMapping (1 );
156- proxyProviderWithmultiA . init (conf , rm1Mock , ApplicationClientProtocol . class );
148+ initProxyProvider (conf , proxyProviderWithmultiA );
157149 assertEquals (HOST_LIST .size () - 1 , proxyProviderWithmultiA .rmServiceIds .length );
158150 for (String rmId : proxyProviderWithmultiA .rmServiceIds ) {
159151 assertTrue (rmId .startsWith ("rm_resolved_" ));
@@ -163,19 +155,19 @@ public void testInitWithMultiARecordRM() throws UnknownHostException {
163155 @ Test
164156 public void testResolveDifferentMultiARecordRM () throws UnknownHostException {
165157 Configuration conf = getDNSConfig ();
166- RMProxy rm1Mock = mock (RMProxy .class );
167- doNothing ().when (rm1Mock ).checkAllowedProtocols (ApplicationClientProtocol .class );
168158 ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol > proxyProviderWithmultiA =
169159 new ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol >();
170160 HAUtil .setDnrByConfiguration (conf );
171161 overrideDNSMapping (1 );
172- proxyProviderWithmultiA . init (conf , rm1Mock , ApplicationClientProtocol . class );
162+ initProxyProvider (conf , proxyProviderWithmultiA );
173163 List <String > rmAddresses = getRMAddresses (proxyProviderWithmultiA .conf ,
174164 proxyProviderWithmultiA .rmServiceIds ,
175165 YarnConfiguration .RM_ADDRESS );
176- List <String > rmAdminAddresses = getRMAddresses (proxyProviderWithmultiA .conf , proxyProviderWithmultiA .rmServiceIds ,
166+ List <String > rmAdminAddresses = getRMAddresses (proxyProviderWithmultiA .conf ,
167+ proxyProviderWithmultiA .rmServiceIds ,
177168 YarnConfiguration .RM_ADMIN_ADDRESS );
178- List <String > rmSchedulerAddresses = getRMAddresses (proxyProviderWithmultiA .conf , proxyProviderWithmultiA .rmServiceIds ,
169+ List <String > rmSchedulerAddresses = getRMAddresses (proxyProviderWithmultiA .conf ,
170+ proxyProviderWithmultiA .rmServiceIds ,
179171 YarnConfiguration .RM_SCHEDULER_ADDRESS );
180172 assertEquals (HOST_LIST .size () - 1 , rmAddresses .size ());
181173 assertEquals (HOST_LIST .size () - 1 , rmAdminAddresses .size ());
@@ -187,18 +179,17 @@ public void testResolveDifferentMultiARecordRM() throws UnknownHostException {
187179 public void testRefreshWithMultiARecordRM () throws UnknownHostException , InterruptedException {
188180 Configuration conf = getDNSConfig ();
189181 conf .setLong (YarnConfiguration .RM_ID_REFRESH_INTERVAL , REFRESH_TIME_INTERVAL );
190- RMProxy rm1Mock = mock (RMProxy .class );
191- doNothing ().when (rm1Mock ).checkAllowedProtocols (ApplicationClientProtocol .class );
192182 ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol > proxyProviderWithmultiA =
193183 new ConfiguredRMFailoverProxyProvider <ApplicationClientProtocol >();
194184 HAUtil .setDnrByConfiguration (conf );
195185 overrideDNSMapping (0 );
196- proxyProviderWithmultiA . init (conf , rm1Mock , ApplicationClientProtocol . class );
186+ initProxyProvider (conf , proxyProviderWithmultiA );
197187 InetSocketAddress oldActiveRMAddress =
198188 conf .getSocketAddr (HAUtil .addSuffix (YarnConfiguration .RM_ADDRESS , HAUtil .getRMHAId (conf )),
199189 YarnConfiguration .DEFAULT_RM_ADDRESS ,
200190 YarnConfiguration .DEFAULT_RM_PORT );
201- List <String > oldRMAddresses = getRMAddresses (conf , proxyProviderWithmultiA .rmServiceIds , YarnConfiguration .RM_ADDRESS );
191+ List <String > oldRMAddresses = getRMAddresses (
192+ conf , proxyProviderWithmultiA .rmServiceIds , YarnConfiguration .RM_ADDRESS );
202193 for (String address : oldRMAddresses ) {
203194 assertTrue (!address .equals (HOST_LIST .get (0 )));
204195 }
@@ -209,7 +200,8 @@ public void testRefreshWithMultiARecordRM() throws UnknownHostException, Interru
209200 conf .getSocketAddr (HAUtil .addSuffix (YarnConfiguration .RM_ADDRESS , HAUtil .getRMHAId (conf )),
210201 YarnConfiguration .DEFAULT_RM_ADDRESS ,
211202 YarnConfiguration .DEFAULT_RM_PORT );
212- List <String > newRMAddresses = getRMAddresses (conf , proxyProviderWithmultiA .rmServiceIds , YarnConfiguration .RM_ADDRESS );
203+ List <String > newRMAddresses = getRMAddresses (
204+ conf , proxyProviderWithmultiA .rmServiceIds , YarnConfiguration .RM_ADDRESS );
213205 assertEquals (HOST_LIST .size () - 1 , newRMAddresses .size ());
214206 // active RM should remain same, even without failover
215207 assertEquals (oldActiveRMAddress , newActiveRMAddress );
0 commit comments