Fix memory leak

Bug: 166073521
Test: atest VtsHalNeuralnetworksV1_2BenchmarkTestCases (with additional logging on model construction and destruction)
Test: atest VtsHalNeuralnetworksV1_3BenchmarkTestCases
Change-Id: I5c8ed9879d748cc15e95a454bcb4362b66b2c5d2
Merged-In: I5c8ed9879d748cc15e95a454bcb4362b66b2c5d2
(cherry picked from commit 78819052d898cdfe77033dbe59e0839a092f80a9)
diff --git a/neuralnetworks/V1_2/benchmark/java/src/com/android/nn/benchmark/vts/v1_2/NNAccuracyTest.java b/neuralnetworks/V1_2/benchmark/java/src/com/android/nn/benchmark/vts/v1_2/NNAccuracyTest.java
index 17ca0ba..6c1aaf6 100644
--- a/neuralnetworks/V1_2/benchmark/java/src/com/android/nn/benchmark/vts/v1_2/NNAccuracyTest.java
+++ b/neuralnetworks/V1_2/benchmark/java/src/com/android/nn/benchmark/vts/v1_2/NNAccuracyTest.java
@@ -117,17 +117,18 @@
     @Test
     @LargeTest
     public void testDriver() throws BenchmarkException, IOException {
-        NNTestBase test = mModel.mEntry.createNNTestBase();
-        test.useNNApi();
-        test.setNNApiDeviceName(mModel.mInstance);
-        if (!test.setupModel(mActivity)) {
-            throw new AssumptionViolatedException("The driver rejected the model.");
+        try (NNTestBase test = mModel.mEntry.createNNTestBase()) {
+            test.useNNApi();
+            test.setNNApiDeviceName(mModel.mInstance);
+            if (!test.setupModel(mActivity)) {
+                throw new AssumptionViolatedException("The driver rejected the model.");
+            }
+            Pair<List<InferenceInOutSequence>, List<InferenceResult>> inferenceResults =
+                    test.runBenchmarkCompleteInputSet(/*setRepeat=*/1, /*timeoutSec=*/3600);
+            BenchmarkResult benchmarkResult = BenchmarkResult.fromInferenceResults(
+                    mModel.mEntry.mModelName, BenchmarkResult.BACKEND_TFLITE_NNAPI,
+                    inferenceResults.first, inferenceResults.second, test.getEvaluator());
+            assertFalse(benchmarkResult.hasValidationErrors());
         }
-        Pair<List<InferenceInOutSequence>, List<InferenceResult>> inferenceResults =
-                test.runBenchmarkCompleteInputSet(/*setRepeat=*/1, /*timeoutSec=*/3600);
-        BenchmarkResult benchmarkResult = BenchmarkResult.fromInferenceResults(
-                mModel.mEntry.mModelName, BenchmarkResult.BACKEND_TFLITE_NNAPI,
-                inferenceResults.first, inferenceResults.second, test.getEvaluator());
-        assertFalse(benchmarkResult.hasValidationErrors());
     }
 }
diff --git a/neuralnetworks/V1_3/benchmark/java/src/com/android/nn/benchmark/vts/v1_3/NNAccuracyTest.java b/neuralnetworks/V1_3/benchmark/java/src/com/android/nn/benchmark/vts/v1_3/NNAccuracyTest.java
index bdc4311..d4a05fc 100644
--- a/neuralnetworks/V1_3/benchmark/java/src/com/android/nn/benchmark/vts/v1_3/NNAccuracyTest.java
+++ b/neuralnetworks/V1_3/benchmark/java/src/com/android/nn/benchmark/vts/v1_3/NNAccuracyTest.java
@@ -117,17 +117,18 @@
     @Test
     @LargeTest
     public void testDriver() throws BenchmarkException, IOException {
-        NNTestBase test = mModel.mEntry.createNNTestBase();
-        test.useNNApi();
-        test.setNNApiDeviceName(mModel.mInstance);
-        if (!test.setupModel(mActivity)) {
-            throw new AssumptionViolatedException("The driver rejected the model.");
+        try (NNTestBase test = mModel.mEntry.createNNTestBase()) {
+            test.useNNApi();
+            test.setNNApiDeviceName(mModel.mInstance);
+            if (!test.setupModel(mActivity)) {
+                throw new AssumptionViolatedException("The driver rejected the model.");
+            }
+            Pair<List<InferenceInOutSequence>, List<InferenceResult>> inferenceResults =
+                    test.runBenchmarkCompleteInputSet(/*setRepeat=*/1, /*timeoutSec=*/3600);
+            BenchmarkResult benchmarkResult = BenchmarkResult.fromInferenceResults(
+                    mModel.mEntry.mModelName, BenchmarkResult.BACKEND_TFLITE_NNAPI,
+                    inferenceResults.first, inferenceResults.second, test.getEvaluator());
+            assertFalse(benchmarkResult.hasValidationErrors());
         }
-        Pair<List<InferenceInOutSequence>, List<InferenceResult>> inferenceResults =
-                test.runBenchmarkCompleteInputSet(/*setRepeat=*/1, /*timeoutSec=*/3600);
-        BenchmarkResult benchmarkResult = BenchmarkResult.fromInferenceResults(
-                mModel.mEntry.mModelName, BenchmarkResult.BACKEND_TFLITE_NNAPI,
-                inferenceResults.first, inferenceResults.second, test.getEvaluator());
-        assertFalse(benchmarkResult.hasValidationErrors());
     }
 }