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; 201ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 211ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.app.Instrumentation; 221ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.content.Intent; 231ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.provider.MediaStore; 241ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.test.ActivityInstrumentationTestCase2; 251ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.test.suitebuilder.annotation.LargeTest; 261ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.os.Environment; 271ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.util.Log; 281ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 291ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport java.io.BufferedWriter; 301ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport java.io.FileWriter; 311ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 321ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling/** 331ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Junit / Instrumentation test case for camera test 341ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 351ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Running the test suite: 361ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 371ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * adb shell am instrument \ 381ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * -e class com.android.camera.stress.SwitchPreview \ 391ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * -w com.android.camera.tests/com.android.camera.stress.CameraStressTestRunner 401ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 411ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling */ 421ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingpublic class SwitchPreview extends ActivityInstrumentationTestCase2 <CameraActivity>{ 431ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private String TAG = "SwitchPreview"; 441ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private static final int TOTAL_NUMBER_OF_SWITCHING = 200; 451ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private static final long WAIT_FOR_PREVIEW = 4000; 461ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 471ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private static final String CAMERA_TEST_OUTPUT_FILE = 481ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt"; 491ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private BufferedWriter mOut; 501ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private FileWriter mfstream; 511ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 521ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public SwitchPreview() { 531ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super(CameraActivity.class); 541ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 551ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 561ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling @Override 571ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling protected void setUp() throws Exception { 581ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling getActivity(); 591ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling prepareOutputFile(); 601ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super.setUp(); 611ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 621ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 631ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling @Override 641ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling protected void tearDown() throws Exception { 651ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling getActivity().finish(); 661ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling closeOutputFile(); 671ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super.tearDown(); 681ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 691ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 701ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private void prepareOutputFile(){ 711ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling try{ 721ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mfstream = new FileWriter(CAMERA_TEST_OUTPUT_FILE, true); 731ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mOut = new BufferedWriter(mfstream); 741ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } catch (Exception e){ 751ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling assertTrue("Camera Switch Mode", false); 761ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 771ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 781ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 791ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private void closeOutputFile() { 801ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling try { 811ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mOut.write("\n"); 821ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mOut.close(); 831ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mfstream.close(); 841ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } catch (Exception e) { 851ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling assertTrue("CameraSwitchMode close output", false); 861ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 871ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 881ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 891ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public void testSwitchMode() { 901ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling //Switching the video and the video recorder mode 911ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Instrumentation inst = getInstrumentation(); 921ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling try{ 931ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mOut.write("Camera Switch Mode:\n"); 941ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mOut.write("No of loops :" + TOTAL_NUMBER_OF_SWITCHING + "\n"); 951ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mOut.write("loop: "); 961ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling for (int i=0; i< TOTAL_NUMBER_OF_SWITCHING; i++) { 971ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_PREVIEW); 981ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA); 991ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 1001ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.setClass(getInstrumentation().getTargetContext(), 1011ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling CameraActivity.class); 1021ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling getActivity().startActivity(intent); 1031ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_PREVIEW); 1041ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent = new Intent(); 1051ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 1061ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.setClass(getInstrumentation().getTargetContext(), 1071ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling CameraActivity.class); 1081ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling getActivity().startActivity(intent); 1091ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mOut.write(" ," + i); 1101ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling mOut.flush(); 1111ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 1121ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } catch (Exception e){ 1131ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Log.v(TAG, "Got exception", e); 1141ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 1151ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 1161ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling} 117