1f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau/* 2f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * Copyright (C) 2010 The Android Open Source Project 3f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * 4f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * Licensed under the Apache License, Version 2.0 (the "License"); 5f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * you may not use this file except in compliance with the License. 6f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * You may obtain a copy of the License at 7f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * 8f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * http://www.apache.org/licenses/LICENSE-2.0 9f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * 10f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * Unless required by applicable law or agreed to in writing, software 11f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * distributed under the License is distributed on an "AS IS" BASIS, 12f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * See the License for the specific language governing permissions and 14f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * limitations under the License. 15f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau */ 16f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 17f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Laupackage com.android.camera.stress; 18f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 19f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport com.android.camera.Camera; 20f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport com.android.camera.VideoCamera; 21f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport com.android.camera.stress.TestUtil; 22f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 23f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport android.app.Activity; 24f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport android.app.Instrumentation; 25f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport android.content.Intent; 26f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport android.test.ActivityInstrumentationTestCase2; 27f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport android.test.suitebuilder.annotation.LargeTest; 28f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport android.util.Log; 29f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport android.view.KeyEvent; 30f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 31f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport com.android.camera.stress.ImageCapture; 32f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lauimport com.android.camera.stress.CameraStressTestRunner; 33f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau/** 34f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * Junit / Instrumentation test case for camera test 35f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * 36f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * Running the test suite: 37f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * 38f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * adb shell am instrument \ 39f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * -e class com.android.camera.stress.VideoCapture \ 40f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * -w com.google.android.camera.tests/android.test.InstrumentationTestRunner 41f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau * 42f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau */ 43f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 44f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Laupublic class VideoCapture extends ActivityInstrumentationTestCase2 <VideoCamera> { 45f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau private String TAG = "VideoCapture"; 46f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau private static final long WAIT_FOR_PREVIEW = 1500; //1.5 seconds 47f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau private static final long WAIT_FOR_SWITCH_CAMERA = 3000; //2 seconds 48f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 49f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau // Private intent extras which control the camera facing. 50f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau private final static String EXTRAS_CAMERA_FACING = 51f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau "android.intent.extras.CAMERA_FACING"; 52f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 53f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau private TestUtil testUtil = new TestUtil(); 54f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 55f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau public VideoCapture() { 56f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau super(VideoCamera.class); 57f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau } 58f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 59f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau @Override 60f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau protected void setUp() throws Exception { 61f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau testUtil.prepareOutputFile(); 62f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau super.setUp(); 63f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau } 64f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 65f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau @Override 66f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau protected void tearDown() throws Exception { 67f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau testUtil.closeOutputFile(); 68f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau super.tearDown(); 69f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau } 70f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 71f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau @LargeTest 72f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau public void captureVideos(String reportTag, Instrumentation inst) throws Exception{ 73f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau boolean memoryResult = false; 74f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau int total_num_of_videos = CameraStressTestRunner.mVideoIterations; 75f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau int video_duration = CameraStressTestRunner.mVideoDuration; 76f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau testUtil.writeReportHeader(reportTag, total_num_of_videos); 77f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 78f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau for (int i = 0; i < total_num_of_videos; i++) { 79f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Thread.sleep(WAIT_FOR_PREVIEW); 80f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau // record a video 81f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA); 82f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Thread.sleep(video_duration); 83f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA); 84f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau testUtil.writeResult(i); 85f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau } 86f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau } 87f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 88f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau @LargeTest 89f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau public void testBackVideoCapture() throws Exception { 90f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Instrumentation inst = getInstrumentation(); 91f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Intent intent = new Intent(); 92f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 93f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau intent.setClass(getInstrumentation().getTargetContext(), VideoCamera.class); 94f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 95f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau intent.putExtra(EXTRAS_CAMERA_FACING, 96f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK); 97f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Activity act = inst.startActivitySync(intent); 98f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Thread.sleep(WAIT_FOR_SWITCH_CAMERA); 99f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau captureVideos("Back Camera Video Capture\n", inst); 100f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau act.finish(); 101f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau } 102f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 103f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau @LargeTest 104f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau public void testFrontVideoCapture() throws Exception { 105f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Instrumentation inst = getInstrumentation(); 106f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Intent intent = new Intent(); 107f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau 108f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau intent.setClass(getInstrumentation().getTargetContext(), VideoCamera.class); 109f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 110f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau intent.putExtra(EXTRAS_CAMERA_FACING, 111f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT); 112f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Activity act = inst.startActivitySync(intent); 113f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau Thread.sleep(WAIT_FOR_SWITCH_CAMERA); 114f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau captureVideos("Front Camera Video Capture\n", inst); 115f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau act.finish(); 116f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau } 117f6069b16aea54fa33976c1ee4bf8654fd4518fc6Yu Shan Emily Lau} 118