1/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16
17package com.android.frameworks.perftests.am.tests;
18
19import android.content.ContentProviderClient;
20import android.support.test.filters.LargeTest;
21import android.support.test.runner.AndroidJUnit4;
22
23import com.android.frameworks.perftests.am.util.TargetPackageUtils;
24
25import org.junit.Test;
26import org.junit.runner.RunWith;
27
28@RunWith(AndroidJUnit4.class)
29@LargeTest
30public class ContentProviderPerfTest extends BasePerfTest {
31    /**
32     * Benchmark time to call ContentResolver.acquireContentProviderClient() when target package is
33     * running.
34     */
35    @Test
36    public void contentProviderRunning() {
37        runPerfFunction(() -> {
38            startTargetPackage();
39
40            long startTimeNs = System.nanoTime();
41            final ContentProviderClient contentProviderClient =
42                    mContext.getContentResolver()
43                            .acquireContentProviderClient(TargetPackageUtils.PACKAGE_NAME);
44            final long endTimeNs = System.nanoTime();
45
46            contentProviderClient.close();
47
48            return endTimeNs - startTimeNs;
49        });
50    }
51
52    /**
53     * Benchmark time to call ContentResolver.acquireContentProviderClient() when target package is
54     * not running.
55     */
56    @Test
57    public void contentProviderNotRunning() {
58        runPerfFunction(() -> {
59            final long startTimeNs = System.nanoTime();
60            final ContentProviderClient contentProviderClient =
61                    mContext.getContentResolver().acquireContentProviderClient(
62                            TargetPackageUtils.PACKAGE_NAME);
63            final long endTimeNs = System.nanoTime();
64
65            contentProviderClient.close();
66
67            return endTimeNs - startTimeNs;
68        });
69    }
70}
71