1792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project/*
2792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
3792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project *
4792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * you may not use this file except in compliance with the License.
6792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * You may obtain a copy of the License at
7792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project *
8792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project *
10792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * See the License for the specific language governing permissions and
14792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project * limitations under the License.
15792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project */
16792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectpackage com.android.music.tests.stress;
17792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
18792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.app.Activity;
19792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.app.ActivityManager;
20792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.app.Instrumentation;
21792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.app.Instrumentation.ActivityMonitor;
22792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.content.Intent;
23792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.os.Bundle;
24792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.os.SystemClock;
25792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.test.ActivityInstrumentationTestCase;
26792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.test.suitebuilder.annotation.LargeTest;
27792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.view.KeyEvent;
28792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.util.Log;
29792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport android.content.Context;
30792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
31792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
32792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport com.android.music.MusicBrowserActivity;
33792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport com.android.music.MusicUtils;
34792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport com.android.music.TrackBrowserActivity;
35792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectimport com.android.music.tests.MusicPlayerNames;
36792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
37792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Projectpublic class MusicPlaybackStress extends ActivityInstrumentationTestCase <TrackBrowserActivity>{
38792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    private static String TAG = "mediaplayertests";
39792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
40792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    public MusicPlaybackStress() {
41792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      super("com.android.music",TrackBrowserActivity.class);
42792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    }
43792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
44792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    @Override
45792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    protected void setUp() throws Exception {
46792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      super.setUp();
47792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    }
48792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
49792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    @Override
50792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    protected void tearDown() throws Exception {
51792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      super.tearDown();
52792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    }
53792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
54792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    @LargeTest
55792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    public void testPlayAllSongs() {
56792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      Activity mediaPlaybackActivity;
57792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      try{
58792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        Instrumentation inst = getInstrumentation();
59792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        ActivityMonitor mediaPlaybackMon = inst.addMonitor("com.android.music.MediaPlaybackActivity",
60792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project          null, false);
61792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        inst.invokeMenuActionSync(getActivity(), MusicUtils.Defs.CHILD_MENU_BASE + 3, 0);
62792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        Thread.sleep(MusicPlayerNames.WAIT_LONG_TIME);
63792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        mediaPlaybackActivity = mediaPlaybackMon.waitForActivityWithTimeout(2000);
64792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        for (int i=0;i< MusicPlayerNames.NO_SKIPPING_SONGS;i++){
65792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project          Thread.sleep(MusicPlayerNames.SKIP_WAIT_TIME);
66792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project          if (i==0){
67792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project            //Set the repeat all
68792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project            inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_RIGHT);
69792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project            inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_UP);
70792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project            inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
71792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project
72792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project            //Set focus on the next button
73792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project            inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
74792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project          }
75792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project          inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
76792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        }
77792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        mediaPlaybackActivity.finish();
78792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      }catch (Exception e){
79792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project        Log.e(TAG, e.toString());
80792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      }
81792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      //Verification: check if it is in low memory
82792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
8315f18e524579b775d6075658f0587ebcd78e7683Christian Mehlmauer      ((ActivityManager)getActivity().getSystemService(Context.ACTIVITY_SERVICE)).getMemoryInfo(mi);
84792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project      assertFalse(TAG, mi.lowMemory);
85792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project    }
86792a2206a4f05f6bd13fce902d3663892d2947afThe Android Open Source Project}
87