Home | History | Annotate | Download | only in stress
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.camera.stress;
     18 
     19 import com.android.camera.CameraActivity;
     20 import com.android.camera.stress.CameraStressTestRunner;
     21 
     22 import android.app.Instrumentation;
     23 import android.content.Intent;
     24 import android.test.ActivityInstrumentationTestCase2;
     25 import android.test.suitebuilder.annotation.LargeTest;
     26 import android.util.Log;
     27 import android.view.KeyEvent;
     28 import android.app.Activity;
     29 
     30 /**
     31  * Junit / Instrumentation test case for camera test
     32  *
     33  * Running the test suite:
     34  *
     35  * adb shell am instrument \
     36  *    -e class com.android.camera.stress.ImageCapture \
     37  *    -w com.google.android.camera.tests/android.test.InstrumentationTestRunner
     38  *
     39  */
     40 
     41 public class ImageCapture extends ActivityInstrumentationTestCase2 <CameraActivity> {
     42     private String TAG = "ImageCapture";
     43     private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 4 * 1000;   //4 seconds
     44     private static final long WAIT_FOR_SWITCH_CAMERA = 4 * 1000; //4 seconds
     45 
     46     private TestUtil testUtil = new TestUtil();
     47 
     48     // Private intent extras.
     49     private final static String EXTRAS_CAMERA_FACING =
     50         "android.intent.extras.CAMERA_FACING";
     51 
     52     public ImageCapture() {
     53         super(CameraActivity.class);
     54     }
     55 
     56     @Override
     57     protected void setUp() throws Exception {
     58         testUtil.prepareOutputFile();
     59         super.setUp();
     60     }
     61 
     62     @Override
     63     protected void tearDown() throws Exception {
     64         testUtil.closeOutputFile();
     65         super.tearDown();
     66     }
     67 
     68     public void captureImages(String reportTag, Instrumentation inst) {
     69         int total_num_of_images = CameraStressTestRunner.mImageIterations;
     70         Log.v(TAG, "no of images = " + total_num_of_images);
     71 
     72         //TODO(yslau): Need to integrate the outoput with the central dashboard,
     73         //write to a txt file as a temp solution
     74         boolean memoryResult = false;
     75         KeyEvent focusEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_FOCUS);
     76 
     77         try {
     78             testUtil.writeReportHeader(reportTag, total_num_of_images);
     79             for (int i = 0; i < total_num_of_images; i++) {
     80                 Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
     81                 inst.sendKeySync(focusEvent);
     82                 inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA);
     83                 Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
     84                 testUtil.writeResult(i);
     85             }
     86         } catch (Exception e) {
     87             Log.v(TAG, "Got exception: " + e.toString());
     88             assertTrue("testImageCapture", false);
     89         }
     90     }
     91 
     92     public void testBackImageCapture() throws Exception {
     93         Instrumentation inst = getInstrumentation();
     94         Intent intent = new Intent();
     95 
     96         intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
     97         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     98         intent.putExtra(EXTRAS_CAMERA_FACING,
     99                 android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK);
    100         Activity act = inst.startActivitySync(intent);
    101         Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
    102         captureImages("Back Camera Image Capture\n", inst);
    103         act.finish();
    104         // Wait for a clean finish.
    105         Thread.sleep(2 * 1000); //sleep for 2 seconds.
    106 
    107     }
    108 
    109     public void testFrontImageCapture() throws Exception {
    110         Instrumentation inst = getInstrumentation();
    111         Intent intent = new Intent();
    112 
    113         intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
    114         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    115         intent.putExtra(EXTRAS_CAMERA_FACING,
    116                 android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT);
    117         Activity act = inst.startActivitySync(intent);
    118         Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
    119         captureImages("Front Camera Image Capture\n", inst);
    120         act.finish();
    121         // Wait for a clean finish.
    122         Thread.sleep(2 * 1000); //sleep for 2 seconds.
    123     }
    124 }
    125