1b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project/* 2b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 3b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * 4b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * you may not use this file except in compliance with the License. 6b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * You may obtain a copy of the License at 7b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * 8b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * 10b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * See the License for the specific language governing permissions and 14b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * limitations under the License. 15b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project */ 16b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project 177a98363ea167e59a335fe4c832ceee3562bb2c59Owen Linpackage com.android.camera.stress; 187a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin 19559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Liimport com.android.camera.Camera; 207a98363ea167e59a335fe4c832ceee3562bb2c59Owen Linimport com.android.camera.VideoCamera; 2190543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau 22b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Projectimport android.app.Instrumentation; 2378f86edcd377aeb4883780d3d9cdcb36e1c73787Yu Shan Emily Lauimport android.content.Intent; 24b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Projectimport android.test.ActivityInstrumentationTestCase2; 257a98363ea167e59a335fe4c832ceee3562bb2c59Owen Linimport android.test.suitebuilder.annotation.LargeTest; 263e2d95456def6a6d6e716af77e4708a15747d2edRay Chenimport android.os.Environment; 27b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Projectimport android.util.Log; 28b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project 293e2d95456def6a6d6e716af77e4708a15747d2edRay Chenimport java.io.BufferedWriter; 303e2d95456def6a6d6e716af77e4708a15747d2edRay Chenimport java.io.FileWriter; 313e2d95456def6a6d6e716af77e4708a15747d2edRay Chen 32b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project/** 33b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project * Junit / Instrumentation test case for camera test 347a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin * 35a2eceabc9ef5dc61f99518d998f09379baed4abcYu Shan Emily Lau * Running the test suite: 36a2eceabc9ef5dc61f99518d998f09379baed4abcYu Shan Emily Lau * 37a2eceabc9ef5dc61f99518d998f09379baed4abcYu Shan Emily Lau * adb shell am instrument \ 38a2eceabc9ef5dc61f99518d998f09379baed4abcYu Shan Emily Lau * -e class com.android.camera.stress.SwitchPreview \ 39e480f77352d670b2892a9b7b7cd503838b71ca9fRomain Guy * -w com.android.camera.tests/com.android.camera.CameraStressTestRunner 40a2eceabc9ef5dc61f99518d998f09379baed4abcYu Shan Emily Lau * 41b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project */ 42b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Projectpublic class SwitchPreview extends ActivityInstrumentationTestCase2 <VideoCamera>{ 43b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project private String TAG = "SwitchPreview"; 44b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project private static final int TOTAL_NUMBER_OF_SWITCHING = 200; 4578f86edcd377aeb4883780d3d9cdcb36e1c73787Yu Shan Emily Lau private static final long WAIT_FOR_PREVIEW = 4000; 467a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin 473e2d95456def6a6d6e716af77e4708a15747d2edRay Chen private static final String CAMERA_TEST_OUTPUT_FILE = 483e2d95456def6a6d6e716af77e4708a15747d2edRay Chen Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt"; 4990543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau private BufferedWriter mOut; 5090543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau private FileWriter mfstream; 517a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin 52b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project public SwitchPreview() { 53559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Li super(VideoCamera.class); 54b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project } 557a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin 567a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin @Override 577a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin protected void setUp() throws Exception { 58b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project getActivity(); 5990543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau prepareOutputFile(); 60b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project super.setUp(); 61b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project } 627a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin 637a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin @Override 647a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin protected void tearDown() throws Exception { 65b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project getActivity().finish(); 6690543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau closeOutputFile(); 677a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin super.tearDown(); 68b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project } 697a98363ea167e59a335fe4c832ceee3562bb2c59Owen Lin 7090543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau private void prepareOutputFile(){ 7190543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau try{ 7290543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mfstream = new FileWriter(CAMERA_TEST_OUTPUT_FILE, true); 7390543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mOut = new BufferedWriter(mfstream); 7490543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau } catch (Exception e){ 752ff6c061fe55ad46b192961f27379853c20362bcWu-cheng Li assertTrue("Camera Switch Mode", false); 7690543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau } 7790543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau } 7890543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau 7990543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau private void closeOutputFile() { 8090543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau try { 8190543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mOut.write("\n"); 8290543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mOut.close(); 8390543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mfstream.close(); 8490543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau } catch (Exception e) { 8590543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau assertTrue("CameraSwitchMode close output", false); 8690543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau } 8790543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau } 8890543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau 89b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project @LargeTest 90b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project public void testSwitchMode() { 91b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project //Switching the video and the video recorder mode 92b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project Instrumentation inst = getInstrumentation(); 93b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project try{ 9490543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mOut.write("Camera Switch Mode:\n"); 9590543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mOut.write("No of loops :" + TOTAL_NUMBER_OF_SWITCHING + "\n"); 9690543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mOut.write("loop: "); 97b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project for (int i=0; i< TOTAL_NUMBER_OF_SWITCHING; i++) { 98b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project Thread.sleep(WAIT_FOR_PREVIEW); 9978f86edcd377aeb4883780d3d9cdcb36e1c73787Yu Shan Emily Lau Intent intent = new Intent(); 10052c5c76bddbf3994867a00d0e266b390592486aaAngus Kong intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 101559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Li intent.setClass(getInstrumentation().getTargetContext(), 102559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Li VideoCamera.class); 10378f86edcd377aeb4883780d3d9cdcb36e1c73787Yu Shan Emily Lau getActivity().startActivity(intent); 104b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project Thread.sleep(WAIT_FOR_PREVIEW); 10552c5c76bddbf3994867a00d0e266b390592486aaAngus Kong intent = new Intent(); 10652c5c76bddbf3994867a00d0e266b390592486aaAngus Kong intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 107559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Li intent.setClass(getInstrumentation().getTargetContext(), 108559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Li Camera.class); 10978f86edcd377aeb4883780d3d9cdcb36e1c73787Yu Shan Emily Lau getActivity().startActivity(intent); 11090543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mOut.write(" ," + i); 11190543d58351ff941ab8bbba52b429c58fb3846dcYu Shan Emily Lau mOut.flush(); 112b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project } 113b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project } catch (Exception e){ 1142ff6c061fe55ad46b192961f27379853c20362bcWu-cheng Li Log.v(TAG, "Got exception", e); 115b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project } 116b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project } 117b64d345c9d51cabce43b5191532a0c185d2a70a5The Android Open Source Project} 118