From e7cc3ae663470506e53da5e3342ab2d99950cd79 Mon Sep 17 00:00:00 2001 From: David Su <dysu@google.com> Date: Thu, 3 Dec 2020 14:28:24 -0800 Subject: [PATCH] Split updatable/non-updatable Wifi APIs into separate directories This creates a clearer boundary between what is updatable (part of the Wifi module) and what is not updatable (outside the module). Bug: 176105484 Test: compiles Change-Id: Ia95e300da9286d79ee57c285c3bfa88ecc98e326 --- wifi/Android.bp | 18 +------- wifi/non-updatable/java/Android.bp | 35 +++++++++++++++ .../wifi/SoftApConfToXmlMigrationUtil.java | 0 .../src}/android/net/wifi/WifiMigration.java | 0 .../net/wifi/WifiNetworkScoreCache.java | 6 +-- .../net/wifi/nl80211/ChannelSettings.java | 0 .../wifi/nl80211/DeviceWiphyCapabilities.java | 0 .../net/wifi/nl80211/HiddenNetwork.java | 0 .../net/wifi/nl80211/NativeScanResult.java | 0 .../net/wifi/nl80211/NativeWifiClient.java | 0 .../android/net/wifi/nl80211/PnoNetwork.java | 0 .../android/net/wifi/nl80211/PnoSettings.java | 0 .../net/wifi/nl80211/RadioChainInfo.java | 0 .../net/wifi/nl80211/SingleScanSettings.java | 0 .../net/wifi/nl80211/WifiNl80211Manager.java | 0 wifi/non-updatable/tests/Android.bp | 44 +++++++++++++++++++ wifi/non-updatable/tests/AndroidManifest.xml | 38 ++++++++++++++++ wifi/non-updatable/tests/AndroidTest.xml | 28 ++++++++++++ wifi/non-updatable/tests/README.md | 32 ++++++++++++++ .../SoftApConfToXmlMigrationUtilTest.java | 0 .../net/wifi/WifiNetworkScoreCacheTest.java | 2 +- .../nl80211/DeviceWiphyCapabilitiesTest.java | 0 .../wifi/nl80211/NativeScanResultTest.java | 0 .../net/wifi/nl80211/PnoSettingsTest.java | 0 .../wifi/nl80211/SingleScanSettingsTest.java | 0 .../wifi/nl80211/WifiNl80211ManagerTest.java | 0 26 files changed, 182 insertions(+), 21 deletions(-) create mode 100644 wifi/non-updatable/java/Android.bp rename wifi/{java => non-updatable/java/src}/android/net/wifi/SoftApConfToXmlMigrationUtil.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/WifiMigration.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/WifiNetworkScoreCache.java (99%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/ChannelSettings.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/DeviceWiphyCapabilities.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/HiddenNetwork.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/NativeScanResult.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/NativeWifiClient.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/PnoNetwork.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/PnoSettings.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/RadioChainInfo.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/SingleScanSettings.java (100%) rename wifi/{java => non-updatable/java/src}/android/net/wifi/nl80211/WifiNl80211Manager.java (100%) create mode 100644 wifi/non-updatable/tests/Android.bp create mode 100644 wifi/non-updatable/tests/AndroidManifest.xml create mode 100644 wifi/non-updatable/tests/AndroidTest.xml create mode 100644 wifi/non-updatable/tests/README.md rename wifi/{ => non-updatable}/tests/src/android/net/wifi/SoftApConfToXmlMigrationUtilTest.java (100%) rename wifi/{ => non-updatable}/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java (99%) rename wifi/{ => non-updatable}/tests/src/android/net/wifi/nl80211/DeviceWiphyCapabilitiesTest.java (100%) rename wifi/{ => non-updatable}/tests/src/android/net/wifi/nl80211/NativeScanResultTest.java (100%) rename wifi/{ => non-updatable}/tests/src/android/net/wifi/nl80211/PnoSettingsTest.java (100%) rename wifi/{ => non-updatable}/tests/src/android/net/wifi/nl80211/SingleScanSettingsTest.java (100%) rename wifi/{ => non-updatable}/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java (100%) diff --git a/wifi/Android.bp b/wifi/Android.bp index c05f52c7bef5..07b2ea9f7847 100644 --- a/wifi/Android.bp +++ b/wifi/Android.bp @@ -31,9 +31,6 @@ filegroup { "java/**/*.java", "java/**/*.aidl", ], - exclude_srcs: [ - ":framework-wifi-non-updatable-sources" - ], path: "java", visibility: ["//visibility:private"], } @@ -47,20 +44,6 @@ filegroup { ], } -filegroup { - name: "framework-wifi-non-updatable-sources", - srcs: [ - // TODO(b/146011398) package android.net.wifi is now split amongst 2 jars: framework.jar and - // framework-wifi.jar. This is not a good idea, should move WifiNetworkScoreCache - // to a separate package. - "java/android/net/wifi/SoftApConfToXmlMigrationUtil.java", - "java/android/net/wifi/WifiNetworkScoreCache.java", - "java/android/net/wifi/WifiMigration.java", - "java/android/net/wifi/nl80211/*.java", - ":libwificond_ipc_aidl", - ], -} - filegroup { name: "framework-wifi-annotations", srcs: ["java/android/net/wifi/WifiAnnotations.java"], @@ -69,6 +52,7 @@ filegroup { // list of tests that are allowed to access @hide APIs from framework-wifi test_access_hidden_api_whitelist = [ "//frameworks/base/wifi/tests", + "//frameworks/base/wifi/non-updatable/tests", "//frameworks/opt/net/wifi/tests/wifitests:__subpackages__", "//external/robolectric-shadows:__subpackages__", diff --git a/wifi/non-updatable/java/Android.bp b/wifi/non-updatable/java/Android.bp new file mode 100644 index 000000000000..b35b4be55818 --- /dev/null +++ b/wifi/non-updatable/java/Android.bp @@ -0,0 +1,35 @@ +// Copyright (C) 2020 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. + +// This directory contains framework Wifi APIs that are not part of the Wifi module (i.e. not +// updatable), and are generally only called by the Wifi module. + +// necessary since we only want the `path` property to only refer to these files +filegroup { + name: "framework-wifi-non-updatable-sources-internal", + srcs: ["src/**/*.java"], + path: "src", + visibility: ["//visibility:private"], +} + +filegroup { + name: "framework-wifi-non-updatable-sources", + srcs: [ + // TODO(b/146011398) package android.net.wifi is now split amongst 2 jars: framework.jar and + // framework-wifi.jar. This is not a good idea, should move WifiNetworkScoreCache + // to a separate package. + ":framework-wifi-non-updatable-sources-internal", + ":libwificond_ipc_aidl", + ], +} diff --git a/wifi/java/android/net/wifi/SoftApConfToXmlMigrationUtil.java b/wifi/non-updatable/java/src/android/net/wifi/SoftApConfToXmlMigrationUtil.java similarity index 100% rename from wifi/java/android/net/wifi/SoftApConfToXmlMigrationUtil.java rename to wifi/non-updatable/java/src/android/net/wifi/SoftApConfToXmlMigrationUtil.java diff --git a/wifi/java/android/net/wifi/WifiMigration.java b/wifi/non-updatable/java/src/android/net/wifi/WifiMigration.java similarity index 100% rename from wifi/java/android/net/wifi/WifiMigration.java rename to wifi/non-updatable/java/src/android/net/wifi/WifiMigration.java diff --git a/wifi/java/android/net/wifi/WifiNetworkScoreCache.java b/wifi/non-updatable/java/src/android/net/wifi/WifiNetworkScoreCache.java similarity index 99% rename from wifi/java/android/net/wifi/WifiNetworkScoreCache.java rename to wifi/non-updatable/java/src/android/net/wifi/WifiNetworkScoreCache.java index 378549d62edf..39036580e2ef 100755 --- a/wifi/java/android/net/wifi/WifiNetworkScoreCache.java +++ b/wifi/non-updatable/java/src/android/net/wifi/WifiNetworkScoreCache.java @@ -89,7 +89,7 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub { @Override public final void updateScores(List<ScoredNetwork> networks) { if (networks == null || networks.isEmpty()) { - return; + return; } if (DBG) { Log.d(TAG, "updateScores list size=" + networks.size()); @@ -97,7 +97,7 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub { boolean changed = false; - synchronized(mLock) { + synchronized (mLock) { for (ScoredNetwork network : networks) { String networkKey = buildNetworkKey(network); if (networkKey == null) { @@ -189,7 +189,7 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub { String key = buildNetworkKey(result); if (key == null) return null; - synchronized(mLock) { + synchronized (mLock) { ScoredNetwork network = mCache.get(key); return network; } diff --git a/wifi/java/android/net/wifi/nl80211/ChannelSettings.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/ChannelSettings.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/ChannelSettings.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/ChannelSettings.java diff --git a/wifi/java/android/net/wifi/nl80211/DeviceWiphyCapabilities.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/DeviceWiphyCapabilities.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/DeviceWiphyCapabilities.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/DeviceWiphyCapabilities.java diff --git a/wifi/java/android/net/wifi/nl80211/HiddenNetwork.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/HiddenNetwork.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/HiddenNetwork.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/HiddenNetwork.java diff --git a/wifi/java/android/net/wifi/nl80211/NativeScanResult.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/NativeScanResult.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/NativeScanResult.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/NativeScanResult.java diff --git a/wifi/java/android/net/wifi/nl80211/NativeWifiClient.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/NativeWifiClient.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/NativeWifiClient.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/NativeWifiClient.java diff --git a/wifi/java/android/net/wifi/nl80211/PnoNetwork.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/PnoNetwork.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/PnoNetwork.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/PnoNetwork.java diff --git a/wifi/java/android/net/wifi/nl80211/PnoSettings.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/PnoSettings.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/PnoSettings.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/PnoSettings.java diff --git a/wifi/java/android/net/wifi/nl80211/RadioChainInfo.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/RadioChainInfo.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/RadioChainInfo.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/RadioChainInfo.java diff --git a/wifi/java/android/net/wifi/nl80211/SingleScanSettings.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/SingleScanSettings.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/SingleScanSettings.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/SingleScanSettings.java diff --git a/wifi/java/android/net/wifi/nl80211/WifiNl80211Manager.java b/wifi/non-updatable/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java similarity index 100% rename from wifi/java/android/net/wifi/nl80211/WifiNl80211Manager.java rename to wifi/non-updatable/java/src/android/net/wifi/nl80211/WifiNl80211Manager.java diff --git a/wifi/non-updatable/tests/Android.bp b/wifi/non-updatable/tests/Android.bp new file mode 100644 index 000000000000..3f5cacff017f --- /dev/null +++ b/wifi/non-updatable/tests/Android.bp @@ -0,0 +1,44 @@ +// Copyright (C) 2020 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. + +android_test { + name: "FrameworksWifiNonUpdatableApiTests", + + defaults: ["framework-wifi-test-defaults"], + + srcs: ["src/**/*.java"], + + jacoco: { + include_filter: ["android.net.wifi.*"], + // TODO(b/147521214) need to exclude test classes + exclude_filter: [], + }, + + static_libs: [ + "androidx.test.rules", + "frameworks-base-testutils", + "guava", + "mockito-target-minus-junit4", + "truth-prebuilt", + ], + + libs: [ + "android.test.runner", + "android.test.base", + ], + + test_suites: [ + "general-tests", + ], +} diff --git a/wifi/non-updatable/tests/AndroidManifest.xml b/wifi/non-updatable/tests/AndroidManifest.xml new file mode 100644 index 000000000000..b4b6b2d7997a --- /dev/null +++ b/wifi/non-updatable/tests/AndroidManifest.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2020 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 + --> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="android.net.wifi.test"> + + <application> + <uses-library android:name="android.test.runner"/> + <activity android:label="WifiTestDummyLabel" + android:name="WifiTestDummyName" + android:exported="true"> + <intent-filter> + <action android:name="android.intent.action.MAIN"/> + <category android:name="android.intent.category.LAUNCHER"/> + </intent-filter> + </activity> + </application> + + <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" + android:targetPackage="android.net.wifi.test" + android:label="Frameworks Wifi Non-updatable API Tests"> + </instrumentation> + +</manifest> diff --git a/wifi/non-updatable/tests/AndroidTest.xml b/wifi/non-updatable/tests/AndroidTest.xml new file mode 100644 index 000000000000..5f3fdd46556e --- /dev/null +++ b/wifi/non-updatable/tests/AndroidTest.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2020 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. +--> +<configuration description="Runs Frameworks Wifi Non-updatable API Tests."> + <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller"> + <option name="test-file-name" value="FrameworksWifiNonUpdatableApiTests.apk" /> + </target_preparer> + + <option name="test-suite-tag" value="apct" /> + <option name="test-tag" value="FrameworksWifiNonUpdatableApiTests" /> + <test class="com.android.tradefed.testtype.AndroidJUnitTest" > + <option name="package" value="android.net.wifi.test" /> + <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" /> + <option name="hidden-api-checks" value="false"/> + </test> +</configuration> diff --git a/wifi/non-updatable/tests/README.md b/wifi/non-updatable/tests/README.md new file mode 100644 index 000000000000..ad535f4ed86a --- /dev/null +++ b/wifi/non-updatable/tests/README.md @@ -0,0 +1,32 @@ +# Wifi Non-Updatable Framework Unit Tests +This package contains unit tests for the non-updatable part (i.e. outside the Wifi module) of the +Android Wifi framework APIs based on the +[Android Testing Support Library](http://developer.android.com/tools/testing-support-library/index.html). +The test cases are built using the [JUnit](http://junit.org/) and [Mockito](http://mockito.org/) +libraries. + +## Running Tests +The easiest way to run tests is simply run + +``` +atest android.net.wifi +``` + +To pick up changes in framework/base, you will need to: +1. rebuild the framework library 'make -j32' +2. sync over the updated library to the device 'adb sync' +3. restart framework on the device 'adb shell stop' then 'adb shell start' + +To enable syncing data to the device for first time after clean reflash: +1. adb disable-verity +2. adb reboot +3. adb remount + +## Adding Tests +Tests can be added by adding classes to the src directory. JUnit4 style test cases can +be written by simply annotating test methods with `org.junit.Test`. + +## Debugging Tests +If you are trying to debug why tests are not doing what you expected, you can add android log +statements and use logcat to view them. The beginning and end of every tests is automatically logged +with the tag `TestRunner`. diff --git a/wifi/tests/src/android/net/wifi/SoftApConfToXmlMigrationUtilTest.java b/wifi/non-updatable/tests/src/android/net/wifi/SoftApConfToXmlMigrationUtilTest.java similarity index 100% rename from wifi/tests/src/android/net/wifi/SoftApConfToXmlMigrationUtilTest.java rename to wifi/non-updatable/tests/src/android/net/wifi/SoftApConfToXmlMigrationUtilTest.java diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java b/wifi/non-updatable/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java similarity index 99% rename from wifi/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java rename to wifi/non-updatable/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java index fdd11a385651..c4967ebf1736 100644 --- a/wifi/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java +++ b/wifi/non-updatable/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java @@ -11,7 +11,7 @@ * 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 + * limitations under the License. */ package android.net.wifi; diff --git a/wifi/tests/src/android/net/wifi/nl80211/DeviceWiphyCapabilitiesTest.java b/wifi/non-updatable/tests/src/android/net/wifi/nl80211/DeviceWiphyCapabilitiesTest.java similarity index 100% rename from wifi/tests/src/android/net/wifi/nl80211/DeviceWiphyCapabilitiesTest.java rename to wifi/non-updatable/tests/src/android/net/wifi/nl80211/DeviceWiphyCapabilitiesTest.java diff --git a/wifi/tests/src/android/net/wifi/nl80211/NativeScanResultTest.java b/wifi/non-updatable/tests/src/android/net/wifi/nl80211/NativeScanResultTest.java similarity index 100% rename from wifi/tests/src/android/net/wifi/nl80211/NativeScanResultTest.java rename to wifi/non-updatable/tests/src/android/net/wifi/nl80211/NativeScanResultTest.java diff --git a/wifi/tests/src/android/net/wifi/nl80211/PnoSettingsTest.java b/wifi/non-updatable/tests/src/android/net/wifi/nl80211/PnoSettingsTest.java similarity index 100% rename from wifi/tests/src/android/net/wifi/nl80211/PnoSettingsTest.java rename to wifi/non-updatable/tests/src/android/net/wifi/nl80211/PnoSettingsTest.java diff --git a/wifi/tests/src/android/net/wifi/nl80211/SingleScanSettingsTest.java b/wifi/non-updatable/tests/src/android/net/wifi/nl80211/SingleScanSettingsTest.java similarity index 100% rename from wifi/tests/src/android/net/wifi/nl80211/SingleScanSettingsTest.java rename to wifi/non-updatable/tests/src/android/net/wifi/nl80211/SingleScanSettingsTest.java diff --git a/wifi/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java b/wifi/non-updatable/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java similarity index 100% rename from wifi/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java rename to wifi/non-updatable/tests/src/android/net/wifi/nl80211/WifiNl80211ManagerTest.java -- GitLab