Camera2: Tests -- Fork each test before executing it

Use CAMERA2_TEST_FORKING_DISABLED=1 environment variable to override this
behavior (e.g. when wanting to attach gdb to the test app).

Change-Id: Ib639885bdb827fc2415c878cbcb1b2d84dff687b
diff --git a/tests/camera2/CameraStreamFixture.h b/tests/camera2/CameraStreamFixture.h
index 4bd8ac1..d4ba764 100644
--- a/tests/camera2/CameraStreamFixture.h
+++ b/tests/camera2/CameraStreamFixture.h
@@ -14,12 +14,17 @@
  * limitations under the License.
  */
 
+#ifndef __ANDROID_HAL_CAMERA2_TESTS_STREAM_FIXTURE__
+#define __ANDROID_HAL_CAMERA2_TESTS_STREAM_FIXTURE__
+
 #include <gtest/gtest.h>
+#include <iostream>
 
 #include <gui/CpuConsumer.h>
 #include <gui/SurfaceTextureClient.h>
 
 #include "CameraModuleFixture.h"
+#include "TestExtensions.h"
 
 namespace android {
 namespace camera2 {
@@ -31,24 +36,38 @@
     int mHeapCount;
 };
 
+inline void PrintTo(const CameraStreamParams& p, ::std::ostream* os) {
+    *os <<  "{ ";
+    *os <<  "CameraID: "  << p.mCameraId << ", ";
+    *os <<  "Format: "    << p.mCameraId << ", ";
+    *os <<  "HeapCount: " << p.mCameraId;
+    *os << " }";
+}
+
 class CameraStreamFixture
     : public CameraModuleFixture</*InfoQuirk*/true> {
 
 public:
     CameraStreamFixture(CameraStreamParams p)
     : CameraModuleFixture(p.mCameraId) {
+        TEST_EXTENSION_FORKING_CONSTRUCTOR;
+
         mParam = p;
 
         SetUp();
     }
 
     ~CameraStreamFixture() {
+        TEST_EXTENSION_FORKING_DESTRUCTOR;
+
         TearDown();
     }
 
 private:
 
     void SetUp() {
+        TEST_EXTENSION_FORKING_SET_UP;
+
         CameraStreamParams p = mParam;
         sp<Camera2Device> device = mDevice;
 
@@ -69,6 +88,7 @@
         }
     }
     void TearDown() {
+        TEST_EXTENSION_FORKING_TEAR_DOWN;
     }
 
 protected:
@@ -95,13 +115,6 @@
         ASSERT_EQ(OK, mDevice->deleteStream(mStreamId));
     }
 
-    /* consider factoring out this common code into
-      a CameraStreamFixture<T>, e.g.
-      class CameraStreamTest : TestWithParam<CameraStreamParameters>,
-                               CameraStreamFixture<CameraStreamParameters>
-       to make it easier for other classes to not duplicate the params
-      */
-
     int mWidth;
     int mHeight;
 
@@ -117,3 +130,4 @@
 }
 }
 
+#endif