From 1b262f2e28287852e36ac3928dc6dd648fbbaf0b Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Tue, 2 Apr 2019 15:39:00 -0300 Subject: [PATCH] Add test --- .../cameraview/IntegrationTest.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java index d7d47eb4..810544d3 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java @@ -6,6 +6,7 @@ import android.graphics.PointF; import android.hardware.Camera; import android.os.Build; +import androidx.annotation.NonNull; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.MediumTest; import androidx.test.rule.ActivityTestRule; @@ -29,6 +30,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; /** @@ -597,5 +599,24 @@ public class IntegrationTest extends BaseTest { assert30Frames(processor); } + + @Test + public void testFrameProcessing_freezeRelease() throws Exception { + // Ensure that freeze/release cycles do not cause OOMs. + // There was a bug doing this and it might resurface for any improper + // disposal of the frames. + FrameProcessor source = new FrameProcessor() { + @Override + public void process(@NonNull Frame frame) { + frame.freeze().release(); + } + }; + FrameProcessor processor = spy(source); + camera.addFrameProcessor(processor); + waitForOpen(true); + + assert30Frames(processor); + } + //endregion }