Files
frameworks_base/core/tests/coretests
Neil Fuller 7c7709207f Make TimeZoneDetector own its config
Make TimeZoneDetector responsible for configuration of time
zone detection behavior on device and have it enforce user capabilities.

This provides a set of configuration/capability classes, listeners and
tests that should allow SettingsUI apps to switch over to using them
while maintaining existing behavior and restrictions.

Ultimately, this should get us to a point where all time zone detection
configuration is conducted via TimeZoneDetector.updateConfiguration()
rather than modifying / listening to android.provider.Settings directly.

The listener support is intended for any users that currently watch
settings directly.

The TimeZoneCapabilities and TimeZoneConfiguration are designed to be
extensible so that more configuration properties can be added as the
time zone detector becomes more sophisticated. updateConfiguration()
supports partial configs so that clients only need to be explicit about
the config properties they know about and want to change.

This change is also a step towards removing race conditions in time zone
detection that could occur if settings are changed mid-way through a
time zone detection cycle: synchronization in
TimeZoneDetectorStrategyImpl ensures that the configuration won't change
unexpectedly.

Test: atest services/tests/servicestests/src/com/android/server/timezonedetector
Test: atest core/tests/coretests/src/android/app/timezonedetector
Change-Id: I3283b7fb7aa978df44a27ab7cd8cacdbe042b17b
2020-06-15 11:18:46 +01:00
..
2020-04-29 17:13:54 -04:00
2020-06-15 11:18:46 +01:00

* 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.


INTRODUCTION

The Android platform core tests (APCT) consist of unit tests for core platform
functionality. These differ from CTS in that they are not necessarily testing
public APIs and are not guaranteed to work outside of AOSP builds.


INSTRUCTIONS

To run a test or set of tests, first build the FrameworksCoreTests package:

  make FrameworksCoreTests

Next, install the resulting APK and run tests as you would normal JUnit tests:

  adb install -r ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
  adb shell am instrument -w \
    com.android.frameworks.coretests/androidx.test.runner.AndroidJUnitRunner

To run a tests within a specific package, add -e AFTER -w and before the runner class:

    -e package android.content.pm

To run a specific test or method within a test:

    -e class android.content.pm.PackageParserTest
    -e class android.content.pm.PackageParserTest#testComputeMinSdkVersion

To run tests in debug mode:

    -e debug true

To uninstall the package:

  adb shell pm uninstall -k com.android.frameworks.coretests

For more arguments, see the guide to command=line testing:

  https://developer.android.com/studio/test/command-line.html