OSDN Git Service

Camera2 Test: Fix module and burst test issues
authorZhijun He <zhijunhe@google.com>
Wed, 18 Sep 2013 16:44:19 +0000 (09:44 -0700)
committerZhijun He <zhijunhe@google.com>
Fri, 20 Sep 2013 02:01:04 +0000 (19:01 -0700)
Bug: 10388724
Change-Id: Idc404cf8a7a96c00941aa8f1880734a236cb3737

tests/camera2/CameraBurstTests.cpp
tests/camera2/CameraModuleTests.cpp

index 67b29ab..47fcb3e 100644 (file)
 #define dout if (0) std::cout
 #endif
 
+#define WARN_UNLESS(condition) (!(condition) ? (std::cerr) : (std::ostream(NULL)) << "Warning: ")
+#define WARN_LE(exp, act) WARN_UNLESS((exp) <= (act))
+#define WARN_LT(exp, act) WARN_UNLESS((exp) < (act))
+#define WARN_GT(exp, act) WARN_UNLESS((exp) > (act))
+
 using namespace android;
 using namespace android::camera2;
 
@@ -273,10 +278,16 @@ TEST_F(CameraBurstTest, ManualExposureControl) {
 
     dout << "max doubling count: " << max_doubling_count << std::endl;
 
-    EXPECT_LE(CAMERA_EXPOSURE_DOUBLING_COUNT, max_doubling_count)
-      << "average brightness should double at least "
-      << CAMERA_EXPOSURE_DOUBLING_COUNT
-      << " times over each consecutive frame as the exposure is doubled";
+    /**
+     * Make this check warning only, since the brightness calculation is not reliable
+     * and we have separate test to cover this case. Plus it is pretty subtle to make
+     * it right without complicating the test too much.
+     */
+    WARN_LE(CAMERA_EXPOSURE_DOUBLING_COUNT, max_doubling_count)
+            << "average brightness should double at least "
+            << CAMERA_EXPOSURE_DOUBLING_COUNT
+            << " times over each consecutive frame as the exposure is doubled"
+            << std::endl;
 }
 
 /**
@@ -652,12 +663,13 @@ TEST_F(CameraBurstTest, VariableBurst) {
             float evRatio = (prevEv > currentEv) ? (currentEv / prevEv) :
                     (prevEv / currentEv);
             if ( evRatio > EV_MATCH_BOUND ) {
-                EXPECT_LT( fabs(brightnesses[i] - brightnesses[i - 1]),
+                WARN_LT(fabs(brightnesses[i] - brightnesses[i - 1]),
                         BRIGHTNESS_MATCH_BOUND) <<
                         "Capture brightness different from previous, even though "
                         "they have the same EV value. Ev now: " << currentEv <<
                         ", previous: " << prevEv << ". Brightness now: " <<
-                        brightnesses[i] << ", previous: " << brightnesses[i-1];
+                        brightnesses[i] << ", previous: " << brightnesses[i-1] <<
+                        std::endl;
             }
             // Only check timing if not saving to disk, since that slows things
             // down substantially
@@ -665,12 +677,14 @@ TEST_F(CameraBurstTest, VariableBurst) {
                 nsecs_t timeDelta = captureTimes[i] - captureTimes[i-1];
                 nsecs_t expectedDelta = expList[i] > durationList[i] ?
                         expList[i] : durationList[i];
-                EXPECT_LT(timeDelta, expectedDelta + DURATION_UPPER_BOUND) <<
+                WARN_LT(timeDelta, expectedDelta + DURATION_UPPER_BOUND) <<
                         "Capture took " << timeDelta << " ns to receive, but expected"
-                        " frame duration was " << expectedDelta << " ns.";
-                EXPECT_GT(timeDelta, expectedDelta - DURATION_LOWER_BOUND) <<
+                        " frame duration was " << expectedDelta << " ns." <<
+                        std::endl;
+                WARN_GT(timeDelta, expectedDelta - DURATION_LOWER_BOUND) <<
                         "Capture took " << timeDelta << " ns to receive, but expected"
-                    " frame duration was " << expectedDelta << " ns.";
+                        " frame duration was " << expectedDelta << " ns." <<
+                        std::endl;
                 dout << "Time delta from previous frame: " << timeDelta / 1e6 <<
                         " ms.  Expected " << expectedDelta / 1e6 << " ms" << std::endl;
             }
index 9bd65ec..ae4267b 100644 (file)
@@ -78,15 +78,19 @@ TEST_F(CameraModuleTest, LoadModuleBadIndices) {
     TEST_EXTENSION_FORKING_INIT;
 
     int idx[] = { -1, mNumberOfCameras, mNumberOfCameras + 1 };
+    hw_device_t *device = NULL;
 
     for (unsigned i = 0; i < sizeof(idx)/sizeof(idx[0]); ++i) {
-        CreateCamera(idx[i], &mDevice);
-        status_t deviceInitializeCode = initializeDevice(idx[i]);
-        EXPECT_NE(OK, deviceInitializeCode);
-        EXPECT_EQ(-ENODEV, deviceInitializeCode)
-            << "Incorrect error code when trying to initialize invalid index "
-            << idx[i];
-        mDevice.clear();
+        String8 deviceName = String8::format("%d", idx[i]);
+        status_t res =
+                mModule->common.methods->open(
+                                             &mModule->common,
+                                             deviceName,
+                                             &device);
+        EXPECT_NE(OK, res);
+        EXPECT_EQ(-ENODEV, res)
+            << "Incorrect error code when trying to open camera with invalid id "
+            << deviceName;
     }
 }