Merge "Enable instant app mode for CtsNetTestCases" into qt-dev
am: 732767e5a9 Change-Id: I931369875c86a396a898682009337cef1b918ba4
This commit is contained in:
@@ -16,7 +16,8 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="android.net.cts">
|
package="android.net.cts"
|
||||||
|
android:targetSandboxVersion="2">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
@@ -36,12 +37,6 @@
|
|||||||
<application android:usesCleartextTraffic="true">
|
<application android:usesCleartextTraffic="true">
|
||||||
<uses-library android:name="android.test.runner" />
|
<uses-library android:name="android.test.runner" />
|
||||||
<uses-library android:name="org.apache.http.legacy" android:required="false" />
|
<uses-library android:name="org.apache.http.legacy" android:required="false" />
|
||||||
|
|
||||||
<receiver android:name=".ConnectivityReceiver">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
|
||||||
</intent-filter>
|
|
||||||
</receiver>
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
|
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|||||||
@@ -16,11 +16,12 @@
|
|||||||
<option name="test-suite-tag" value="cts" />
|
<option name="test-suite-tag" value="cts" />
|
||||||
<option name="config-descriptor:metadata" key="component" value="networking" />
|
<option name="config-descriptor:metadata" key="component" value="networking" />
|
||||||
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
|
<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
|
||||||
|
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
|
||||||
|
<option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
|
||||||
<option name="not-shardable" value="true" />
|
<option name="not-shardable" value="true" />
|
||||||
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
|
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
|
||||||
<option name="cleanup-apks" value="true" />
|
<option name="cleanup-apks" value="true" />
|
||||||
<option name="test-file-name" value="CtsNetTestCases.apk" />
|
<option name="test-file-name" value="CtsNetTestCases.apk" />
|
||||||
<option name="test-file-name" value="CtsNetTestAppForApi23.apk" />
|
|
||||||
</target_preparer>
|
</target_preparer>
|
||||||
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
|
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
|
||||||
<option name="package" value="android.net.cts" />
|
<option name="package" value="android.net.cts" />
|
||||||
|
|||||||
51
tests/cts/net/api23Test/Android.bp
Normal file
51
tests/cts/net/api23Test/Android.bp
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
// Copyright (C) 2019 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: "CtsNetApi23TestCases",
|
||||||
|
defaults: ["cts_defaults"],
|
||||||
|
|
||||||
|
// Include both the 32 and 64 bit versions
|
||||||
|
compile_multilib: "both",
|
||||||
|
|
||||||
|
libs: [
|
||||||
|
"android.test.base.stubs",
|
||||||
|
],
|
||||||
|
|
||||||
|
srcs: [
|
||||||
|
"src/**/*.java",
|
||||||
|
"src/**/*.kt",
|
||||||
|
],
|
||||||
|
|
||||||
|
static_libs: [
|
||||||
|
"core-tests-support",
|
||||||
|
"compatibility-device-util-axt",
|
||||||
|
"ctstestrunner-axt",
|
||||||
|
"ctstestserver",
|
||||||
|
"mockwebserver",
|
||||||
|
"junit",
|
||||||
|
"junit-params",
|
||||||
|
"truth-prebuilt",
|
||||||
|
],
|
||||||
|
|
||||||
|
platform_apis: true,
|
||||||
|
|
||||||
|
// Tag this module as a cts test artifact
|
||||||
|
test_suites: [
|
||||||
|
"cts",
|
||||||
|
"vts",
|
||||||
|
"general-tests",
|
||||||
|
],
|
||||||
|
|
||||||
|
}
|
||||||
42
tests/cts/net/api23Test/AndroidManifest.xml
Normal file
42
tests/cts/net/api23Test/AndroidManifest.xml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
* Copyright (C) 2019 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.cts.api23test">
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application android:usesCleartextTraffic="true">
|
||||||
|
<uses-library android:name="android.test.runner" />
|
||||||
|
|
||||||
|
<receiver android:name=".ConnectivityReceiver">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
<instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
android:targetPackage="android.net.cts.api23test"
|
||||||
|
android:label="CTS tests of android.net">
|
||||||
|
<meta-data android:name="listener"
|
||||||
|
android:value="com.android.cts.runner.CtsTestRunListener" />
|
||||||
|
</instrumentation>
|
||||||
|
</manifest>
|
||||||
|
|
||||||
30
tests/cts/net/api23Test/AndroidTest.xml
Normal file
30
tests/cts/net/api23Test/AndroidTest.xml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<!-- Copyright (C) 2019 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="Config for CTS Net API23 test cases">
|
||||||
|
<option name="test-suite-tag" value="cts" />
|
||||||
|
<option name="config-descriptor:metadata" key="component" value="networking" />
|
||||||
|
<option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
|
||||||
|
<option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
|
||||||
|
<option name="not-shardable" value="true" />
|
||||||
|
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
|
||||||
|
<option name="cleanup-apks" value="true" />
|
||||||
|
<option name="test-file-name" value="CtsNetApi23TestCases.apk" />
|
||||||
|
<option name="test-file-name" value="CtsNetTestAppForApi23.apk" />
|
||||||
|
</target_preparer>
|
||||||
|
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
|
||||||
|
<option name="package" value="android.net.cts.api23test" />
|
||||||
|
<option name="hidden-api-checks" value="false" />
|
||||||
|
</test>
|
||||||
|
</configuration>
|
||||||
@@ -0,0 +1,399 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package android.net.cts.api23test;
|
||||||
|
|
||||||
|
import static android.content.pm.PackageManager.FEATURE_WIFI;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.ComponentName;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.Network;
|
||||||
|
import android.net.NetworkCapabilities;
|
||||||
|
import android.net.NetworkInfo;
|
||||||
|
import android.net.NetworkInfo.State;
|
||||||
|
import android.net.NetworkRequest;
|
||||||
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.os.Looper;
|
||||||
|
import android.system.Os;
|
||||||
|
import android.system.OsConstants;
|
||||||
|
import android.test.AndroidTestCase;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
import java.net.Socket;
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class ConnectivityManagerApi23Test extends AndroidTestCase {
|
||||||
|
private static final String TAG = ConnectivityManagerApi23Test.class.getSimpleName();
|
||||||
|
|
||||||
|
private static final String TEST_HOST = "connectivitycheck.gstatic.com";
|
||||||
|
private static final int SOCKET_TIMEOUT_MS = 2000;
|
||||||
|
private static final int SEND_BROADCAST_TIMEOUT = 30000;
|
||||||
|
private static final int HTTP_PORT = 80;
|
||||||
|
// Intent string to get the number of wifi CONNECTIVITY_ACTION callbacks the test app has seen
|
||||||
|
public static final String GET_WIFI_CONNECTIVITY_ACTION_COUNT =
|
||||||
|
"android.net.cts.appForApi23.getWifiConnectivityActionCount";
|
||||||
|
// Action sent to ConnectivityActionReceiver when a network callback is sent via PendingIntent.
|
||||||
|
private static final String NETWORK_CALLBACK_ACTION =
|
||||||
|
"ConnectivityManagerTest.NetworkCallbackAction";
|
||||||
|
private static final String HTTP_REQUEST =
|
||||||
|
"GET /generate_204 HTTP/1.0\r\n" +
|
||||||
|
"Host: " + TEST_HOST + "\r\n" +
|
||||||
|
"Connection: keep-alive\r\n\r\n";
|
||||||
|
|
||||||
|
private Context mContext;
|
||||||
|
private ConnectivityManager mCm;
|
||||||
|
private WifiManager mWifiManager;
|
||||||
|
private PackageManager mPackageManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setUp() throws Exception {
|
||||||
|
super.setUp();
|
||||||
|
Looper.prepare();
|
||||||
|
mContext = getContext();
|
||||||
|
mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
|
||||||
|
mPackageManager = mContext.getPackageManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests reporting of connectivity changed.
|
||||||
|
*/
|
||||||
|
public void testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent() {
|
||||||
|
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
||||||
|
Log.i(TAG, "testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent cannot execute unless device supports WiFi");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ConnectivityReceiver.prepare();
|
||||||
|
|
||||||
|
toggleWifi();
|
||||||
|
|
||||||
|
// The connectivity broadcast has been sent; push through a terminal broadcast
|
||||||
|
// to wait for in the receive to confirm it didn't see the connectivity change.
|
||||||
|
Intent finalIntent = new Intent(ConnectivityReceiver.FINAL_ACTION);
|
||||||
|
finalIntent.setClass(mContext, ConnectivityReceiver.class);
|
||||||
|
mContext.sendBroadcast(finalIntent);
|
||||||
|
assertFalse(ConnectivityReceiver.waitForBroadcast());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent()
|
||||||
|
throws InterruptedException {
|
||||||
|
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
||||||
|
Log.i(TAG, "testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent cannot"
|
||||||
|
+ "execute unless device supports WiFi");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mContext.startActivity(new Intent()
|
||||||
|
.setComponent(new ComponentName("android.net.cts.appForApi23",
|
||||||
|
"android.net.cts.appForApi23.ConnectivityListeningActivity"))
|
||||||
|
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
||||||
|
Thread.sleep(200);
|
||||||
|
|
||||||
|
toggleWifi();
|
||||||
|
|
||||||
|
Intent getConnectivityCount = new Intent(GET_WIFI_CONNECTIVITY_ACTION_COUNT);
|
||||||
|
assertEquals(2, sendOrderedBroadcastAndReturnResultCode(
|
||||||
|
getConnectivityCount, SEND_BROADCAST_TIMEOUT));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testConnectivityChanged_whenRegistered_shouldReceiveIntent() {
|
||||||
|
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
||||||
|
Log.i(TAG, "testConnectivityChanged_whenRegistered_shouldReceiveIntent cannot execute unless device supports WiFi");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ConnectivityReceiver.prepare();
|
||||||
|
ConnectivityReceiver receiver = new ConnectivityReceiver();
|
||||||
|
IntentFilter filter = new IntentFilter();
|
||||||
|
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||||
|
mContext.registerReceiver(receiver, filter);
|
||||||
|
|
||||||
|
toggleWifi();
|
||||||
|
Intent finalIntent = new Intent(ConnectivityReceiver.FINAL_ACTION);
|
||||||
|
finalIntent.setClass(mContext, ConnectivityReceiver.class);
|
||||||
|
mContext.sendBroadcast(finalIntent);
|
||||||
|
|
||||||
|
assertTrue(ConnectivityReceiver.waitForBroadcast());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle WiFi twice, leaving it in the state it started in
|
||||||
|
private void toggleWifi() {
|
||||||
|
if (mWifiManager.isWifiEnabled()) {
|
||||||
|
Network wifiNetwork = getWifiNetwork();
|
||||||
|
disconnectFromWifi(wifiNetwork);
|
||||||
|
connectToWifi();
|
||||||
|
} else {
|
||||||
|
connectToWifi();
|
||||||
|
Network wifiNetwork = getWifiNetwork();
|
||||||
|
disconnectFromWifi(wifiNetwork);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int sendOrderedBroadcastAndReturnResultCode(
|
||||||
|
Intent intent, int timeoutMs) throws InterruptedException {
|
||||||
|
final LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1);
|
||||||
|
mContext.sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
result.offer(getResultCode());
|
||||||
|
}
|
||||||
|
}, null, 0, null, null);
|
||||||
|
|
||||||
|
Integer resultCode = result.poll(timeoutMs, TimeUnit.MILLISECONDS);
|
||||||
|
assertNotNull("Timed out (more than " + timeoutMs +
|
||||||
|
" milliseconds) waiting for result code for broadcast", resultCode);
|
||||||
|
return resultCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Network getWifiNetwork() {
|
||||||
|
TestNetworkCallback callback = new TestNetworkCallback();
|
||||||
|
mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
|
||||||
|
Network network = null;
|
||||||
|
try {
|
||||||
|
network = callback.waitForAvailable();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
fail("NetworkCallback wait was interrupted.");
|
||||||
|
} finally {
|
||||||
|
mCm.unregisterNetworkCallback(callback);
|
||||||
|
}
|
||||||
|
assertNotNull("Cannot find Network for wifi. Is wifi connected?", network);
|
||||||
|
return network;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Disable WiFi and wait for it to become disconnected from the network. */
|
||||||
|
private void disconnectFromWifi(Network wifiNetworkToCheck) {
|
||||||
|
final TestNetworkCallback callback = new TestNetworkCallback();
|
||||||
|
mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
|
||||||
|
Network lostWifiNetwork = null;
|
||||||
|
|
||||||
|
ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
|
||||||
|
ConnectivityManager.TYPE_WIFI, NetworkInfo.State.DISCONNECTED);
|
||||||
|
IntentFilter filter = new IntentFilter();
|
||||||
|
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||||
|
mContext.registerReceiver(receiver, filter);
|
||||||
|
|
||||||
|
// Assert that we can establish a TCP connection on wifi.
|
||||||
|
Socket wifiBoundSocket = null;
|
||||||
|
if (wifiNetworkToCheck != null) {
|
||||||
|
try {
|
||||||
|
wifiBoundSocket = getBoundSocket(wifiNetworkToCheck, TEST_HOST, HTTP_PORT);
|
||||||
|
testHttpRequest(wifiBoundSocket);
|
||||||
|
} catch (IOException e) {
|
||||||
|
fail("HTTP request before wifi disconnected failed with: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean disconnected = false;
|
||||||
|
try {
|
||||||
|
assertTrue(mWifiManager.setWifiEnabled(false));
|
||||||
|
// Ensure we get both an onLost callback and a CONNECTIVITY_ACTION.
|
||||||
|
lostWifiNetwork = callback.waitForLost();
|
||||||
|
assertNotNull(lostWifiNetwork);
|
||||||
|
disconnected = receiver.waitForState();
|
||||||
|
} catch (InterruptedException ex) {
|
||||||
|
fail("disconnectFromWifi was interrupted");
|
||||||
|
} finally {
|
||||||
|
mCm.unregisterNetworkCallback(callback);
|
||||||
|
mContext.unregisterReceiver(receiver);
|
||||||
|
}
|
||||||
|
|
||||||
|
assertTrue("Wifi failed to reach DISCONNECTED state.", disconnected);
|
||||||
|
|
||||||
|
// Check that the socket is closed when wifi disconnects.
|
||||||
|
if (wifiBoundSocket != null) {
|
||||||
|
try {
|
||||||
|
testHttpRequest(wifiBoundSocket);
|
||||||
|
fail("HTTP request should not succeed after wifi disconnects");
|
||||||
|
} catch (IOException expected) {
|
||||||
|
assertEquals(Os.strerror(OsConstants.ECONNABORTED), expected.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Enable WiFi and wait for it to become connected to a network. */
|
||||||
|
private Network connectToWifi() {
|
||||||
|
final TestNetworkCallback callback = new TestNetworkCallback();
|
||||||
|
mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
|
||||||
|
Network wifiNetwork = null;
|
||||||
|
|
||||||
|
ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
|
||||||
|
ConnectivityManager.TYPE_WIFI, NetworkInfo.State.CONNECTED);
|
||||||
|
IntentFilter filter = new IntentFilter();
|
||||||
|
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||||
|
mContext.registerReceiver(receiver, filter);
|
||||||
|
|
||||||
|
boolean connected = false;
|
||||||
|
try {
|
||||||
|
assertTrue(mWifiManager.setWifiEnabled(true));
|
||||||
|
// Ensure we get both an onAvailable callback and a CONNECTIVITY_ACTION.
|
||||||
|
wifiNetwork = callback.waitForAvailable();
|
||||||
|
assertNotNull(wifiNetwork);
|
||||||
|
connected = receiver.waitForState();
|
||||||
|
} catch (InterruptedException ex) {
|
||||||
|
fail("connectToWifi was interrupted");
|
||||||
|
} finally {
|
||||||
|
mCm.unregisterNetworkCallback(callback);
|
||||||
|
mContext.unregisterReceiver(receiver);
|
||||||
|
}
|
||||||
|
|
||||||
|
assertTrue("Wifi must be configured to connect to an access point for this test.",
|
||||||
|
connected);
|
||||||
|
return wifiNetwork;
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkRequest makeWifiNetworkRequest() {
|
||||||
|
return new NetworkRequest.Builder()
|
||||||
|
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void testHttpRequest(Socket s) throws IOException {
|
||||||
|
OutputStream out = s.getOutputStream();
|
||||||
|
InputStream in = s.getInputStream();
|
||||||
|
|
||||||
|
final byte[] requestBytes = HTTP_REQUEST.getBytes("UTF-8");
|
||||||
|
byte[] responseBytes = new byte[4096];
|
||||||
|
out.write(requestBytes);
|
||||||
|
in.read(responseBytes);
|
||||||
|
assertTrue(new String(responseBytes, "UTF-8").startsWith("HTTP/1.0 204 No Content\r\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Socket getBoundSocket(Network network, String host, int port) throws IOException {
|
||||||
|
InetSocketAddress addr = new InetSocketAddress(host, port);
|
||||||
|
Socket s = network.getSocketFactory().createSocket();
|
||||||
|
try {
|
||||||
|
s.setSoTimeout(SOCKET_TIMEOUT_MS);
|
||||||
|
s.connect(addr, SOCKET_TIMEOUT_MS);
|
||||||
|
} catch (IOException e) {
|
||||||
|
s.close();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Receiver that captures the last connectivity change's network type and state. Recognizes
|
||||||
|
* both {@code CONNECTIVITY_ACTION} and {@code NETWORK_CALLBACK_ACTION} intents.
|
||||||
|
*/
|
||||||
|
private class ConnectivityActionReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
|
private final CountDownLatch mReceiveLatch = new CountDownLatch(1);
|
||||||
|
|
||||||
|
private final int mNetworkType;
|
||||||
|
private final NetworkInfo.State mNetState;
|
||||||
|
|
||||||
|
ConnectivityActionReceiver(int networkType, NetworkInfo.State netState) {
|
||||||
|
mNetworkType = networkType;
|
||||||
|
mNetState = netState;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
String action = intent.getAction();
|
||||||
|
NetworkInfo networkInfo = null;
|
||||||
|
|
||||||
|
// When receiving ConnectivityManager.CONNECTIVITY_ACTION, the NetworkInfo parcelable
|
||||||
|
// is stored in EXTRA_NETWORK_INFO. With a NETWORK_CALLBACK_ACTION, the Network is
|
||||||
|
// sent in EXTRA_NETWORK and we need to ask the ConnectivityManager for the NetworkInfo.
|
||||||
|
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
|
||||||
|
networkInfo = intent.getExtras()
|
||||||
|
.getParcelable(ConnectivityManager.EXTRA_NETWORK_INFO);
|
||||||
|
assertNotNull("ConnectivityActionReceiver expected EXTRA_NETWORK_INFO", networkInfo);
|
||||||
|
} else if (NETWORK_CALLBACK_ACTION.equals(action)) {
|
||||||
|
Network network = intent.getExtras()
|
||||||
|
.getParcelable(ConnectivityManager.EXTRA_NETWORK);
|
||||||
|
assertNotNull("ConnectivityActionReceiver expected EXTRA_NETWORK", network);
|
||||||
|
networkInfo = mCm.getNetworkInfo(network);
|
||||||
|
if (networkInfo == null) {
|
||||||
|
// When disconnecting, it seems like we get an intent sent with an invalid
|
||||||
|
// Network; that is, by the time we call ConnectivityManager.getNetworkInfo(),
|
||||||
|
// it is invalid. Ignore these.
|
||||||
|
Log.i(TAG, "ConnectivityActionReceiver NETWORK_CALLBACK_ACTION ignoring "
|
||||||
|
+ "invalid network");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fail("ConnectivityActionReceiver received unxpected intent action: " + action);
|
||||||
|
}
|
||||||
|
|
||||||
|
assertNotNull("ConnectivityActionReceiver didn't find NetworkInfo", networkInfo);
|
||||||
|
int networkType = networkInfo.getType();
|
||||||
|
State networkState = networkInfo.getState();
|
||||||
|
Log.i(TAG, "Network type: " + networkType + " state: " + networkState);
|
||||||
|
if (networkType == mNetworkType && networkInfo.getState() == mNetState) {
|
||||||
|
mReceiveLatch.countDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean waitForState() throws InterruptedException {
|
||||||
|
return mReceiveLatch.await(30, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback used in testRegisterNetworkCallback that allows caller to block on
|
||||||
|
* {@code onAvailable}.
|
||||||
|
*/
|
||||||
|
private static class TestNetworkCallback extends ConnectivityManager.NetworkCallback {
|
||||||
|
private final CountDownLatch mAvailableLatch = new CountDownLatch(1);
|
||||||
|
private final CountDownLatch mLostLatch = new CountDownLatch(1);
|
||||||
|
private final CountDownLatch mUnavailableLatch = new CountDownLatch(1);
|
||||||
|
|
||||||
|
public Network currentNetwork;
|
||||||
|
public Network lastLostNetwork;
|
||||||
|
|
||||||
|
public Network waitForAvailable() throws InterruptedException {
|
||||||
|
return mAvailableLatch.await(30, TimeUnit.SECONDS) ? currentNetwork : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Network waitForLost() throws InterruptedException {
|
||||||
|
return mLostLatch.await(30, TimeUnit.SECONDS) ? lastLostNetwork : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean waitForUnavailable() throws InterruptedException {
|
||||||
|
return mUnavailableLatch.await(2, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAvailable(Network network) {
|
||||||
|
currentNetwork = network;
|
||||||
|
mAvailableLatch.countDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLost(Network network) {
|
||||||
|
lastLostNetwork = network;
|
||||||
|
if (network.equals(currentNetwork)) {
|
||||||
|
currentNetwork = null;
|
||||||
|
}
|
||||||
|
mLostLatch.countDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUnavailable() {
|
||||||
|
mUnavailableLatch.countDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package android.net.cts;
|
package android.net.cts.api23test;
|
||||||
|
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -18,13 +18,14 @@ package android.net.cts;
|
|||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.lang.Thread;
|
import java.lang.Thread;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
|
||||||
public class AirplaneModeTest extends AndroidTestCase {
|
public class AirplaneModeTest extends AndroidTestCase {
|
||||||
private static final String TAG = "AirplaneModeTest";
|
private static final String TAG = "AirplaneModeTest";
|
||||||
private static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
|
private static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import android.app.Instrumentation;
|
|||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.app.UiAutomation;
|
import android.app.UiAutomation;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -60,6 +59,7 @@ import android.os.Looper;
|
|||||||
import android.os.MessageQueue;
|
import android.os.MessageQueue;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.system.Os;
|
import android.system.Os;
|
||||||
import android.system.OsConstants;
|
import android.system.OsConstants;
|
||||||
@@ -103,8 +103,6 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
|
|
||||||
private static final String TAG = ConnectivityManagerTest.class.getSimpleName();
|
private static final String TAG = ConnectivityManagerTest.class.getSimpleName();
|
||||||
|
|
||||||
private static final String FEATURE_ENABLE_HIPRI = "enableHIPRI";
|
|
||||||
|
|
||||||
public static final int TYPE_MOBILE = ConnectivityManager.TYPE_MOBILE;
|
public static final int TYPE_MOBILE = ConnectivityManager.TYPE_MOBILE;
|
||||||
public static final int TYPE_WIFI = ConnectivityManager.TYPE_WIFI;
|
public static final int TYPE_WIFI = ConnectivityManager.TYPE_WIFI;
|
||||||
|
|
||||||
@@ -114,7 +112,6 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
private static final int CONNECT_TIMEOUT_MS = 2000;
|
private static final int CONNECT_TIMEOUT_MS = 2000;
|
||||||
private static final int KEEPALIVE_CALLBACK_TIMEOUT_MS = 2000;
|
private static final int KEEPALIVE_CALLBACK_TIMEOUT_MS = 2000;
|
||||||
private static final int KEEPALIVE_SOCKET_TIMEOUT_MS = 5000;
|
private static final int KEEPALIVE_SOCKET_TIMEOUT_MS = 5000;
|
||||||
private static final int SEND_BROADCAST_TIMEOUT = 30000;
|
|
||||||
private static final int MIN_KEEPALIVE_INTERVAL = 10;
|
private static final int MIN_KEEPALIVE_INTERVAL = 10;
|
||||||
private static final int NETWORK_CHANGE_METEREDNESS_TIMEOUT = 5000;
|
private static final int NETWORK_CHANGE_METEREDNESS_TIMEOUT = 5000;
|
||||||
private static final int NUM_TRIES_MULTIPATH_PREF_CHECK = 20;
|
private static final int NUM_TRIES_MULTIPATH_PREF_CHECK = 20;
|
||||||
@@ -129,10 +126,6 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
private static final String NETWORK_CALLBACK_ACTION =
|
private static final String NETWORK_CALLBACK_ACTION =
|
||||||
"ConnectivityManagerTest.NetworkCallbackAction";
|
"ConnectivityManagerTest.NetworkCallbackAction";
|
||||||
|
|
||||||
// Intent string to get the number of wifi CONNECTIVITY_ACTION callbacks the test app has seen
|
|
||||||
public static final String GET_WIFI_CONNECTIVITY_ACTION_COUNT =
|
|
||||||
"android.net.cts.appForApi23.getWifiConnectivityActionCount";
|
|
||||||
|
|
||||||
// device could have only one interface: data, wifi.
|
// device could have only one interface: data, wifi.
|
||||||
private static final int MIN_NUM_NETWORK_TYPES = 1;
|
private static final int MIN_NUM_NETWORK_TYPES = 1;
|
||||||
|
|
||||||
@@ -298,6 +291,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
* Tests that connections can be opened on WiFi and cellphone networks,
|
* Tests that connections can be opened on WiFi and cellphone networks,
|
||||||
* and that they are made from different IP addresses.
|
* and that they are made from different IP addresses.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public void testOpenConnection() throws Exception {
|
public void testOpenConnection() throws Exception {
|
||||||
boolean canRunTest = mPackageManager.hasSystemFeature(FEATURE_WIFI)
|
boolean canRunTest = mPackageManager.hasSystemFeature(FEATURE_WIFI)
|
||||||
&& mPackageManager.hasSystemFeature(FEATURE_TELEPHONY);
|
&& mPackageManager.hasSystemFeature(FEATURE_TELEPHONY);
|
||||||
@@ -460,6 +454,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
* WiFi. We could add a version that uses the telephony data connection but it's not clear
|
* WiFi. We could add a version that uses the telephony data connection but it's not clear
|
||||||
* that it would increase test coverage by much (how many devices have 3G radio but not Wifi?).
|
* that it would increase test coverage by much (how many devices have 3G radio but not Wifi?).
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public void testRegisterNetworkCallback() {
|
public void testRegisterNetworkCallback() {
|
||||||
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
||||||
Log.i(TAG, "testRegisterNetworkCallback cannot execute unless device supports WiFi");
|
Log.i(TAG, "testRegisterNetworkCallback cannot execute unless device supports WiFi");
|
||||||
@@ -500,6 +495,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
* {@link #testRegisterNetworkCallback} except that a {@code PendingIntent} is used instead
|
* {@link #testRegisterNetworkCallback} except that a {@code PendingIntent} is used instead
|
||||||
* of a {@code NetworkCallback}.
|
* of a {@code NetworkCallback}.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public void testRegisterNetworkCallback_withPendingIntent() {
|
public void testRegisterNetworkCallback_withPendingIntent() {
|
||||||
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
||||||
Log.i(TAG, "testRegisterNetworkCallback cannot execute unless device supports WiFi");
|
Log.i(TAG, "testRegisterNetworkCallback cannot execute unless device supports WiFi");
|
||||||
@@ -544,6 +540,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
* Exercises the requestNetwork with NetworkCallback API. This checks to
|
* Exercises the requestNetwork with NetworkCallback API. This checks to
|
||||||
* see if we get a callback for an INTERNET request.
|
* see if we get a callback for an INTERNET request.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "CHANGE_NETWORK_STATE permission can't be granted to instant apps")
|
||||||
public void testRequestNetworkCallback() {
|
public void testRequestNetworkCallback() {
|
||||||
final TestNetworkCallback callback = new TestNetworkCallback();
|
final TestNetworkCallback callback = new TestNetworkCallback();
|
||||||
mCm.requestNetwork(new NetworkRequest.Builder()
|
mCm.requestNetwork(new NetworkRequest.Builder()
|
||||||
@@ -566,6 +563,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
* Exercises the requestNetwork with NetworkCallback API with timeout - expected to
|
* Exercises the requestNetwork with NetworkCallback API with timeout - expected to
|
||||||
* fail. Use WIFI and switch Wi-Fi off.
|
* fail. Use WIFI and switch Wi-Fi off.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public void testRequestNetworkCallback_onUnavailable() {
|
public void testRequestNetworkCallback_onUnavailable() {
|
||||||
final boolean previousWifiEnabledState = mWifiManager.isWifiEnabled();
|
final boolean previousWifiEnabledState = mWifiManager.isWifiEnabled();
|
||||||
if (previousWifiEnabledState) {
|
if (previousWifiEnabledState) {
|
||||||
@@ -591,93 +589,6 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests reporting of connectivity changed.
|
|
||||||
*/
|
|
||||||
public void testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent() {
|
|
||||||
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
|
||||||
Log.i(TAG, "testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent cannot execute unless device supports WiFi");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ConnectivityReceiver.prepare();
|
|
||||||
|
|
||||||
toggleWifi();
|
|
||||||
|
|
||||||
// The connectivity broadcast has been sent; push through a terminal broadcast
|
|
||||||
// to wait for in the receive to confirm it didn't see the connectivity change.
|
|
||||||
Intent finalIntent = new Intent(ConnectivityReceiver.FINAL_ACTION);
|
|
||||||
finalIntent.setClass(mContext, ConnectivityReceiver.class);
|
|
||||||
mContext.sendBroadcast(finalIntent);
|
|
||||||
assertFalse(ConnectivityReceiver.waitForBroadcast());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testConnectivityChanged_whenRegistered_shouldReceiveIntent() {
|
|
||||||
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
|
||||||
Log.i(TAG, "testConnectivityChanged_whenRegistered_shouldReceiveIntent cannot execute unless device supports WiFi");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ConnectivityReceiver.prepare();
|
|
||||||
ConnectivityReceiver receiver = new ConnectivityReceiver();
|
|
||||||
IntentFilter filter = new IntentFilter();
|
|
||||||
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
|
||||||
mContext.registerReceiver(receiver, filter);
|
|
||||||
|
|
||||||
toggleWifi();
|
|
||||||
Intent finalIntent = new Intent(ConnectivityReceiver.FINAL_ACTION);
|
|
||||||
finalIntent.setClass(mContext, ConnectivityReceiver.class);
|
|
||||||
mContext.sendBroadcast(finalIntent);
|
|
||||||
|
|
||||||
assertTrue(ConnectivityReceiver.waitForBroadcast());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent()
|
|
||||||
throws InterruptedException {
|
|
||||||
if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
|
|
||||||
Log.i(TAG, "testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent cannot execute unless device supports WiFi");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mContext.startActivity(new Intent()
|
|
||||||
.setComponent(new ComponentName("android.net.cts.appForApi23",
|
|
||||||
"android.net.cts.appForApi23.ConnectivityListeningActivity"))
|
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
|
||||||
Thread.sleep(200);
|
|
||||||
|
|
||||||
toggleWifi();
|
|
||||||
|
|
||||||
Intent getConnectivityCount = new Intent(GET_WIFI_CONNECTIVITY_ACTION_COUNT);
|
|
||||||
assertEquals(2, sendOrderedBroadcastAndReturnResultCode(
|
|
||||||
getConnectivityCount, SEND_BROADCAST_TIMEOUT));
|
|
||||||
}
|
|
||||||
|
|
||||||
private int sendOrderedBroadcastAndReturnResultCode(
|
|
||||||
Intent intent, int timeoutMs) throws InterruptedException {
|
|
||||||
final LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1);
|
|
||||||
mContext.sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
|
|
||||||
@Override
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
|
||||||
result.offer(getResultCode());
|
|
||||||
}
|
|
||||||
}, null, 0, null, null);
|
|
||||||
|
|
||||||
Integer resultCode = result.poll(timeoutMs, TimeUnit.MILLISECONDS);
|
|
||||||
assertNotNull("Timed out (more than " + timeoutMs +
|
|
||||||
" milliseconds) waiting for result code for broadcast", resultCode);
|
|
||||||
return resultCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Toggle WiFi twice, leaving it in the state it started in
|
|
||||||
private void toggleWifi() {
|
|
||||||
if (mWifiManager.isWifiEnabled()) {
|
|
||||||
Network wifiNetwork = getWifiNetwork();
|
|
||||||
disconnectFromWifi(wifiNetwork);
|
|
||||||
connectToWifi();
|
|
||||||
} else {
|
|
||||||
connectToWifi();
|
|
||||||
Network wifiNetwork = getWifiNetwork();
|
|
||||||
disconnectFromWifi(wifiNetwork);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Enable WiFi and wait for it to become connected to a network. */
|
/** Enable WiFi and wait for it to become connected to a network. */
|
||||||
private Network connectToWifi() {
|
private Network connectToWifi() {
|
||||||
final TestNetworkCallback callback = new TestNetworkCallback();
|
final TestNetworkCallback callback = new TestNetworkCallback();
|
||||||
@@ -913,6 +824,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Verify restricted networks cannot be requested. */
|
/** Verify restricted networks cannot be requested. */
|
||||||
|
@AppModeFull(reason = "CHANGE_NETWORK_STATE permission can't be granted to instant apps")
|
||||||
public void testRestrictedNetworks() {
|
public void testRestrictedNetworks() {
|
||||||
// Verify we can request unrestricted networks:
|
// Verify we can request unrestricted networks:
|
||||||
NetworkRequest request = new NetworkRequest.Builder()
|
NetworkRequest request = new NetworkRequest.Builder()
|
||||||
@@ -1030,6 +942,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
* Verify that getMultipathPreference does return appropriate values
|
* Verify that getMultipathPreference does return appropriate values
|
||||||
* for metered and unmetered networks.
|
* for metered and unmetered networks.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public void testGetMultipathPreference() throws Exception {
|
public void testGetMultipathPreference() throws Exception {
|
||||||
final ContentResolver resolver = mContext.getContentResolver();
|
final ContentResolver resolver = mContext.getContentResolver();
|
||||||
final Network network = ensureWifiConnected();
|
final Network network = ensureWifiConnected();
|
||||||
@@ -1231,6 +1144,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public void testCreateTcpKeepalive() throws Exception {
|
public void testCreateTcpKeepalive() throws Exception {
|
||||||
adoptShellPermissionIdentity();
|
adoptShellPermissionIdentity();
|
||||||
|
|
||||||
@@ -1383,6 +1297,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
* Verifies that the concurrent keepalive slots meet the minimum requirement, and don't
|
* Verifies that the concurrent keepalive slots meet the minimum requirement, and don't
|
||||||
* get leaked after iterations.
|
* get leaked after iterations.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public void testSocketKeepaliveLimit() throws Exception {
|
public void testSocketKeepaliveLimit() throws Exception {
|
||||||
adoptShellPermissionIdentity();
|
adoptShellPermissionIdentity();
|
||||||
|
|
||||||
@@ -1417,6 +1332,7 @@ public class ConnectivityManagerTest extends AndroidTestCase {
|
|||||||
/**
|
/**
|
||||||
* Verifies that the keepalive slots are limited as customized for unprivileged requests.
|
* Verifies that the keepalive slots are limited as customized for unprivileged requests.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public void testSocketKeepaliveUnprivileged() throws Exception {
|
public void testSocketKeepaliveUnprivileged() throws Exception {
|
||||||
final int supported = getSupportedKeepalivesFromRes();
|
final int supported = getSupportedKeepalivesFromRes();
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import android.net.ConnectivityManager;
|
|||||||
import android.net.IpSecAlgorithm;
|
import android.net.IpSecAlgorithm;
|
||||||
import android.net.IpSecManager;
|
import android.net.IpSecManager;
|
||||||
import android.net.IpSecTransform;
|
import android.net.IpSecTransform;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.system.Os;
|
import android.system.Os;
|
||||||
import android.system.OsConstants;
|
import android.system.OsConstants;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@@ -479,6 +480,7 @@ public class IpSecBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testJavaTcpSocketPair() throws Exception {
|
public void testJavaTcpSocketPair() throws Exception {
|
||||||
for (String addr : LOOPBACK_ADDRS) {
|
for (String addr : LOOPBACK_ADDRS) {
|
||||||
InetAddress local = InetAddress.getByName(addr);
|
InetAddress local = InetAddress.getByName(addr);
|
||||||
@@ -490,6 +492,7 @@ public class IpSecBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testJavaUdpSocketPair() throws Exception {
|
public void testJavaUdpSocketPair() throws Exception {
|
||||||
for (String addr : LOOPBACK_ADDRS) {
|
for (String addr : LOOPBACK_ADDRS) {
|
||||||
InetAddress local = InetAddress.getByName(addr);
|
InetAddress local = InetAddress.getByName(addr);
|
||||||
@@ -502,6 +505,7 @@ public class IpSecBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testJavaUdpSocketPairUnconnected() throws Exception {
|
public void testJavaUdpSocketPairUnconnected() throws Exception {
|
||||||
for (String addr : LOOPBACK_ADDRS) {
|
for (String addr : LOOPBACK_ADDRS) {
|
||||||
InetAddress local = InetAddress.getByName(addr);
|
InetAddress local = InetAddress.getByName(addr);
|
||||||
@@ -514,6 +518,7 @@ public class IpSecBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testNativeTcpSocketPair() throws Exception {
|
public void testNativeTcpSocketPair() throws Exception {
|
||||||
for (String addr : LOOPBACK_ADDRS) {
|
for (String addr : LOOPBACK_ADDRS) {
|
||||||
InetAddress local = InetAddress.getByName(addr);
|
InetAddress local = InetAddress.getByName(addr);
|
||||||
@@ -526,6 +531,7 @@ public class IpSecBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testNativeUdpSocketPair() throws Exception {
|
public void testNativeUdpSocketPair() throws Exception {
|
||||||
for (String addr : LOOPBACK_ADDRS) {
|
for (String addr : LOOPBACK_ADDRS) {
|
||||||
InetAddress local = InetAddress.getByName(addr);
|
InetAddress local = InetAddress.getByName(addr);
|
||||||
@@ -538,6 +544,7 @@ public class IpSecBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testNativeUdpSocketPairUnconnected() throws Exception {
|
public void testNativeUdpSocketPairUnconnected() throws Exception {
|
||||||
for (String addr : LOOPBACK_ADDRS) {
|
for (String addr : LOOPBACK_ADDRS) {
|
||||||
InetAddress local = InetAddress.getByName(addr);
|
InetAddress local = InetAddress.getByName(addr);
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import static android.net.cts.PacketUtils.TCP_HDRLEN_WITH_TIMESTAMP_OPT;
|
|||||||
import static android.net.cts.PacketUtils.UDP_HDRLEN;
|
import static android.net.cts.PacketUtils.UDP_HDRLEN;
|
||||||
import static android.system.OsConstants.IPPROTO_TCP;
|
import static android.system.OsConstants.IPPROTO_TCP;
|
||||||
import static android.system.OsConstants.IPPROTO_UDP;
|
import static android.system.OsConstants.IPPROTO_UDP;
|
||||||
|
|
||||||
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
@@ -35,6 +36,7 @@ import android.net.IpSecAlgorithm;
|
|||||||
import android.net.IpSecManager;
|
import android.net.IpSecManager;
|
||||||
import android.net.IpSecTransform;
|
import android.net.IpSecTransform;
|
||||||
import android.net.TrafficStats;
|
import android.net.TrafficStats;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.system.ErrnoException;
|
import android.system.ErrnoException;
|
||||||
import android.system.Os;
|
import android.system.Os;
|
||||||
import android.system.OsConstants;
|
import android.system.OsConstants;
|
||||||
@@ -54,6 +56,7 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public class IpSecManagerTest extends IpSecBaseTest {
|
public class IpSecManagerTest extends IpSecBaseTest {
|
||||||
|
|
||||||
private static final String TAG = IpSecManagerTest.class.getSimpleName();
|
private static final String TAG = IpSecManagerTest.class.getSimpleName();
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import static org.junit.Assume.assumeTrue;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.os.FileUtils;
|
import android.os.FileUtils;
|
||||||
|
|
||||||
import androidx.test.InstrumentationRegistry;
|
import androidx.test.InstrumentationRegistry;
|
||||||
@@ -99,6 +100,7 @@ public class NetworkWatchlistTest {
|
|||||||
* returns the hash of config we set.
|
* returns the hash of config we set.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
|
@AppModeFull(reason = "Cannot access resource file in instant app mode")
|
||||||
public void testGetWatchlistConfigHash() throws Exception {
|
public void testGetWatchlistConfigHash() throws Exception {
|
||||||
// Set watchlist config file for test
|
// Set watchlist config file for test
|
||||||
setWatchlistConfig(TEST_WATCHLIST_XML);
|
setWatchlistConfig(TEST_WATCHLIST_XML);
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import javax.net.SocketFactory;
|
|||||||
import javax.net.ssl.SSLPeerUnverifiedException;
|
import javax.net.ssl.SSLPeerUnverifiedException;
|
||||||
|
|
||||||
import android.net.SSLCertificateSocketFactory;
|
import android.net.SSLCertificateSocketFactory;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
import libcore.javax.net.ssl.SSLConfigurationAsserts;
|
import libcore.javax.net.ssl.SSLConfigurationAsserts;
|
||||||
@@ -101,6 +102,7 @@ public class SSLCertificateSocketFactoryTest extends AndroidTestCase {
|
|||||||
*
|
*
|
||||||
* NOTE: Test will fail if external server is not available.
|
* NOTE: Test will fail if external server is not available.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void test_createSocket_simple() throws Exception {
|
public void test_createSocket_simple() throws Exception {
|
||||||
try {
|
try {
|
||||||
mFactory.createSocket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT);
|
mFactory.createSocket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT);
|
||||||
@@ -117,6 +119,7 @@ public class SSLCertificateSocketFactoryTest extends AndroidTestCase {
|
|||||||
*
|
*
|
||||||
* NOTE: Test will fail if external server is not available.
|
* NOTE: Test will fail if external server is not available.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void test_createSocket_wrapping() throws Exception {
|
public void test_createSocket_wrapping() throws Exception {
|
||||||
try {
|
try {
|
||||||
Socket underlying = new Socket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT);
|
Socket underlying = new Socket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT);
|
||||||
@@ -135,6 +138,7 @@ public class SSLCertificateSocketFactoryTest extends AndroidTestCase {
|
|||||||
*
|
*
|
||||||
* NOTE: Test will fail if external server is not available.
|
* NOTE: Test will fail if external server is not available.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void test_createSocket_bind() throws Exception {
|
public void test_createSocket_bind() throws Exception {
|
||||||
try {
|
try {
|
||||||
mFactory.createSocket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT, null, 0);
|
mFactory.createSocket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT, null, 0);
|
||||||
|
|||||||
@@ -18,12 +18,11 @@ package android.net.cts;
|
|||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.lang.Thread;
|
|
||||||
|
|
||||||
public class TheaterModeTest extends AndroidTestCase {
|
public class TheaterModeTest extends AndroidTestCase {
|
||||||
private static final String TAG = "TheaterModeTest";
|
private static final String TAG = "TheaterModeTest";
|
||||||
private static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
|
private static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
|
||||||
@@ -40,6 +39,7 @@ public class TheaterModeTest extends AndroidTestCase {
|
|||||||
|| mContext.getPackageManager().hasSystemFeature(FEATURE_WIFI));
|
|| mContext.getPackageManager().hasSystemFeature(FEATURE_WIFI));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
|
||||||
public void testTheaterMode() {
|
public void testTheaterMode() {
|
||||||
setup();
|
setup();
|
||||||
if (!mHasFeature) {
|
if (!mHasFeature) {
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.net.NetworkStats;
|
|||||||
import android.net.TrafficStats;
|
import android.net.TrafficStats;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -81,6 +82,7 @@ public class TrafficStatsTest extends AndroidTestCase {
|
|||||||
return packetCount * (20 + 32 + bytes);
|
return packetCount * (20 + 32 + bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testTrafficStatsForLocalhost() throws IOException {
|
public void testTrafficStatsForLocalhost() throws IOException {
|
||||||
final long mobileTxPacketsBefore = TrafficStats.getMobileTxPackets();
|
final long mobileTxPacketsBefore = TrafficStats.getMobileTxPackets();
|
||||||
final long mobileRxPacketsBefore = TrafficStats.getMobileRxPackets();
|
final long mobileRxPacketsBefore = TrafficStats.getMobileRxPackets();
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package android.net.cts;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.VpnService;
|
import android.net.VpnService;
|
||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -35,6 +36,7 @@ public class VpnServiceTest extends AndroidTestCase {
|
|||||||
|
|
||||||
private VpnService mVpnService = new VpnService();
|
private VpnService mVpnService = new VpnService();
|
||||||
|
|
||||||
|
@AppModeFull(reason = "PackageManager#queryIntentActivities cannot access in instant app mode")
|
||||||
public void testPrepare() throws Exception {
|
public void testPrepare() throws Exception {
|
||||||
// Should never return null since we are not prepared.
|
// Should never return null since we are not prepared.
|
||||||
Intent intent = VpnService.prepare(mContext);
|
Intent intent = VpnService.prepare(mContext);
|
||||||
@@ -60,6 +62,7 @@ public class VpnServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testProtect_DatagramSocket() throws Exception {
|
public void testProtect_DatagramSocket() throws Exception {
|
||||||
DatagramSocket socket = new DatagramSocket();
|
DatagramSocket socket = new DatagramSocket();
|
||||||
try {
|
try {
|
||||||
@@ -88,6 +91,7 @@ public class VpnServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testProtect_int() throws Exception {
|
public void testProtect_int() throws Exception {
|
||||||
DatagramSocket socket = new DatagramSocket();
|
DatagramSocket socket = new DatagramSocket();
|
||||||
ParcelFileDescriptor descriptor = ParcelFileDescriptor.fromDatagramSocket(socket);
|
ParcelFileDescriptor descriptor = ParcelFileDescriptor.fromDatagramSocket(socket);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import org.apache.http.client.methods.HttpGet;
|
|||||||
import org.apache.http.impl.client.DefaultHttpClient;
|
import org.apache.http.impl.client.DefaultHttpClient;
|
||||||
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.webkit.cts.CtsTestServer;
|
import android.webkit.cts.CtsTestServer;
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ import java.io.InputStream;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public class ApacheHttpClientTest extends AndroidTestCase {
|
public class ApacheHttpClientTest extends AndroidTestCase {
|
||||||
|
|
||||||
private static final int NUM_DOWNLOADS = 20;
|
private static final int NUM_DOWNLOADS = 20;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.google.mockwebserver.MockWebServer;
|
|||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import android.net.http.HttpResponseCache;
|
import android.net.http.HttpResponseCache;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
|
|
||||||
import com.android.compatibility.common.util.FileUtils;
|
import com.android.compatibility.common.util.FileUtils;
|
||||||
|
|
||||||
@@ -126,6 +127,7 @@ public final class HttpResponseCacheTest extends TestCase {
|
|||||||
* Make sure that statistics tracking are wired all the way through the
|
* Make sure that statistics tracking are wired all the way through the
|
||||||
* wrapper class. http://code.google.com/p/android/issues/detail?id=25418
|
* wrapper class. http://code.google.com/p/android/issues/detail?id=25418
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public void testStatisticsTracking() throws Exception {
|
public void testStatisticsTracking() throws Exception {
|
||||||
HttpResponseCache cache = HttpResponseCache.install(cacheDir, 10 * 1024 * 1024);
|
HttpResponseCache cache = HttpResponseCache.install(cacheDir, 10 * 1024 * 1024);
|
||||||
|
|
||||||
|
|||||||
@@ -21,13 +21,14 @@ import android.net.rtp.AudioCodec;
|
|||||||
import android.net.rtp.AudioGroup;
|
import android.net.rtp.AudioGroup;
|
||||||
import android.net.rtp.AudioStream;
|
import android.net.rtp.AudioStream;
|
||||||
import android.net.rtp.RtpStream;
|
import android.net.rtp.RtpStream;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import java.net.DatagramPacket;
|
import java.net.DatagramPacket;
|
||||||
import java.net.DatagramSocket;
|
import java.net.DatagramSocket;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "RtpStream cannot create in instant app mode")
|
||||||
public class AudioGroupTest extends AndroidTestCase {
|
public class AudioGroupTest extends AndroidTestCase {
|
||||||
|
|
||||||
private static final String TAG = AudioGroupTest.class.getSimpleName();
|
private static final String TAG = AudioGroupTest.class.getSimpleName();
|
||||||
|
|||||||
@@ -17,10 +17,12 @@ package android.net.rtp.cts;
|
|||||||
|
|
||||||
import android.net.rtp.AudioCodec;
|
import android.net.rtp.AudioCodec;
|
||||||
import android.net.rtp.AudioStream;
|
import android.net.rtp.AudioStream;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "RtpStream cannot create in instant app mode")
|
||||||
public class AudioStreamTest extends AndroidTestCase {
|
public class AudioStreamTest extends AndroidTestCase {
|
||||||
|
|
||||||
private void testRtpStream(InetAddress address) throws Exception {
|
private void testRtpStream(InetAddress address) throws Exception {
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import android.net.wifi.aware.WifiAwareSession;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
import com.android.compatibility.common.util.SystemUtil;
|
import com.android.compatibility.common.util.SystemUtil;
|
||||||
@@ -56,6 +57,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
* Wi-Fi Aware CTS test suite: single device testing. Performs tests on a single
|
* Wi-Fi Aware CTS test suite: single device testing. Performs tests on a single
|
||||||
* device to validate Wi-Fi Aware.
|
* device to validate Wi-Fi Aware.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiAwareManager in instant app mode")
|
||||||
public class SingleDeviceTest extends AndroidTestCase {
|
public class SingleDeviceTest extends AndroidTestCase {
|
||||||
private static final String TAG = "WifiAwareCtsTests";
|
private static final String TAG = "WifiAwareCtsTests";
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import android.net.NetworkRequest;
|
|||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.net.wifi.p2p.WifiP2pManager;
|
import android.net.wifi.p2p.WifiP2pManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -45,6 +46,7 @@ import java.util.concurrent.CountDownLatch;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class ConcurrencyTest extends AndroidTestCase {
|
public class ConcurrencyTest extends AndroidTestCase {
|
||||||
private class MySync {
|
private class MySync {
|
||||||
static final int WIFI_STATE = 0;
|
static final int WIFI_STATE = 0;
|
||||||
|
|||||||
@@ -19,8 +19,10 @@ package android.net.wifi.cts;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.net.wifi.WifiManager.MulticastLock;
|
import android.net.wifi.WifiManager.MulticastLock;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class MulticastLockTest extends AndroidTestCase {
|
public class MulticastLockTest extends AndroidTestCase {
|
||||||
|
|
||||||
private static final String WIFI_TAG = "MulticastLockTest";
|
private static final String WIFI_TAG = "MulticastLockTest";
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package android.net.wifi.cts;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.nsd.NsdManager;
|
import android.net.nsd.NsdManager;
|
||||||
import android.net.nsd.NsdServiceInfo;
|
import android.net.nsd.NsdServiceInfo;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -29,6 +30,7 @@ import java.util.Random;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Socket cannot bind in instant app mode")
|
||||||
public class NsdManagerTest extends AndroidTestCase {
|
public class NsdManagerTest extends AndroidTestCase {
|
||||||
|
|
||||||
private static final String TAG = "NsdManagerTest";
|
private static final String TAG = "NsdManagerTest";
|
||||||
|
|||||||
@@ -25,11 +25,13 @@ import android.content.IntentFilter;
|
|||||||
import android.net.wifi.ScanResult;
|
import android.net.wifi.ScanResult;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.net.wifi.WifiManager.WifiLock;
|
import android.net.wifi.WifiManager.WifiLock;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.compatibility.common.util.SystemUtil;
|
import com.android.compatibility.common.util.SystemUtil;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class ScanResultTest extends AndroidTestCase {
|
public class ScanResultTest extends AndroidTestCase {
|
||||||
private static class MySync {
|
private static class MySync {
|
||||||
int expectedState = STATE_NULL;
|
int expectedState = STATE_NULL;
|
||||||
|
|||||||
@@ -21,8 +21,10 @@ import java.util.List;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class WifiConfigurationTest extends AndroidTestCase {
|
public class WifiConfigurationTest extends AndroidTestCase {
|
||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import android.net.wifi.WifiEnterpriseConfig;
|
|||||||
import android.net.wifi.WifiEnterpriseConfig.Eap;
|
import android.net.wifi.WifiEnterpriseConfig.Eap;
|
||||||
import android.net.wifi.WifiEnterpriseConfig.Phase2;
|
import android.net.wifi.WifiEnterpriseConfig.Phase2;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
import com.android.compatibility.common.util.SystemUtil;
|
import com.android.compatibility.common.util.SystemUtil;
|
||||||
@@ -33,6 +34,7 @@ import java.security.cert.CertificateFactory;
|
|||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
import java.security.spec.PKCS8EncodedKeySpec;
|
import java.security.spec.PKCS8EncodedKeySpec;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class WifiEnterpriseConfigTest extends AndroidTestCase {
|
public class WifiEnterpriseConfigTest extends AndroidTestCase {
|
||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import android.net.wifi.WifiInfo;
|
|||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.net.wifi.WifiManager.WifiLock;
|
import android.net.wifi.WifiManager.WifiLock;
|
||||||
import android.net.wifi.WifiSsid;
|
import android.net.wifi.WifiSsid;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
import com.android.compatibility.common.util.PollingCheck;
|
import com.android.compatibility.common.util.PollingCheck;
|
||||||
@@ -33,6 +34,7 @@ import com.android.compatibility.common.util.SystemUtil;
|
|||||||
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class WifiInfoTest extends AndroidTestCase {
|
public class WifiInfoTest extends AndroidTestCase {
|
||||||
private static class MySync {
|
private static class MySync {
|
||||||
int expectedState = STATE_NULL;
|
int expectedState = STATE_NULL;
|
||||||
|
|||||||
@@ -19,8 +19,10 @@ package android.net.wifi.cts;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.net.wifi.WifiManager.WifiLock;
|
import android.net.wifi.WifiManager.WifiLock;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class WifiLockTest extends AndroidTestCase {
|
public class WifiLockTest extends AndroidTestCase {
|
||||||
|
|
||||||
private static final String WIFI_TAG = "WifiLockTest";
|
private static final String WIFI_TAG = "WifiLockTest";
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import android.net.wifi.hotspot2.pps.Credential;
|
|||||||
import android.net.wifi.hotspot2.pps.HomeSp;
|
import android.net.wifi.hotspot2.pps.HomeSp;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.support.test.uiautomator.UiDevice;
|
import android.support.test.uiautomator.UiDevice;
|
||||||
import android.test.AndroidTestCase;
|
import android.test.AndroidTestCase;
|
||||||
@@ -56,6 +57,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class WifiManagerTest extends AndroidTestCase {
|
public class WifiManagerTest extends AndroidTestCase {
|
||||||
private static class MySync {
|
private static class MySync {
|
||||||
int expectedState = STATE_NULL;
|
int expectedState = STATE_NULL;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package android.net.wifi.rtt.cts;
|
|||||||
import android.net.wifi.ScanResult;
|
import android.net.wifi.ScanResult;
|
||||||
import android.net.wifi.rtt.RangingRequest;
|
import android.net.wifi.rtt.RangingRequest;
|
||||||
import android.net.wifi.rtt.RangingResult;
|
import android.net.wifi.rtt.RangingResult;
|
||||||
|
import android.platform.test.annotations.AppModeFull;
|
||||||
|
|
||||||
import com.android.compatibility.common.util.DeviceReportLog;
|
import com.android.compatibility.common.util.DeviceReportLog;
|
||||||
import com.android.compatibility.common.util.ResultType;
|
import com.android.compatibility.common.util.ResultType;
|
||||||
@@ -31,6 +32,7 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* Wi-Fi RTT CTS test: range to all available Access Points which support IEEE 802.11mc.
|
* Wi-Fi RTT CTS test: range to all available Access Points which support IEEE 802.11mc.
|
||||||
*/
|
*/
|
||||||
|
@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
|
||||||
public class WifiRttTest extends TestBase {
|
public class WifiRttTest extends TestBase {
|
||||||
// Number of scans to do while searching for APs supporting IEEE 802.11mc
|
// Number of scans to do while searching for APs supporting IEEE 802.11mc
|
||||||
private static final int NUM_SCANS_SEARCHING_FOR_IEEE80211MC_AP = 2;
|
private static final int NUM_SCANS_SEARCHING_FOR_IEEE80211MC_AP = 2;
|
||||||
|
|||||||
Reference in New Issue
Block a user