Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ccb8c015 authored by Felka Chang's avatar Felka Chang
Browse files

Add a benchmark test for Resources.getIdentifier

In order to prevent unstable benchmark results because of cache,
a random resource name with an expected value comes from
Random.nextInt(10001).The range is from 0 to 10000.

This patch creates 10001 color resources with the prefix
"i_am_color_%x".  The range is from "i_am_color_0" to
"i_am_color_2710". The benchmark measures randomly accessing any
of those resources.

Test: atest --request-upload-result \
    CorePerfTests:android.app.ResourcesPerfTest#getIdentifier

Bug: 191487225
Change-Id: I357b43fda77e31b6d234233fd902eb8e4696301e
parent a83857b9
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
include /graphics/java/android/graphics/fonts/OWNERS

# Bug component: 568761
per-file /apct-tests/perftests/core/res/* = felkachang@google.com,zyy@google.com
+10022 −0

File added.

Preview size limit exceeded, changes collapsed.

+22 −1
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.util.Random;

/**
 * Benchmarks for {@link android.content.res.Resources}.
@@ -222,4 +223,24 @@ public class ResourcesPerfTest {
            state.resumeTiming();
        }
    }

    @Test
    public void getIdentifier() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final Random random = new Random(System.currentTimeMillis());
        final Context context = InstrumentationRegistry.getTargetContext();
        final String packageName = context.getPackageName();
        while (state.keepRunning()) {
            state.pauseTiming();
            final int expectedInteger = random.nextInt(10001);
            final String expectedString = Integer.toHexString(expectedInteger);
            final String entryName = "i_am_color_" + expectedString;
            state.resumeTiming();

            final int resIdentifier = mRes.getIdentifier(entryName, "color", packageName);
            if (resIdentifier == 0) {
                fail("Color \"" + entryName + "\" is not found");
            }
        }
    }
}