[AWARE][CtsVerifier] Clean-up after sessions correctly
Close the discovery session properly and in-order relative to the
containing session. Prevent finalizer being called.
Bug: 63715476
Test: Run CtsVerifier and observe logcat for errors.
Change-Id: Ic68d93b4f897a2a9cdf4ada343401bdaf320ac40
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/wifiaware/testcase/DataPathInBandTestCase.java b/apps/CtsVerifier/src/com/android/cts/verifier/wifiaware/testcase/DataPathInBandTestCase.java
index 635d066..5f64f02 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/wifiaware/testcase/DataPathInBandTestCase.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/wifiaware/testcase/DataPathInBandTestCase.java
@@ -22,6 +22,7 @@
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
+import android.net.wifi.aware.DiscoverySession;
import android.net.wifi.aware.PeerHandle;
import android.net.wifi.aware.PublishConfig;
import android.net.wifi.aware.PublishDiscoverySession;
@@ -89,6 +90,7 @@
private String mFailureReason;
private WifiAwareSession mWifiAwareSession;
+ private DiscoverySession mWifiAwareDiscoverySession;
public DataPathInBandTestCase(Context context, boolean isSecurityOpen, boolean isPublish,
boolean isUnsolicited) {
@@ -153,6 +155,10 @@
@Override
protected void tearDown() {
+ if (mWifiAwareDiscoverySession != null) {
+ mWifiAwareDiscoverySession.close();
+ mWifiAwareDiscoverySession = null;
+ }
if (mWifiAwareSession != null) {
mWifiAwareSession.close();
mWifiAwareSession = null;
@@ -191,6 +197,7 @@
return false;
}
SubscribeDiscoverySession discoverySession = callbackData.subscribeDiscoverySession;
+ mWifiAwareDiscoverySession = discoverySession;
if (discoverySession == null) {
setFailureReason(mContext.getString(R.string.aware_status_subscribe_null_session));
Log.e(TAG, "executeTestSubscriber: subscribe succeeded but null session returned");
@@ -305,6 +312,7 @@
// 7. destroy session
discoverySession.close();
+ mWifiAwareDiscoverySession = null;
mListener.onTestMsgReceived(mContext.getString(R.string.aware_status_lifecycle_ok));
return true;
@@ -340,6 +348,7 @@
return false;
}
PublishDiscoverySession discoverySession = callbackData.publishDiscoverySession;
+ mWifiAwareDiscoverySession = discoverySession;
if (discoverySession == null) {
setFailureReason(mContext.getString(R.string.aware_status_publish_null_session));
Log.e(TAG, "executeTestPublisher: publish succeeded but null session returned");
@@ -420,6 +429,7 @@
// 7. destroy session
discoverySession.close();
+ mWifiAwareDiscoverySession = null;
mListener.onTestMsgReceived(mContext.getString(R.string.aware_status_lifecycle_ok));
return true;
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/wifiaware/testcase/DataPathOutOfBandTestCase.java b/apps/CtsVerifier/src/com/android/cts/verifier/wifiaware/testcase/DataPathOutOfBandTestCase.java
index b054781..0f81d2c 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/wifiaware/testcase/DataPathOutOfBandTestCase.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/wifiaware/testcase/DataPathOutOfBandTestCase.java
@@ -22,6 +22,7 @@
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
+import android.net.wifi.aware.DiscoverySession;
import android.net.wifi.aware.PeerHandle;
import android.net.wifi.aware.PublishConfig;
import android.net.wifi.aware.PublishDiscoverySession;
@@ -92,6 +93,7 @@
private String mFailureReason;
private WifiAwareSession mWifiAwareSession;
+ private DiscoverySession mWifiAwareDiscoverySession;
private byte[] mDiscoveryMac;
public DataPathOutOfBandTestCase(Context context, boolean isSecurityOpen,
@@ -168,6 +170,10 @@
@Override
protected void tearDown() {
+ if (mWifiAwareDiscoverySession != null) {
+ mWifiAwareDiscoverySession.close();
+ mWifiAwareDiscoverySession = null;
+ }
if (mWifiAwareSession != null) {
mWifiAwareSession.close();
mWifiAwareSession = null;
@@ -200,6 +206,7 @@
return false;
}
PublishDiscoverySession discoverySession = callbackData.publishDiscoverySession;
+ mWifiAwareDiscoverySession = discoverySession;
if (discoverySession == null) {
setFailureReason(mContext.getString(R.string.aware_status_publish_null_session));
Log.e(TAG, "executeTestResponder: publish succeeded but null session returned");
@@ -261,6 +268,7 @@
// 5. Destroy discovery session
discoverySession.close();
+ mWifiAwareDiscoverySession = null;
// 6. Request network (as Responder) and wait for network
ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(
@@ -315,6 +323,7 @@
return false;
}
SubscribeDiscoverySession discoverySession = callbackData.subscribeDiscoverySession;
+ mWifiAwareDiscoverySession = discoverySession;
if (discoverySession == null) {
setFailureReason(mContext.getString(R.string.aware_status_subscribe_null_session));
Log.e(TAG, "executeTestInitiator: subscribe succeeded but null session returned");
@@ -388,6 +397,7 @@
// 6. Destroy discovery session
discoverySession.close();
+ mWifiAwareDiscoverySession = null;
// 7. Sleep for 5 seconds to let Responder time to set up
mListener.onTestMsgReceived(