[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(