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