summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEcco Park <eccopark@google.com>2018-10-24 13:01:27 -0700
committerEcco Park <eccopark@google.com>2018-11-02 03:54:17 +0000
commit5c519d75cd477f51afc3c4c0ee3c6096e9a5131f (patch)
tree0ea08c233de95171eddfe2d23606515adda3b30b /tests
parente77a84b320e776d0e783d87b492d5f80ac6f9648 (diff)
passpoint-r2: make the connect function of OsuServerConnection async call
1) Currently connection function in OsuServerConnection class calls HttpsURLConnection.connect, which is blocking function. So, if caller(PasspointProvisioner) might be blocked until connection is established or timeout in the connection function. It needs to be changed to non-blocking call. 2) Remove unnecessary states in ProvisioingStateMachine Bug: 117728536 Test: ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh Test: live test with Passpoint R2 service provider AP Change-Id: I51dc1cfdd8ec0bcaab599009a1ac68be77a4816b Signed-off-by: Ecco Park <eccopark@google.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/OsuServerConnectionTest.java58
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProvisionerTest.java50
2 files changed, 62 insertions, 46 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/OsuServerConnectionTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/OsuServerConnectionTest.java
index 39ef15e5d..eb08000e4 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/OsuServerConnectionTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/OsuServerConnectionTest.java
@@ -133,12 +133,7 @@ public class OsuServerConnectionTest {
when(ServiceProviderVerifier.getProviderNames(any(X509Certificate.class))).thenReturn(
mProviderIdentities);
- mOsuServerConnection.init(mTlsContext, mDelegate);
- mOsuServerConnection.setEventCallback(mOsuServerCallbacks);
-
- assertTrue(mOsuServerConnection.canValidateServer());
- assertTrue(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
- verify(mTlsContext).init(isNull(), mTrustManagerCaptor.capture(), isNull());
+ establishServerConnection();
TrustManager[] trustManagers = mTrustManagerCaptor.getValue();
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
@@ -187,7 +182,11 @@ public class OsuServerConnectionTest {
mOsuServerConnection.setEventCallback(mOsuServerCallbacks);
assertTrue(mOsuServerConnection.canValidateServer());
- assertFalse(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
+ assertTrue(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
+
+ mLooper.dispatchAll();
+
+ verify(mOsuServerCallbacks).onServerConnectionStatus(anyInt(), eq(false));
}
/**
@@ -201,7 +200,11 @@ public class OsuServerConnectionTest {
mOsuServerConnection.setEventCallback(mOsuServerCallbacks);
assertTrue(mOsuServerConnection.canValidateServer());
- assertFalse(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
+ assertTrue(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
+
+ mLooper.dispatchAll();
+
+ verify(mOsuServerCallbacks).onServerConnectionStatus(anyInt(), eq(false));
}
/**
@@ -209,13 +212,7 @@ public class OsuServerConnectionTest {
*/
@Test
public void verifyInitAndConnectCertValidationFailure() throws Exception {
- mOsuServerConnection.init(mTlsContext, mDelegate);
- mOsuServerConnection.setEventCallback(mOsuServerCallbacks);
-
- assertTrue(mOsuServerConnection.canValidateServer());
- assertTrue(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
- verify(mTlsContext).init(isNull(), mTrustManagerCaptor.capture(), isNull());
-
+ establishServerConnection();
TrustManager[] trustManagers = mTrustManagerCaptor.getValue();
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
doThrow(new CertificateException()).when(mDelegate)
@@ -231,7 +228,7 @@ public class OsuServerConnectionTest {
* Verifies initialization and connecting to the OSU server, friendly name mismatch
*/
@Test
- public void verifyInitAndConnectInvalidProviderIdentity() throws Exception {
+ public void verifyInitAndConnectInvalidProviderIdentity()throws Exception {
// static mocking
MockitoSession session = ExtendedMockito.mockitoSession().mockStatic(
ServiceProviderVerifier.class).startMocking();
@@ -239,12 +236,7 @@ public class OsuServerConnectionTest {
when(ServiceProviderVerifier.getProviderNames(any(X509Certificate.class))).thenReturn(
mProviderIdentities);
- mOsuServerConnection.init(mTlsContext, mDelegate);
- mOsuServerConnection.setEventCallback(mOsuServerCallbacks);
-
- assertTrue(mOsuServerConnection.canValidateServer());
- assertTrue(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
- verify(mTlsContext).init(isNull(), mTrustManagerCaptor.capture(), isNull());
+ establishServerConnection();
TrustManager[] trustManagers = mTrustManagerCaptor.getValue();
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
@@ -272,7 +264,7 @@ public class OsuServerConnectionTest {
* {@code null}
*/
@Test
- public void verifyExchangeSoapMessageWithInvalidArgument() {
+ public void verifyExchangeSoapMessageWithInvalidArgument() throws Exception {
establishServerConnection();
assertFalse(mOsuServerConnection.exchangeSoapMessage(null));
}
@@ -287,18 +279,17 @@ public class OsuServerConnectionTest {
MockitoSession session = ExtendedMockito.mockitoSession().mockStatic(
HttpsTransport.class).startMocking();
try {
- mOsuServerConnection.init(mTlsContext, mDelegate);
- mOsuServerConnection.setEventCallback(mOsuServerCallbacks);
+ establishServerConnection();
when(HttpsTransport.createInstance(any(Network.class), any(URL.class))).thenReturn(
mHttpsTransport);
doThrow(new IOException()).when(mHttpsTransport).call(any(String.class),
any(SoapSerializationEnvelope.class));
- assertTrue(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
assertTrue(mOsuServerConnection.exchangeSoapMessage(
new SoapSerializationEnvelope(SoapEnvelope.VER12)));
mLooper.dispatchAll();
+
verify(mOsuServerCallbacks).onReceivedSoapMessage(anyInt(), isNull());
} finally {
session.finishMocking();
@@ -309,7 +300,7 @@ public class OsuServerConnectionTest {
* Verifies {@code ExchangeSoapMessage} should return an instance of {@link SppResponseMessage}.
*/
@Test
- public void verifyExchangeSoapMessage() {
+ public void verifyExchangeSoapMessage() throws Exception {
// static mocking
MockitoSession session = ExtendedMockito.mockitoSession().mockStatic(
HttpsTransport.class).mockStatic(SoapParser.class).startMocking();
@@ -325,6 +316,7 @@ public class OsuServerConnectionTest {
assertTrue(mOsuServerConnection.exchangeSoapMessage(envelope));
mLooper.dispatchAll();
+
verify(mOsuServerCallbacks).onReceivedSoapMessage(anyInt(), eq(mSppResponseMessage));
} finally {
session.finishMocking();
@@ -356,7 +348,7 @@ public class OsuServerConnectionTest {
* server to get root CA certificate is not HTTP OK.
*/
@Test
- public void verifyRetrieveTrustRootCertsWithErrorInHTTPSResponse() throws IOException {
+ public void verifyRetrieveTrustRootCertsWithErrorInHTTPSResponse() throws Exception {
// static mocking
MockitoSession session = ExtendedMockito.mockitoSession().mockStatic(
HttpsTransport.class).startMocking();
@@ -393,8 +385,7 @@ public class OsuServerConnectionTest {
* downloading root CA certificate from each {@code URL} provided
*/
@Test
- public void verifyRetrieveTrustRootCertsWithoutError() throws IOException,
- CertificateException {
+ public void verifyRetrieveTrustRootCertsWithoutError() throws Exception {
// static mocking
MockitoSession session = ExtendedMockito.mockitoSession().mockStatic(
HttpsTransport.class).mockStatic(CertificateFactory.class).mockStatic(
@@ -447,10 +438,15 @@ public class OsuServerConnectionTest {
}
}
- private void establishServerConnection() {
+ private void establishServerConnection() throws Exception {
mOsuServerConnection.init(mTlsContext, mDelegate);
mOsuServerConnection.setEventCallback(mOsuServerCallbacks);
+ verify(mTlsContext).init(isNull(), mTrustManagerCaptor.capture(), isNull());
+ assertTrue(mOsuServerConnection.canValidateServer());
assertTrue(mOsuServerConnection.connect(mValidServerUrl, mNetwork));
+ mLooper.dispatchAll();
+
+ verify(mOsuServerCallbacks).onServerConnectionStatus(anyInt(), eq(true));
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProvisionerTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProvisionerTest.java
index 3607a0326..e0f35009c 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProvisionerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProvisionerTest.java
@@ -289,7 +289,7 @@ public class PasspointProvisionerTest {
ProvisioningCallback.OSU_STATUS_AP_CONNECTED);
} else if (step == STEP_SERVER_CONNECT) {
verify(mCallback).onProvisioningStatus(
- ProvisioningCallback.OSU_STATUS_SERVER_CONNECTED);
+ ProvisioningCallback.OSU_STATUS_SERVER_CONNECTING);
} else if (step == STEP_WAIT_FOR_REDIRECT_RESPONSE) {
// Server validation passed
mOsuServerCallbacks.onServerValidationStatus(mOsuServerCallbacks.getSessionId(),
@@ -298,8 +298,14 @@ public class PasspointProvisionerTest {
verify(mCallback).onProvisioningStatus(
ProvisioningCallback.OSU_STATUS_SERVER_VALIDATED);
+
+ // Server connection succeeded
+ mOsuServerCallbacks.onServerConnectionStatus(mOsuServerCallbacks.getSessionId(),
+ true);
+ mLooper.dispatchAll();
+
verify(mCallback).onProvisioningStatus(
- ProvisioningCallback.OSU_STATUS_SERVICE_PROVIDER_VERIFIED);
+ ProvisioningCallback.OSU_STATUS_SERVER_CONNECTED);
verify(mCallback).onProvisioningStatus(
ProvisioningCallback.OSU_STATUS_INIT_SOAP_EXCHANGE);
@@ -419,9 +425,10 @@ public class PasspointProvisionerTest {
verify(mCallback).onProvisioningStatus(ProvisioningCallback.OSU_STATUS_AP_CONNECTING);
// Connection to OSU AP fails
mOsuNetworkCallbacks.onDisconnected();
+
// Move to failed state
verify(mCallback).onProvisioningFailure(ProvisioningCallback.OSU_FAILURE_AP_CONNECTION);
- // Failure case, no more runnables posted
+ // Failure case, no more runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -434,6 +441,7 @@ public class PasspointProvisionerTest {
// Disconnect received
mOsuNetworkCallbacks.onDisconnected();
+
// Move to failed state
verify(mCallback).onProvisioningFailure(ProvisioningCallback.OSU_FAILURE_AP_CONNECTION);
// No more callbacks, Osu server validation not initiated
@@ -449,6 +457,7 @@ public class PasspointProvisionerTest {
// Wifi disabled notification
mOsuNetworkCallbacks.onWifiDisabled();
+
// Wifi Disable is processed first and move to failed state
verify(mCallback).onProvisioningFailure(ProvisioningCallback.OSU_FAILURE_AP_CONNECTION);
// OSU server connection event is not handled
@@ -467,7 +476,7 @@ public class PasspointProvisionerTest {
// Attempting to connect to OSU server fails due to invalid server URL, move to failed state
verify(mCallback).onProvisioningFailure(
ProvisioningCallback.OSU_FAILURE_SERVER_URL_INVALID);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -482,7 +491,7 @@ public class PasspointProvisionerTest {
// Connection to OSU Server fails, move to failed state
verify(mCallback).onProvisioningFailure(ProvisioningCallback.OSU_FAILURE_SERVER_CONNECTION);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -500,7 +509,7 @@ public class PasspointProvisionerTest {
// Server validation failure, move to failed state
verify(mCallback).onProvisioningFailure(ProvisioningCallback.OSU_FAILURE_SERVER_VALIDATION);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -517,10 +526,11 @@ public class PasspointProvisionerTest {
// Runnable posted by server callback
assertTrue(mHandler.hasMessagesOrCallbacks());
mLooper.dispatchAll();
+
// Server validation failure, move to failed state
verify(mCallback, never()).onProvisioningFailure(
ProvisioningCallback.OSU_FAILURE_SERVER_VALIDATION);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -537,10 +547,11 @@ public class PasspointProvisionerTest {
// Runnable posted by server callback
assertTrue(mHandler.hasMessagesOrCallbacks());
mLooper.dispatchAll();
+
// Ignore the validation complete event because of different session id.
verify(mCallback, never()).onProvisioningStatus(
ProvisioningCallback.OSU_STATUS_SERVER_VALIDATED);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -561,11 +572,10 @@ public class PasspointProvisionerTest {
// OSU server validation success posts another runnable to validate the provider
mLooper.dispatchAll();
- verify(mCallback).onProvisioningStatus(ProvisioningCallback.OSU_STATUS_SERVER_VALIDATED);
// Provider validation failure is processed next, move to failed state
verify(mCallback).onProvisioningFailure(
ProvisioningCallback.OSU_FAILURE_SERVICE_PROVIDER_VERIFICATION);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -584,11 +594,16 @@ public class PasspointProvisionerTest {
mLooper.dispatchAll();
verify(mCallback).onProvisioningStatus(ProvisioningCallback.OSU_STATUS_SERVER_VALIDATED);
+
+ // Server connection passed
+ mOsuServerCallbacks.onServerConnectionStatus(mOsuServerCallbacks.getSessionId(), true);
+ mLooper.dispatchAll();
+
verify(mCallback).onProvisioningStatus(
- ProvisioningCallback.OSU_STATUS_SERVICE_PROVIDER_VERIFIED);
+ ProvisioningCallback.OSU_STATUS_SERVER_CONNECTED);
verify(mCallback).onProvisioningFailure(
ProvisioningCallback.OSU_FAILURE_SOAP_MESSAGE_EXCHANGE);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -608,8 +623,13 @@ public class PasspointProvisionerTest {
mLooper.dispatchAll();
verify(mCallback).onProvisioningStatus(ProvisioningCallback.OSU_STATUS_SERVER_VALIDATED);
+
+ // Server connection passed
+ mOsuServerCallbacks.onServerConnectionStatus(mOsuServerCallbacks.getSessionId(), true);
+ mLooper.dispatchAll();
+
verify(mCallback).onProvisioningStatus(
- ProvisioningCallback.OSU_STATUS_SERVICE_PROVIDER_VERIFIED);
+ ProvisioningCallback.OSU_STATUS_SERVER_CONNECTED);
verify(mCallback).onProvisioningStatus(ProvisioningCallback.OSU_STATUS_INIT_SOAP_EXCHANGE);
// Received soapMessageResponse
@@ -619,7 +639,7 @@ public class PasspointProvisionerTest {
verify(mCallback).onProvisioningFailure(
ProvisioningCallback.OSU_FAILURE_NO_OSU_ACTIVITY_FOUND);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}
@@ -638,7 +658,7 @@ public class PasspointProvisionerTest {
verify(mRedirectListener, atLeastOnce()).stopServer();
verify(mCallback).onProvisioningFailure(
ProvisioningCallback.OSU_FAILURE_TIMED_OUT_REDIRECT_LISTENER);
- // No further runnables posted
+ // No further runnable posted
verifyNoMoreInteractions(mCallback);
}