/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.tv.tests.jank; import android.content.res.Resources; import android.support.test.filters.MediumTest; import android.support.test.jank.GfxMonitor; import android.support.test.jank.JankTest; import android.support.test.jank.JankTestBase; import android.support.test.uiautomator.UiDevice; import com.android.tv.testing.uihelper.LiveChannelsUiDeviceHelper; import com.android.tv.testing.uihelper.MenuHelper; /** * Jank tests for the program guide. */ @MediumTest public class MenuJankTest extends JankTestBase { private static final String STARTING_CHANNEL = "1"; /** * The minimum number of frames expected during each jank test. * If there is less the test will fail. To be safe we loop the action in each test to create * twice this many frames under normal conditions. *

200 is chosen so there will be enough frame for the 90th, 95th, and 98th percentile * measurements are significant. * * @see Jank Test Helper Best Practices */ private static final int EXPECTED_FRAMES = 200; protected UiDevice mDevice; protected Resources mTargetResources; protected MenuHelper mMenuHelper; protected LiveChannelsUiDeviceHelper mLiveChannelsHelper; @Override protected void setUp() throws Exception { super.setUp(); mDevice = UiDevice.getInstance(getInstrumentation()); mTargetResources = getInstrumentation().getTargetContext().getResources(); mMenuHelper = new MenuHelper(mDevice, mTargetResources); mLiveChannelsHelper = new LiveChannelsUiDeviceHelper(mDevice, mTargetResources, getInstrumentation().getContext()); mLiveChannelsHelper.assertAppStarted(); Utils.pressKeysForChannelNumber(STARTING_CHANNEL, mDevice); } @JankTest(expectedFrames = EXPECTED_FRAMES, beforeTest = "fillTheMenuRowWithPreviousChannels") @GfxMonitor(processName = Utils.LIVE_CHANNELS_PROCESS_NAME) public void testShowMenu() { int frames = 40; // measured by hand. int repeat = EXPECTED_FRAMES * 2 / frames; for (int i = 0; i < repeat; i++) { mMenuHelper.showMenu(); mDevice.pressBack(); mDevice.waitForIdle(); } } public void fillTheMenuRowWithPreviousChannels() { int cardViewCount = 6; for (int i = 0; i < cardViewCount; i++) { mDevice.pressDPadUp(); mDevice.waitForIdle(); } } }