These tests will help us understand the difference
between local reads/writes vs blobstore reads/writes.
Bug: 226954650
Test: atest ./apct-tests/perftests/blobstore/src/com/android/perftests/blob/BlobStorePerfTests.java
Change-Id: Ibcc8497b4c32e90824b89e836716bdeb7490227b
We would like to make relayoutWindow a non-blocking call,
and of course why not, who likes blocking. However it functions
as a critical path of BLASTSync. To understand why examine the
Guarantee described in BLASTSync.md.
In order to implement this guarantee we need to know
“Which frame has the client finished drawing” when it calls
finishDrawing. The current answer to this question is
“The frame reflecting the state observed in the last call
to relayoutWindow”. The comments on mPending and mCurrentDrawHandlers
also have a lot more context on how this works currently. Since
relayoutWindow has a critical section, it also ensures that changes
to syncable state and preparation of sync will be observed atomically
(since they are both observed over relayoutWindow, which is always
called before any frame drawing updated syncable state).
We design a new protocol described in BLASTSync.md, which uses a seqId
to track which call to finishDrawing reflects which syncable state.
We implement this seqId based system. Unfortunately the WindowManager
doesn’t quite conform to the requirements specified by the protocol,
and a follow up CL ensures that syncable state changes will
always be sent with the seqId.
This CL simply adds the protocol specification and makes some required
interface changes. It can be seen to be a no-op.
Bug: 161810301
Bug: 175861051
Bug: 175861127
Bug: 200285149
Change-Id: If2dea07121fe7de5d2524c5b63678dddf955d4b7
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
The frame number at the server side is not used anymore since BLAST.
Bug: 161810301
Test: presubmit
Change-Id: I01c6fb0750799aa94766f2582ce6ac031c9426cf
This is a step to move the layout logic to the client side. We won't
obtain the surface size from the server then.
This CL also moves the logic about adjusting the LayoutParams of
wallpaper to the client side.
Bug: 161810301
Test: presubmit
Change-Id: I3a81e174035c67a285cab449c0701ee2fe6f6a24
This facilitates exposing the Parsed_ classes as
@SystemApi(client = SYSTEM_SERVER) while keeping everything inside
services.jar rather than having it split across both jars.
This reverts getPackageArchiveInfo to use legacy PackageParser, since
framework.jar can no longer access the moved classes.
Bug: 214038417
Test: presubmit, no logic changes
Change-Id: I152d70fb4f643d32efb012cfb20b0fbc5f88f2d8
Android T allows apps to declare a runtime receiver as not exported
by invoking registerReceiver with a new RECEIVER_NOT_EXPORTED flag;
receivers registered with this flag will only receive broadcasts from
the platform and the app itself. However to ensure developers can
properly protect their receivers, all apps targeting T or later
registering a receiver for non-system broadcasts must specify either
the exported or not exported flag when invoking #registerReceiver;
if one of these flags is not provided, the platform will throw a
SecurityException. This commit updates all the exposed receivers
with a new RECEIVER_EXPORTED_UNAUDITED flag to maintain the existing
behavior of exporting the receiver while also flagging the receiver
for audit before the T release.
Bug: 161145287
Test: Build
Change-Id: I16d67d9e41ed1b4410e07f6614840f1898602e1f
Since both of splitting tasks in split screen go to overview together
now, update to snapshot all pending animations when rotating while
showing overview to ensure both of splitting task snapshots are taken
with proper bounds before rotation.
Bug: 200813008
Test: atest RecentsAnimationControllerTest
Test: enter overview after activated split screen, observed task
thumbnails showing with correct bounds after roation.
Change-Id: Id1101bf8be67593f85a43c1d4afae769ffc737d3
TextClassifierPerfTest needed MANAGE_EXTERNAL_STORAGE and
WRITE_EXTERNAL_STORAGE permission to create and save perfetto files
Test: Yes, atest TextClassifierPerfTest
Bug: 183663695
Change-Id: Ia5bdffd37eeb890ac911969bf4cb3dd020b6274c
This reverts commit b013a475eb49578d688ef7e13d5e7e0f937badcc.
Reason for revert: b/199246839, breaks some builds
Change-Id: If71cb271c6f4bb32f3cc9b31822fa0b9dbab7c37
Set a longer test timeout for use on slow devices. Use the
AndroidTest.xml test-timeout parameter for this.
Bug: 169449457
Bug: 198013452
Test: atest UserLifecycleTest
Change-Id: I9c66611e65dd07f500ee1b1ba9332fdd9b24a420
Moves all the PackageInfo/ApplicationInfo values into core SDK side
interfaces which represent all the mirrored functionality.
Creates AndroidPackageApi, PackageState, and a new PackageUserState
interface that act as the actual exposed interfaces for consumers like
mainline.
To avoid taking the PackageManagerService lock, and to avoid mutability
issues, PackageSettings are shallowly copied into PackageState objects.
And class PackageUserState objects into interface PackageUserState.
Eventually PackageSetting/class PackageUserState should be migrated to
the corresponding interfaces.
Miscellaneous additional changes:
- Removes PackageSetting#uidError, was never used
- Removes PackageUserState#categoryHint, was a package level field
without per-user difference, use PackageSetting#categoryHint instead
- Add locking to class PackageUserState overlay paths so they can be
copied for the new interface.
Bug: 173455397
Test: atest com.android.server.pm.ScanTests
Change-Id: Ib98c66a9b4d78d09151724eaf14c16074c3621c9
In order to stabilize the tests, additional waits (for the system to
cool down) were added in ag/15685704. On slower devices, that can make
the tests time out, so we must increase the timeout time.
It would have been nice to use org.junit.rules.Timeout instead, but that
doesn't seem to work; the test still times out after 5min that way.
Bug: 169449457
Bug: 198013452
Test: atest MultiUserPerfTests:android.multiuser.UserLifecycleTests with delays
Change-Id: Ia713121b2c52acd62d990b526e3d5aca2bb46b49
Currently, we wait-for-broadcast-idle at the start of each test run.
However, we also have numerous pauses/resumes during individual tests.
We should also do wait-for-broadcast-idle before resuming in those cases.
Test: UserLifecycleTests
Bug: 169449457
Change-Id: I46f49f556b4c5b508c1d9f767871b0377e29a6ae
When a user is stopped shortly after having started, the timing
results depend heavily on whether StorageManagerService had managed to
forge its connections yet. If it didn't, then stopping takes an
unrealistically short time. If it did, but is still in the process of
dealing with them, then stopping takes an unrealistically long time.
The solution is, for all appliable tests, to wait until storage is ready
before proceeding to stop or switch the user.
Also, some javadoc comments are added and clarified.
Bug: 169449457
Test: atest MultiUserPerfTests:android.multiuser.UserLifecycleTests
Change-Id: Ide848685637abac43488c8d89a3d6f6567c7deca