11ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling/* 21ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Copyright (C) 2009 The Android Open Source Project 31ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 41ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Licensed under the Apache License, Version 2.0 (the "License"); 51ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * you may not use this file except in compliance with the License. 61ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * You may obtain a copy of the License at 71ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 81ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * http://www.apache.org/licenses/LICENSE-2.0 91ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 101ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Unless required by applicable law or agreed to in writing, software 111ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * distributed under the License is distributed on an "AS IS" BASIS, 121ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * See the License for the specific language governing permissions and 141ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * limitations under the License. 151ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling */ 161ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 173189c037886fda47be73da9885e6760df50efd71Jason Noguchipackage com.android.camera.stress; 181ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 191ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport com.android.camera.CameraActivity; 203189c037886fda47be73da9885e6760df50efd71Jason Noguchiimport com.android.camera.stress.CameraStressTestRunner; 211ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 221ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.app.Instrumentation; 231ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.content.Intent; 241ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.test.ActivityInstrumentationTestCase2; 251ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.test.suitebuilder.annotation.LargeTest; 261ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.util.Log; 271ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.view.KeyEvent; 281ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.app.Activity; 291ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 301ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling/** 311ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Junit / Instrumentation test case for camera test 321ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 331ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Running the test suite: 341ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 351ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * adb shell am instrument \ 361ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * -e class com.android.camera.stress.ImageCapture \ 371ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * -w com.google.android.camera.tests/android.test.InstrumentationTestRunner 381ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 391ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling */ 401ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 411ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingpublic class ImageCapture extends ActivityInstrumentationTestCase2 <CameraActivity> { 421ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private String TAG = "ImageCapture"; 431ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 1500; //1.5 sedconds 441ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private static final long WAIT_FOR_SWITCH_CAMERA = 3000; //3 seconds 451ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 461ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private TestUtil testUtil = new TestUtil(); 471ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 481ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling // Private intent extras. 491ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private final static String EXTRAS_CAMERA_FACING = 501ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling "android.intent.extras.CAMERA_FACING"; 511ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 521ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public ImageCapture() { 531ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super(CameraActivity.class); 541ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 551ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 561ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling @Override 571ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling protected void setUp() throws Exception { 581ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling testUtil.prepareOutputFile(); 591ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super.setUp(); 601ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 611ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 621ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling @Override 631ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling protected void tearDown() throws Exception { 641ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling testUtil.closeOutputFile(); 651ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super.tearDown(); 661ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 671ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 681ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public void captureImages(String reportTag, Instrumentation inst) { 691ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling int total_num_of_images = CameraStressTestRunner.mImageIterations; 701ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Log.v(TAG, "no of images = " + total_num_of_images); 711ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 721ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling //TODO(yslau): Need to integrate the outoput with the central dashboard, 731ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling //write to a txt file as a temp solution 741ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling boolean memoryResult = false; 751ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling KeyEvent focusEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_FOCUS); 761ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 771ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling try { 781ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling testUtil.writeReportHeader(reportTag, total_num_of_images); 791ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling for (int i = 0; i < total_num_of_images; i++) { 801ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN); 811ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling inst.sendKeySync(focusEvent); 821ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA); 831ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN); 841ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling testUtil.writeResult(i); 851ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 861ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } catch (Exception e) { 871ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Log.v(TAG, "Got exception: " + e.toString()); 881ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling assertTrue("testImageCapture", false); 891ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 901ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 911ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 921ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public void testBackImageCapture() throws Exception { 931ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Instrumentation inst = getInstrumentation(); 941ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Intent intent = new Intent(); 951ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 961ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class); 971ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 981ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.putExtra(EXTRAS_CAMERA_FACING, 991ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK); 1001ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Activity act = inst.startActivitySync(intent); 1011ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_SWITCH_CAMERA); 1021ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling captureImages("Back Camera Image Capture\n", inst); 1031ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling act.finish(); 1041ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 1051ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 1061ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public void testFrontImageCapture() throws Exception { 1071ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Instrumentation inst = getInstrumentation(); 1081ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Intent intent = new Intent(); 1091ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 1101ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class); 1111ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 1121ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.putExtra(EXTRAS_CAMERA_FACING, 1131ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT); 1141ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Activity act = inst.startActivitySync(intent); 1151ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_SWITCH_CAMERA); 1161ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling captureImages("Front Camera Image Capture\n", inst); 1171ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling act.finish(); 1181ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 1191ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling} 120