summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--framework/java/android/net/wifi/SoftApInfo.java2
-rw-r--r--framework/java/android/net/wifi/WifiNetworkSpecifier.java5
-rw-r--r--service/ServiceWifiResources/res/values/config.xml4
-rw-r--r--service/java/com/android/server/wifi/ActiveModeWarden.java28
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java22
-rw-r--r--service/java/com/android/server/wifi/ConcreteClientModeManager.java8
-rw-r--r--service/java/com/android/server/wifi/EapFailureNotifier.java17
-rw-r--r--service/java/com/android/server/wifi/FrameworkFacade.java4
-rw-r--r--service/java/com/android/server/wifi/WifiMetrics.java47
-rw-r--r--service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java1
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java138
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java1
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java5
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java32
-rw-r--r--tests/hostsidetests/multidevices/com.google.snippet.wifi/aware/WifiAwareManagerSnippet.java10
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/Android.bp58
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_attached_test.py54
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_datapath_test.py755
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_test.py325
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_with_ranging_test.py317
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_integration_test_suite.py61
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_matchfilter_test.py45
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_message_test.py109
-rw-r--r--tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_protocols_test.py194
24 files changed, 2158 insertions, 84 deletions
diff --git a/framework/java/android/net/wifi/SoftApInfo.java b/framework/java/android/net/wifi/SoftApInfo.java
index fac3fd428c..3e974c06fe 100644
--- a/framework/java/android/net/wifi/SoftApInfo.java
+++ b/framework/java/android/net/wifi/SoftApInfo.java
@@ -454,7 +454,7 @@ public final class SoftApInfo implements Parcelable {
sbuf.append(", mApInstanceIdentifier= ").append(mApInstanceIdentifier);
sbuf.append(", mIdleShutdownTimeoutMillis= ").append(mIdleShutdownTimeoutMillis);
sbuf.append(", mVendorData= ").append(mVendorData);
- if (mMldAddress != null) sbuf.append(",mMldAddress=").append(mBssid.toString());
+ if (mMldAddress != null) sbuf.append(",mMldAddress=").append(mMldAddress.toString());
sbuf.append("}");
return sbuf.toString();
}
diff --git a/framework/java/android/net/wifi/WifiNetworkSpecifier.java b/framework/java/android/net/wifi/WifiNetworkSpecifier.java
index e00e7e6b7b..abb8734ca2 100644
--- a/framework/java/android/net/wifi/WifiNetworkSpecifier.java
+++ b/framework/java/android/net/wifi/WifiNetworkSpecifier.java
@@ -22,6 +22,7 @@ import static com.android.internal.util.Preconditions.checkNotNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.compat.annotation.UnsupportedAppUsage;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.MacAddress;
@@ -490,7 +491,7 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
* @return Instance of {@link Builder} to enable chaining of the builder method.
* @hide
*/
- @NonNull public Builder setPreferSecondarySta(boolean value) {
+ @NonNull @UnsupportedAppUsage public Builder setPreferSecondarySta(boolean value) {
mPreferSecondarySta = value;
return this;
}
@@ -779,7 +780,7 @@ public final class WifiNetworkSpecifier extends NetworkSpecifier implements Parc
* @see Builder#setPreferSecondarySta(boolean)
* @hide
*/
- public boolean isPreferSecondarySta() {
+ @UnsupportedAppUsage public boolean isPreferSecondarySta() {
return mPreferSecondarySta;
}
diff --git a/service/ServiceWifiResources/res/values/config.xml b/service/ServiceWifiResources/res/values/config.xml
index 5390b48e86..38bc072032 100644
--- a/service/ServiceWifiResources/res/values/config.xml
+++ b/service/ServiceWifiResources/res/values/config.xml
@@ -1019,9 +1019,9 @@
<!-- Indicate whether the verbose logging is always on -->
<!-- 0: verbose logging controlled by user
- 1: verbose logging on by default for userdebug
+ 1: verbose logging on by default for userdebug/eng
2: verbose logging on by default for all builds -->
- <integer translatable="false" name="config_wifiVerboseLoggingAlwaysOnLevel">0</integer>
+ <integer translatable="false" name="config_wifiVerboseLoggingAlwaysOnLevel">1</integer>
<!-- Indicate the help page link for the Root CA certifiate installation. -->
<string translatable="false" name="config_wifiCertInstallationHelpLink">https://support.google.com/pixelphone/answer/2844832</string>
diff --git a/service/java/com/android/server/wifi/ActiveModeWarden.java b/service/java/com/android/server/wifi/ActiveModeWarden.java
index c08388a3cb..397d49d778 100644
--- a/service/java/com/android/server/wifi/ActiveModeWarden.java
+++ b/service/java/com/android/server/wifi/ActiveModeWarden.java
@@ -2467,9 +2467,6 @@ public class ActiveModeWarden {
}
class EnabledState extends BaseState {
-
- private boolean mIsDisablingDueToAirplaneMode;
-
EnabledState(int threshold) {
super(threshold, mWifiInjector.getWifiHandlerLocalLog());
}
@@ -2481,7 +2478,6 @@ public class ActiveModeWarden {
if (!hasAnyModeManager()) {
Log.e(TAG, "Entered EnabledState, but no active mode managers");
}
- mIsDisablingDueToAirplaneMode = false;
}
@Override
@@ -2664,15 +2660,15 @@ public class ActiveModeWarden {
case CMD_AIRPLANE_TOGGLED:
// airplane mode toggled on is handled in the default state
if (mSettingsStore.isAirplaneModeOn()) {
- mIsDisablingDueToAirplaneMode = true;
return NOT_HANDLED;
} else {
- if (mIsDisablingDueToAirplaneMode) {
+ if (mWifiState.get() == WIFI_STATE_DISABLING) {
// Previous airplane mode toggle on is being processed, defer the
// message toggle off until previous processing is completed.
// Once previous airplane mode toggle is complete, we should
// transition to DisabledState. There, we will process the deferred
// airplane mode toggle message to disable airplane mode.
+ Log.i(TAG, "Deferring CMD_AIRPLANE_TOGGLED.");
deferMessage(msg);
} else {
if (!hasPrimaryOrScanOnlyModeManager()) {
@@ -2745,6 +2741,26 @@ public class ActiveModeWarden {
transitionTo(mDisabledState);
} else {
log("STA disabled, remain in EnabledState.");
+ // Handle any deferred airplane toggle off messages that didn't
+ // trigger due to no state change
+ if (hasDeferredMessages(CMD_AIRPLANE_TOGGLED)
+ && !hasPrimaryOrScanOnlyModeManager()) {
+ removeDeferredMessages(CMD_AIRPLANE_TOGGLED);
+ if (mSettingsStore.isAirplaneModeOn()) {
+ // deferred APM toggle is only meant to be done for APM off, so
+ // no-op if APM is already on here.
+ break;
+ }
+ log("Airplane mode disabled, determine next state");
+ if (shouldEnableSta()) {
+ startPrimaryOrScanOnlyClientModeManager(
+ // Assumes user toggled it on from settings before.
+ mFacade.getSettingsWorkSource(mContext));
+ mLastCallerInfoManager.put(WifiManager.API_WIFI_ENABLED,
+ Process.myTid(), Process.WIFI_UID, -1, "android_apm",
+ true);
+ }
+ }
}
break;
case CMD_DEFERRED_RECOVERY_RESTART_WIFI:
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index edbd7e3043..d4858416fe 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -327,6 +327,12 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
private PowerManager.WakeLock mSuspendWakeLock;
+ // Log Wifi L2 and L3 connection state transition time stamp
+ private long mL2ConnectingStateTimestamp;
+ private long mL2ConnectedStateTimestamp;
+ private long mL3ProvisioningStateTimestamp;
+ private long mL3ConnectedStateTimestamp;
+
/**
* Value to set in wpa_supplicant "bssid" field when we don't want to restrict connection to
* a specific AP.
@@ -3896,6 +3902,15 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
if (frequency == WifiInfo.UNKNOWN_FREQUENCY && candidate != null) {
frequency = candidate.frequency;
}
+
+ long l2ConnectionDuration =
+ (mL2ConnectedStateTimestamp - mL2ConnectingStateTimestamp) > 0
+ ? (mL2ConnectedStateTimestamp - mL2ConnectingStateTimestamp) : 0;
+ long l3ConnectionDuration = (mL3ConnectedStateTimestamp - mL3ProvisioningStateTimestamp) > 0
+ ? (mL3ConnectedStateTimestamp - mL3ProvisioningStateTimestamp) : 0;
+ mWifiMetrics.reportConnectingDuration(mInterfaceName,
+ l2ConnectionDuration, l3ConnectionDuration);
+
mWifiMetrics.endConnectionEvent(mInterfaceName, level2FailureCode,
connectivityFailureCode, level2FailureReason, frequency, statusCode);
mWifiConnectivityManager.handleConnectionAttemptEnded(
@@ -5783,6 +5798,8 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
// We need to get the updated pseudonym from supplicant for EAP-SIM/AKA/AKA'
if (config.enterpriseConfig != null
&& config.enterpriseConfig.isAuthenticationSimBased()) {
+ // clear SIM related EapFailurenotification
+ mEapFailureNotifier.dismissEapFailureNotification(config.SSID);
if (mWifiCarrierInfoManager.isOobPseudonymFeatureEnabled(
config.carrierId)) {
if (mVerboseLoggingEnabled) {
@@ -6084,6 +6101,7 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
// network. In some cases supplicant ignores the connect requests (it might not
// find the target SSID in its cache), Therefore we end up stuck that state, hence the
// need for the watchdog.
+ mL2ConnectingStateTimestamp = mClock.getElapsedSinceBootMillis();
mConnectingWatchdogCount++;
logd("Start Connecting Watchdog " + mConnectingWatchdogCount);
sendMessageDelayed(obtainMessage(CMD_CONNECTING_WATCHDOG_TIMER,
@@ -6459,6 +6477,7 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
@Override
public void enterImpl() {
+ mL2ConnectedStateTimestamp = mClock.getElapsedSinceBootMillis();
final WifiConfiguration config = getConnectedWifiConfigurationInternal();
if (config == null) {
logw("Connected to a network that's already been removed " + mLastNetworkId
@@ -7078,6 +7097,7 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
@Override
public void enterImpl() {
+ mL3ProvisioningStateTimestamp = mClock.getElapsedSinceBootMillis();
startL3Provisioning();
if (mContext.getResources().getBoolean(
R.bool.config_wifiRemainConnectedAfterIpProvisionTimeout)) {
@@ -7347,7 +7367,7 @@ public class ClientModeImpl extends StateMachine implements ClientMode {
if (mVerboseLoggingEnabled) {
log("Enter ConnectedState mScreenOn=" + mScreenOn);
}
-
+ mL3ConnectedStateTimestamp = mClock.getElapsedSinceBootMillis();
reportConnectionAttemptEnd(
WifiMetrics.ConnectionEvent.FAILURE_NONE,
WifiMetricsProto.ConnectionEvent.HLF_NONE,
diff --git a/service/java/com/android/server/wifi/ConcreteClientModeManager.java b/service/java/com/android/server/wifi/ConcreteClientModeManager.java
index c7094f84b0..c736c80166 100644
--- a/service/java/com/android/server/wifi/ConcreteClientModeManager.java
+++ b/service/java/com/android/server/wifi/ConcreteClientModeManager.java
@@ -20,6 +20,8 @@ import static android.net.wifi.WifiManager.WIFI_STATE_DISABLING;
import static android.net.wifi.WifiManager.WIFI_STATE_ENABLED;
import static android.net.wifi.WifiManager.WIFI_STATE_ENABLING;
+import static com.android.server.wifi.util.GeneralUtil.bitsetToLong;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
@@ -1494,6 +1496,12 @@ public class ConcreteClientModeManager implements ClientModeManager {
}
@Override
+ @Keep
+ public long getSupportedFeatures() {
+ return bitsetToLong(getSupportedFeaturesBitSet());
+ }
+
+ @Override
public boolean syncStartSubscriptionProvisioning(int callingUid, OsuProvider provider,
IProvisioningCallback callback) {
return getClientMode().syncStartSubscriptionProvisioning(
diff --git a/service/java/com/android/server/wifi/EapFailureNotifier.java b/service/java/com/android/server/wifi/EapFailureNotifier.java
index 64143eb816..fc0dddb5f6 100644
--- a/service/java/com/android/server/wifi/EapFailureNotifier.java
+++ b/service/java/com/android/server/wifi/EapFailureNotifier.java
@@ -135,6 +135,23 @@ public class EapFailureNotifier {
}
/**
+ * Dismiss notification
+ */
+ public void dismissEapFailureNotification(String ssid) {
+ if (TextUtils.isEmpty(mCurrentShownSsid) || TextUtils.isEmpty(ssid)
+ || !TextUtils.equals(ssid, mCurrentShownSsid)) {
+ return;
+ }
+ StatusBarNotification[] activeNotifications = mNotificationManager.getActiveNotifications();
+ for (StatusBarNotification activeNotification : activeNotifications) {
+ if ((activeNotification.getId() == NOTIFICATION_ID)) {
+ mNotificationManager.cancel(NOTIFICATION_ID);
+ return;
+ }
+ }
+ }
+
+ /**
* Display eap error notification which defined by carrier.
*
* @param ssid Error Message which defined by carrier
diff --git a/service/java/com/android/server/wifi/FrameworkFacade.java b/service/java/com/android/server/wifi/FrameworkFacade.java
index 7b905732c4..086bff6db1 100644
--- a/service/java/com/android/server/wifi/FrameworkFacade.java
+++ b/service/java/com/android/server/wifi/FrameworkFacade.java
@@ -448,8 +448,8 @@ public class FrameworkFacade {
return true;
//If the overlay setting enabled for userdebug builds only
case VERBOSE_LOGGING_ALWAYS_ON_LEVEL_USERDEBUG:
- // If it is a userdebug build
- if (buildProperties.isUserdebugBuild()) return true;
+ // If it is a userdebug or eng build
+ if (buildProperties.isUserdebugBuild() || buildProperties.isEngBuild()) return true;
break;
case VERBOSE_LOGGING_ALWAYS_ON_LEVEL_NONE:
// nothing
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java
index 00f117a2ef..58b13fc2ea 100644
--- a/service/java/com/android/server/wifi/WifiMetrics.java
+++ b/service/java/com/android/server/wifi/WifiMetrics.java
@@ -56,6 +56,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.ConnectivityManager;
+import android.net.MacAddress;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.wifi.DeauthenticationReasonCode;
@@ -1244,6 +1245,8 @@ public class WifiMetrics {
private int mPhase2Method;
private int mPasspointRoamingType;
private int mTofuConnectionState;
+ private long mL2ConnectingDuration;
+ private long mL3ConnectingDuration;
@VisibleForTesting
ConnectionEvent() {
@@ -2043,6 +2046,8 @@ public class WifiMetrics {
mFirstConnectionAfterBoot;
currentConnectionEvent.mRole = role;
currentConnectionEvent.mUid = uid;
+ currentConnectionEvent.mL2ConnectingDuration = 0;
+ currentConnectionEvent.mL3ConnectingDuration = 0;
mFirstConnectionAfterBoot = false;
mConnectionEventList.add(currentConnectionEvent);
mScanResultRssiTimestampMillis = -1;
@@ -2261,6 +2266,26 @@ public class WifiMetrics {
}
/**
+ * Log L2 and L3 connection transition time
+ *
+ * @param ifaceName interface name for this connection event
+ * @param l2ConnectingDuration Time duration between L2ConnectState to L3ProvisioningState
+ * @param l3ConnectingDuration Time duration between L3ProvisioningState to mL3ConnectedState
+ */
+ public void reportConnectingDuration(
+ String ifaceName,
+ long l2ConnectingDuration,
+ long l3ConnectingDuration) {
+ synchronized (mLock) {
+ ConnectionEvent currentConnectionEvent = mCurrentConnectionEventPerIface.get(ifaceName);
+ if (currentConnectionEvent != null) {
+ currentConnectionEvent.mL2ConnectingDuration = l2ConnectingDuration;
+ currentConnectionEvent.mL3ConnectingDuration = l3ConnectingDuration;
+ }
+ }
+ }
+
+ /**
* End a Connection event record. Call when wifi connection attempt succeeds or fails.
* If a Connection event has not been started and is active when .end is called, then this
* method will do nothing.
@@ -2332,7 +2357,9 @@ public class WifiMetrics {
currentConnectionEvent.mCarrierId,
currentConnectionEvent.mTofuConnectionState,
currentConnectionEvent.mUid,
- frequency);
+ frequency,
+ currentConnectionEvent.mL2ConnectingDuration,
+ currentConnectionEvent.mL3ConnectingDuration);
if (connectionSucceeded) {
reportRouterCapabilities(currentConnectionEvent.mRouterFingerPrint);
@@ -4959,8 +4986,8 @@ public class WifiMetrics {
eventLine.append(",client_control_is_enabled=" + event.clientControlIsEnabled);
pw.println(eventLine.toString());
}
-
- mWifiPowerMetrics.dump(pw);
+ // TODO(b/393985164): Temporary remove this from dump.
+ // mWifiPowerMetrics.dump(pw);
mWifiWakeMetrics.dump(pw);
pw.println("mWifiLogProto.isMacRandomizationOn="
@@ -7425,9 +7452,17 @@ public class WifiMetrics {
WifiLinkLayerStats.ScanResultWithSameFreq linkLayerScanResult =
link.scan_results_same_freq.get(scanResultsIndex);
if (linkLayerScanResult != null) {
- String wifiLinkBssid = (mloLinks.size() > 0)
- ? mloLinks.get(link.link_id, new MloLink())
- .getApMacAddress().toString() : info.getBSSID();
+ String wifiLinkBssid = "";
+ if (mloLinks.size() > 0) {
+ MacAddress apMacAddress =
+ mloLinks.get(link.link_id, new MloLink())
+ .getApMacAddress();
+ if (apMacAddress != null) {
+ wifiLinkBssid = apMacAddress.toString();
+ }
+ } else {
+ wifiLinkBssid = info.getBSSID();
+ }
if (!linkLayerScanResult.bssid.equals(wifiLinkBssid)) {
ScanResultWithSameFreq scanResultWithSameFreq =
new ScanResultWithSameFreq();
diff --git a/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java b/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
index 301240f3fd..391be46438 100644
--- a/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
+++ b/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
@@ -5939,6 +5939,7 @@ public class WifiP2pServiceImpl extends IWifiP2pManager.Stub {
mSavedPeerConfig.wps.pin);
}
}
+ smTransition(this, mGroupCreatedState);
break;
case PEER_CONNECTION_USER_REJECT:
if (mVerboseLoggingEnabled) logd("User rejected incoming request");
diff --git a/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java b/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
index 780fdbed07..18f09b8a46 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/ActiveModeWardenTest.java
@@ -1688,7 +1688,14 @@ public class ActiveModeWardenTest extends WifiBaseTest {
anyInt(), eq("android_apm"), eq(false));
}
- /** Wi-Fi state is restored properly when SoftAp is enabled during airplane mode. */
+ /**
+ * Test sequence
+ * - APM on
+ * - STA stop
+ * - SoftAp on
+ * - APM off
+ * Wifi STA should get turned on at the end.
+ **/
@Test
public void testWifiStateRestoredWhenSoftApEnabledDuringApm() throws Exception {
enableWifi();
@@ -1709,6 +1716,7 @@ public class ActiveModeWardenTest extends WifiBaseTest {
anyInt(),
eq("android_apm"),
eq(false));
+ mActiveModeWarden.setWifiStateForApiCalls(WIFI_STATE_DISABLED);
mClientListener.onStopped(mClientModeManager);
mLooper.dispatchAll();
@@ -1738,6 +1746,134 @@ public class ActiveModeWardenTest extends WifiBaseTest {
}
/**
+ * Test sequence
+ * - APM on
+ * - SoftAp on
+ * - STA stop
+ * - APM off
+ * Wifi STA should get turned on at the end.
+ **/
+ @Test
+ public void testWifiStateRestoredWhenSoftApEnabledDuringApm2() throws Exception {
+ enableWifi();
+ assertInEnabledState();
+
+ // enabling airplane mode shuts down wifi
+ assertWifiShutDown(
+ () -> {
+ when(mSettingsStore.isAirplaneModeOn()).thenReturn(true);
+ mActiveModeWarden.airplaneModeToggled();
+ mLooper.dispatchAll();
+ });
+ verify(mLastCallerInfoManager)
+ .put(
+ eq(WifiManager.API_WIFI_ENABLED),
+ anyInt(),
+ anyInt(),
+ anyInt(),
+ eq("android_apm"),
+ eq(false));
+
+ // start SoftAp
+ mActiveModeWarden.startSoftAp(
+ new SoftApModeConfiguration(
+ WifiManager.IFACE_IP_MODE_LOCAL_ONLY,
+ null,
+ mSoftApCapability,
+ TEST_COUNTRYCODE,
+ null),
+ TEST_WORKSOURCE);
+ mLooper.dispatchAll();
+
+ mActiveModeWarden.setWifiStateForApiCalls(WIFI_STATE_DISABLED);
+ mClientListener.onStopped(mClientModeManager);
+ mLooper.dispatchAll();
+
+ // disabling airplane mode enables wifi
+ when(mSettingsStore.isAirplaneModeOn()).thenReturn(false);
+ mActiveModeWarden.airplaneModeToggled();
+ mLooper.dispatchAll();
+ verify(mLastCallerInfoManager)
+ .put(
+ eq(WifiManager.API_WIFI_ENABLED),
+ anyInt(),
+ anyInt(),
+ anyInt(),
+ eq("android_apm"),
+ eq(true));
+ }
+
+ /**
+ * Test sequence
+ * - APM on
+ * - SoftAp on
+ * - APM off
+ * - STA stop
+ * Wifi STA should get turned on at the end.
+ **/
+ @Test
+ public void testWifiStateRestoredWhenSoftApEnabledDuringApm3() throws Exception {
+ enableWifi();
+ assertInEnabledState();
+
+ // enabling airplane mode shuts down wifi
+ assertWifiShutDown(
+ () -> {
+ when(mSettingsStore.isAirplaneModeOn()).thenReturn(true);
+ mActiveModeWarden.airplaneModeToggled();
+ mLooper.dispatchAll();
+ });
+ verify(mLastCallerInfoManager)
+ .put(
+ eq(WifiManager.API_WIFI_ENABLED),
+ anyInt(),
+ anyInt(),
+ anyInt(),
+ eq("android_apm"),
+ eq(false));
+ assertEquals(WIFI_STATE_DISABLING, mActiveModeWarden.getWifiState());
+
+ // start SoftAp
+ mActiveModeWarden.startSoftAp(
+ new SoftApModeConfiguration(
+ WifiManager.IFACE_IP_MODE_LOCAL_ONLY,
+ null,
+ mSoftApCapability,
+ TEST_COUNTRYCODE,
+ null),
+ TEST_WORKSOURCE);
+ mLooper.dispatchAll();
+
+ // disabling airplane mode does not enables wifi yet, since wifi haven't stopped properly
+ when(mSettingsStore.isAirplaneModeOn()).thenReturn(false);
+ mActiveModeWarden.airplaneModeToggled();
+ mLooper.dispatchAll();
+ verify(mLastCallerInfoManager, never())
+ .put(
+ eq(WifiManager.API_WIFI_ENABLED),
+ anyInt(),
+ anyInt(),
+ anyInt(),
+ eq("android_apm"),
+ eq(true));
+ assertInEnabledState();
+
+ // Wifi STA stopped, it should now trigger APM handling to re-enable STA
+ mActiveModeWarden.setWifiStateForApiCalls(WIFI_STATE_DISABLED);
+ mClientListener.onStopped(mClientModeManager);
+ mLooper.dispatchAll();
+
+ verify(mLastCallerInfoManager)
+ .put(
+ eq(WifiManager.API_WIFI_ENABLED),
+ anyInt(),
+ anyInt(),
+ anyInt(),
+ eq("android_apm"),
+ eq(true));
+ }
+
+ /**
* Disabling location mode when in scan mode will disable wifi
*/
@Test
diff --git a/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index 915c9a49b0..9bb62b5c89 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -1577,6 +1577,7 @@ public class ClientModeImplTest extends WifiBaseTest {
mCmi.sendMessage(WifiMonitor.NETWORK_CONNECTION_EVENT,
new NetworkConnectionEventInfo(0, wifiSsid, TEST_BSSID_STR, false, null));
mLooper.dispatchAll();
+ verify(mEapFailureNotifier).dismissEapFailureNotification(mConnectedNetwork.SSID);
assertEquals("L3ProvisioningState", getCurrentState().getName());
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java b/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
index e257c2d1bb..cb0706e4b0 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
@@ -20,6 +20,7 @@ import static com.android.server.wifi.EapFailureNotifier.CONFIG_EAP_FAILURE_DISA
import static com.android.server.wifi.EapFailureNotifier.CONFIG_EAP_FAILURE_DISABLE_THRESHOLD;
import static com.android.server.wifi.EapFailureNotifier.ERROR_MESSAGE_OVERLAY_PREFIX;
import static com.android.server.wifi.EapFailureNotifier.ERROR_MESSAGE_OVERLAY_UNKNOWN_ERROR_CODE;
+import static com.android.server.wifi.EapFailureNotifier.NOTIFICATION_ID;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -274,6 +275,10 @@ public class EapFailureNotifierTest extends WifiBaseTest {
verify(mFrameworkFacade, never()).makeNotificationBuilder(any(),
eq(WifiService.NOTIFICATION_NETWORK_ALERTS));
assertEquals(mExpectedEapFailureConfig, failureConfig);
+
+ // verify cancel notification works
+ mEapFailureNotifier.dismissEapFailureNotification(SSID_1);
+ verify(mWifiNotificationManager).cancel(NOTIFICATION_ID);
}
/**
diff --git a/service/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/service/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
index 8cd6ef014e..3d3a2e6924 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
@@ -77,6 +77,7 @@ import static org.junit.Assert.fail;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.anyLong;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.doThrow;
@@ -572,6 +573,7 @@ public class WifiMetricsTest extends WifiBaseTest {
private static final int NUM_RADIO_MODE_CHANGE_TO_DBS = 34;
private static final int NUM_SOFTAP_USER_BAND_PREFERENCE_UNSATISFIED = 14;
private static final long NUM_WATCHDOG_SUCCESS_DURATION_MS = 65;
+ private static final long WIFI_CONNECTING_DURATION_MS = 1000;
private static final long WIFI_POWER_METRICS_LOGGING_DURATION = 280;
private static final long WIFI_POWER_METRICS_SCAN_TIME = 33;
private static final boolean LINK_SPEED_COUNTS_LOGGING_SETTING = true;
@@ -2533,6 +2535,8 @@ public class WifiMetricsTest extends WifiBaseTest {
mWifiMetrics.startConnectionEvent(TEST_IFACE_NAME, createComplexWifiConfig(),
"RED", WifiMetricsProto.ConnectionEvent.ROAM_ENTERPRISE, false,
WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED__ROLE__ROLE_CLIENT_PRIMARY, TEST_UID);
+ mWifiMetrics.reportConnectingDuration(TEST_IFACE_NAME,
+ WIFI_CONNECTING_DURATION_MS, WIFI_CONNECTING_DURATION_MS + 1);
mWifiMetrics.endConnectionEvent(TEST_IFACE_NAME,
WifiMetrics.ConnectionEvent.FAILURE_AUTHENTICATION_FAILURE,
WifiMetricsProto.ConnectionEvent.HLF_DHCP,
@@ -2551,7 +2555,8 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(true),
eq(false),
eq(1), eq(TEST_CONNECTION_FAILURE_STATUS_CODE), anyInt(), anyInt(), anyInt(),
- anyInt(), anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ)));
+ anyInt(), anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ),
+ eq(WIFI_CONNECTING_DURATION_MS), eq(WIFI_CONNECTING_DURATION_MS + 1)));
}
/**
@@ -6256,7 +6261,7 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED), anyBoolean(), anyInt(), anyInt(),
anyInt(), anyInt(), anyInt(), anyInt(), anyBoolean(), anyInt(), anyBoolean(),
anyBoolean(), anyInt(), anyInt(), anyInt(), anyInt(), anyInt(), anyInt(), anyInt(),
- eq(TEST_UID), anyInt()),
+ eq(TEST_UID), anyInt(), anyLong(), anyLong()),
times(0));
}
@@ -6272,22 +6277,26 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED), anyBoolean(), anyInt(), anyInt(),
anyInt(), anyInt(), anyInt(), anyInt(), anyBoolean(), anyInt(), anyBoolean(),
anyBoolean(), anyInt(), anyInt(), anyInt(), anyInt(), anyInt(), anyInt(), anyInt(),
- eq(TEST_UID), eq(TEST_CANDIDATE_FREQ)),
+ eq(TEST_UID), eq(TEST_CANDIDATE_FREQ), anyLong(), anyLong()),
times(0));
}
@Test
public void testWifiConnectionResultAtomEmittedOnlyOnceWithMultipleConnectionEndEvents() {
+ long connectingDuration = WIFI_CONNECTING_DURATION_MS;
mWifiMetrics.startConnectionEvent(TEST_IFACE_NAME, createComplexWifiConfig(),
"RED", WifiMetricsProto.ConnectionEvent.ROAM_ENTERPRISE, false,
WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED__ROLE__ROLE_CLIENT_PRIMARY, TEST_UID);
for (int i = 0; i < 5; i++) {
+ mWifiMetrics.reportConnectingDuration(TEST_IFACE_NAME,
+ connectingDuration, connectingDuration);
mWifiMetrics.endConnectionEvent(TEST_IFACE_NAME,
WifiMetrics.ConnectionEvent.FAILURE_AUTHENTICATION_FAILURE,
WifiMetricsProto.ConnectionEvent.HLF_DHCP,
WifiMetricsProto.ConnectionEvent.FAILURE_REASON_UNKNOWN, TEST_CANDIDATE_FREQ,
TEST_CONNECTION_FAILURE_STATUS_CODE);
+ connectingDuration++;
}
ExtendedMockito.verify(() -> WifiStatsLog.write(
@@ -6300,7 +6309,8 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(true),
eq(0), eq(true), eq(false), eq(1), eq(TEST_CONNECTION_FAILURE_STATUS_CODE),
anyInt(), anyInt(), anyInt(), anyInt(), anyInt(), eq(TEST_UID),
- eq(TEST_CANDIDATE_FREQ)),
+ eq(TEST_CANDIDATE_FREQ),
+ eq(WIFI_CONNECTING_DURATION_MS), eq(WIFI_CONNECTING_DURATION_MS)),
times(1));
}
@@ -6337,7 +6347,7 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(true),
eq(0), eq(true), eq(true), eq(1), eq(TEST_CONNECTION_FAILURE_STATUS_CODE),
anyInt(), anyInt(), anyInt(), anyInt(), anyInt(), eq(TEST_UID),
- eq(TEST_CANDIDATE_FREQ)),
+ eq(TEST_CANDIDATE_FREQ), anyLong(), anyLong()),
times(1));
}
@@ -6361,7 +6371,7 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED__TRIGGER__AUTOCONNECT_BOOT),
anyBoolean(), anyInt(), anyBoolean(), anyBoolean(), anyInt(),
eq(TEST_CONNECTION_FAILURE_STATUS_CODE), anyInt(), anyInt(), anyInt(), anyInt(),
- anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ)));
+ anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ), anyLong(), anyLong()));
mWifiMetrics.startConnectionEvent(TEST_IFACE_NAME, createComplexWifiConfig(),
"RED", WifiMetricsProto.ConnectionEvent.ROAM_ENTERPRISE, false,
@@ -6381,7 +6391,7 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED__TRIGGER__RECONNECT_SAME_NETWORK),
anyBoolean(), anyInt(), anyBoolean(), anyBoolean(), anyInt(),
eq(TEST_CONNECTION_FAILURE_STATUS_CODE), anyInt(), anyInt(), anyInt(), anyInt(),
- anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ)));
+ anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ), anyLong(), anyLong()));
WifiConfiguration configOtherNetwork = createComplexWifiConfig();
configOtherNetwork.networkId = 21;
@@ -6407,7 +6417,7 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED__TRIGGER__AUTOCONNECT_CONFIGURED_NETWORK),
anyBoolean(), anyInt(), anyBoolean(), anyBoolean(), anyInt(),
eq(TEST_CONNECTION_FAILURE_STATUS_CODE), anyInt(), anyInt(), anyInt(), anyInt(),
- anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ)));
+ anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ), anyLong(), anyLong()));
WifiConfiguration config = createComplexWifiConfig();
config.networkId = 42;
@@ -6430,7 +6440,7 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED__TRIGGER__MANUAL),
anyBoolean(), anyInt(), anyBoolean(), anyBoolean(), anyInt(),
eq(TEST_CONNECTION_FAILURE_STATUS_CODE), anyInt(), anyInt(), anyInt(), anyInt(),
- anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ)));
+ anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ), anyLong(), anyLong()));
}
@Test
@@ -6591,7 +6601,7 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED__TRIGGER__AUTOCONNECT_BOOT),
anyBoolean(), eq(10), anyBoolean(), anyBoolean(), anyInt(),
eq(TEST_CONNECTION_FAILURE_STATUS_CODE), anyInt(), anyInt(), anyInt(), anyInt(),
- anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ)));
+ anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ), anyLong(), anyLong()));
mWifiMetrics.reportNetworkDisconnect(TEST_IFACE_NAME, 0, 0, 0, 0);
@@ -6613,7 +6623,7 @@ public class WifiMetricsTest extends WifiBaseTest {
eq(WifiStatsLog.WIFI_CONNECTION_RESULT_REPORTED__TRIGGER__RECONNECT_SAME_NETWORK),
anyBoolean(), eq(20), anyBoolean(), anyBoolean(), anyInt(),
eq(TEST_CONNECTION_FAILURE_STATUS_CODE), anyInt(), anyInt(), anyInt(), anyInt(),
- anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ)));
+ anyInt(), eq(TEST_UID), eq(TEST_CANDIDATE_FREQ), anyLong(), anyLong()));
mWifiMetrics.reportNetworkDisconnect(TEST_IFACE_NAME, 0, 0, 0, 0);
}
diff --git a/tests/hostsidetests/multidevices/com.google.snippet.wifi/aware/WifiAwareManagerSnippet.java b/tests/hostsidetests/multidevices/com.google.snippet.wifi/aware/WifiAwareManagerSnippet.java
index 146958c2c6..f7d867399f 100644
--- a/tests/hostsidetests/multidevices/com.google.snippet.wifi/aware/WifiAwareManagerSnippet.java
+++ b/tests/hostsidetests/multidevices/com.google.snippet.wifi/aware/WifiAwareManagerSnippet.java
@@ -886,6 +886,16 @@ public class WifiAwareManagerSnippet implements Snippet {
if (result.getStatus() == RangingResult.STATUS_SUCCESS) {
resultBundles[i].putInt("distanceMm", result.getDistanceMm());
resultBundles[i].putInt("rssi", result.getRssi());
+ resultBundles[i].putInt("distanceStdDevMm", result.getDistanceStdDevMm());
+ resultBundles[i].putInt(
+ "numAttemptedMeasurements",
+ result.getNumAttemptedMeasurements());
+ resultBundles[i].putInt(
+ "numSuccessfulMeasurements",
+ result.getNumSuccessfulMeasurements());
+ resultBundles[i].putByteArray("lci", result.getLci());
+ resultBundles[i].putByteArray("lcr", result.getLcr());
+ resultBundles[i].putLong("timestamp", result.getRangingTimestampMillis());
}
PeerHandle peer = result.getPeerHandle();
if (peer != null) {
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/Android.bp b/tests/hostsidetests/multidevices/test/aware/integration/Android.bp
index fa76467f0c..95aba290a4 100644
--- a/tests/hostsidetests/multidevices/test/aware/integration/Android.bp
+++ b/tests/hostsidetests/multidevices/test/aware/integration/Android.bp
@@ -21,11 +21,15 @@ python_test_host {
name: "WifiAwareAttachTestCases",
main: "wifi_aware_attached_test.py",
srcs: ["wifi_aware_attached_test.py"],
- device_common_data: [":wifi_aware_snippet_new"],
+ device_common_data: [
+ ":wifi_aware_snippet_new",
+ ":wifi_mobly_snippet",
+ ],
libs: [
"aware_lib_utils",
"mobly",
"wifi_aware_constants",
+ "platform-test-py-annotations",
],
test_suites: [
"general-tests",
@@ -59,11 +63,15 @@ python_test_host {
name: "WifiAwareDiscoveryCases",
main: "wifi_aware_discovery_test.py",
srcs: ["wifi_aware_discovery_test.py"],
- device_common_data: [":wifi_aware_snippet_new"],
+ device_common_data: [
+ ":wifi_aware_snippet_new",
+ ":wifi_mobly_snippet",
+ ],
libs: [
"aware_lib_utils",
"mobly",
"wifi_aware_constants",
+ "platform-test-py-annotations",
],
test_suites: [
"general-tests",
@@ -83,6 +91,7 @@ python_test_host {
"aware_lib_utils",
"mobly",
"wifi_aware_constants",
+ "platform-test-py-annotations",
],
test_suites: [
"general-tests",
@@ -97,11 +106,15 @@ python_test_host {
name: "WifiAwareMessageCases",
main: "wifi_aware_message_test.py",
srcs: ["wifi_aware_message_test.py"],
- device_common_data: [":wifi_aware_snippet_new"],
+ device_common_data: [
+ ":wifi_aware_snippet_new",
+ ":wifi_mobly_snippet",
+ ],
libs: [
"aware_lib_utils",
"mobly",
"wifi_aware_constants",
+ "platform-test-py-annotations",
],
test_suites: [
"general-tests",
@@ -135,11 +148,15 @@ python_test_host {
name: "WifiAwareMatchFilterCases",
main: "wifi_aware_matchfilter_test.py",
srcs: ["wifi_aware_matchfilter_test.py"],
- device_common_data: [":wifi_aware_snippet_new"],
+ device_common_data: [
+ ":wifi_aware_snippet_new",
+ ":wifi_mobly_snippet",
+ ],
libs: [
"aware_lib_utils",
"mobly",
"wifi_aware_constants",
+ "platform-test-py-annotations",
],
test_suites: [
"general-tests",
@@ -178,6 +195,7 @@ python_test_host {
"aware_lib_utils",
"mobly",
"wifi_aware_constants",
+ "platform-test-py-annotations",
],
test_suites: [
"general-tests",
@@ -206,3 +224,35 @@ python_test_host {
tags: ["mobly"],
},
}
+
+python_test_host {
+ name: "WifiAwareIntegrationTestSuite",
+ main: "wifi_aware_integration_test_suite.py",
+ srcs: [
+ "wifi_aware_integration_test_suite.py",
+ "wifi_aware_attached_test.py",
+ "wifi_aware_capabilities_test.py",
+ "wifi_aware_datapath_test.py",
+ "wifi_aware_discovery_test.py",
+ "wifi_aware_discovery_with_ranging_test.py",
+ "wifi_aware_mac_random_test.py",
+ "wifi_aware_matchfilter_test.py",
+ "wifi_aware_message_test.py",
+ "wifi_aware_protocols_multi_country_test.py",
+ "wifi_aware_protocols_test.py",
+ ],
+ device_common_data: [":wifi_aware_snippet_new"],
+ libs: [
+ "aware_lib_utils",
+ "mobly",
+ "wifi_aware_constants",
+ "platform-test-py-annotations",
+ ],
+ test_suites: [
+ "general-tests",
+ ],
+ test_options: {
+ unit_test: false,
+ tags: ["mobly"],
+ },
+}
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_attached_test.py b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_attached_test.py
index 908b9c1f57..5e8414c469 100644
--- a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_attached_test.py
+++ b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_attached_test.py
@@ -16,6 +16,7 @@
"""ACTS Wi-Fi Aware Attached test reimplemented in Mobly."""
import sys
+from android.platform.test.annotations import ApiTest
from aware import aware_lib_utils as autils
from aware import constants
from mobly import asserts
@@ -32,7 +33,10 @@ RUNTIME_PERMISSIONS = (
'android.permission.NEARBY_WIFI_DEVICES',
)
PACKAGE_NAME = constants.WIFI_AWARE_SNIPPET_PACKAGE_NAME
-
+snippets_to_load = [
+ ('wifi_aware_snippet', PACKAGE_NAME),
+ ('wifi', constants.WIFI_SNIPPET_PACKAGE_NAME),
+]
class WifiAwareAttachTest(base_test.BaseTestClass):
"""Wi-Fi Aware Attach test class."""
@@ -44,9 +48,10 @@ class WifiAwareAttachTest(base_test.BaseTestClass):
self.ads = self.register_controller(android_device, min_number=1)
def setup_device(device: android_device.AndroidDevice):
- device.load_snippet('wifi_aware_snippet', PACKAGE_NAME)
+ for snippet_name, package_name in snippets_to_load:
+ device.load_snippet(snippet_name, package_name)
for permission in RUNTIME_PERMISSIONS:
- device.adb.shell(['pm', 'grant', PACKAGE_NAME, permission])
+ device.adb.shell(['pm', 'grant', package_name, permission])
asserts.abort_all_if(
not device.wifi_aware_snippet.wifiAwareIsAvailable(),
f'{device} Wi-Fi Aware is not available.',
@@ -62,7 +67,7 @@ class WifiAwareAttachTest(base_test.BaseTestClass):
def setup_test(self):
for ad in self.ads:
- autils.control_wifi(ad, True)
+ ad.wifi.wifiEnable()
aware_avail = ad.wifi_aware_snippet.wifiAwareIsAvailable()
if not aware_avail:
ad.log.info('Aware not available. Waiting ...')
@@ -85,14 +90,21 @@ class WifiAwareAttachTest(base_test.BaseTestClass):
def _teardown_test_on_device(self, ad: android_device.AndroidDevice) -> None:
ad.wifi_aware_snippet.wifiAwareCloseAllWifiAwareSession()
ad.wifi_aware_snippet.wifiAwareMonitorStopStateChange()
- autils.set_airplane_mode(ad, False)
- autils.control_wifi(ad, True)
+ ad.wifi.wifiEnable()
+ if ad.is_adb_root:
+ autils.set_airplane_mode(ad, False)
def on_fail(self, record: records.TestResult) -> None:
android_device.take_bug_reports(
self.ads, destination=self.current_test_info.output_path
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ ]
+ )
+
def test_attach(self) -> None:
"""Basic attaching request.
@@ -106,6 +118,12 @@ class WifiAwareAttachTest(base_test.BaseTestClass):
handler, constants.AttachCallBackMethodType.ID_CHANGED
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ ]
+ )
+
def test_attach_with_identity(self) -> None:
"""Basic attaching request with extra callback.
@@ -117,6 +135,12 @@ class WifiAwareAttachTest(base_test.BaseTestClass):
handler.waitAndGet(constants.AttachCallBackMethodType.ATTACHED)
handler.waitAndGet(constants.AttachCallBackMethodType.ID_CHANGED)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ ]
+ )
+
def test_attach_multiple_sessions(self):
"""Multiple attaching request.
@@ -138,6 +162,12 @@ class WifiAwareAttachTest(base_test.BaseTestClass):
handler_3, constants.AttachCallBackMethodType.ID_CHANGED, 10, True
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ ]
+ )
+
def test_attach_with_no_wifi(self):
"""WiFi Aware attempt to attach with wifi off.
@@ -153,6 +183,12 @@ class WifiAwareAttachTest(base_test.BaseTestClass):
attach_callback.waitAndGet(constants.AttachCallBackMethodType.ATTACH_FAILED)
dut.wifi_aware_snippet.wifiAwareMonitorStopStateChange()
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ ]
+ )
+
def test_attach_with_location_off(self):
"""Function/Attach test cases/attempt to attach with location mode off.
@@ -176,6 +212,12 @@ class WifiAwareAttachTest(base_test.BaseTestClass):
state_handler.waitAndGet(constants.WifiAwareBroadcast.WIFI_AWARE_AVAILABLE)
dut.wifi_aware_snippet.wifiAwareMonitorStopStateChange()
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ ]
+ )
+
def test_attach_apm_toggle_attach_again(self):
"""Function/Attach test cases/attempt to attach with airplane mode on.
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_datapath_test.py b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_datapath_test.py
index a64aedd766..21d26aa68c 100644
--- a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_datapath_test.py
+++ b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_datapath_test.py
@@ -18,8 +18,9 @@ import base64
import logging
import sys
import time
+import re
-
+from android.platform.test.annotations import ApiTest
from aware import aware_lib_utils as autils
from aware import constants
from mobly import asserts
@@ -29,6 +30,7 @@ from mobly import test_runner
from mobly import utils
from mobly.controllers import android_device
from mobly.controllers.android_device_lib import callback_handler_v2
+from mobly.snippet import callback_event
RUNTIME_PERMISSIONS = (
'android.permission.ACCESS_FINE_LOCATION',
@@ -924,6 +926,43 @@ class WifiAwareDatapathTest(base_test.BaseTestClass):
init_dut.wifi_aware_snippet.connectivityUnregisterNetwork(init_callback_event.callback_id)
resp_dut.wifi_aware_snippet.connectivityUnregisterNetwork(resp_callback_event.callback_id)
+ def wait_for_request_responses(self, dut, req_keys, aware_ifs, aware_ipv6):
+ """Wait for network request confirmation for all request keys.
+
+ Args:
+ dut: Device under test
+ req_keys: (in) A list of the network requests
+ aware_ifs: (out) A list into which to append the network interface
+ aware_ipv6: (out) A list into which to append the network ipv6
+ address
+ """
+ network_callback_event = req_keys.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ # network_callback_event=req_keys[0]
+ if network_callback_event.data[_CALLBACK_NAME] == _NETWORK_CB_LINK_PROPERTIES_CHANGED:
+ if network_callback_event.callback_id:
+ aware_ifs.append(network_callback_event.data["interfaceName"])
+ else:
+ logging.info(
+ "Received an unexpected connectivity, the revoked "+
+ "network request probably went through -- %s", network_callback_event)
+ elif network_callback_event.data[_CALLBACK_NAME] == (
+ constants.NetworkCbName.ON_CAPABILITIES_CHANGED) :
+ if network_callback_event.callback_id:
+ aware_ipv6.append(network_callback_event.data[
+ constants.NetworkCbName.NET_CAP_IPV6])
+ else:
+ logging.info(
+ "Received an unexpected connectivity, the revoked "+
+ "network request probably went through -- %s",
+ network_callback_event)
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in
+ network_callback_event.data,
+ "Network specifier leak!")
+
def get_ipv6_addr(self, device, interface):
"""Get the IPv6 address of the specified interface. Uses ifconfig and parses
its output. Returns a None if the interface does not have an IPv6 address
@@ -1080,6 +1119,529 @@ class WifiAwareDatapathTest(base_test.BaseTestClass):
net_work_request_id, network_request_dict, _REQUEST_NETWORK_TIMEOUT_MS
)
+ def run_mix_ib_oob(self, same_request, ib_first, inits_on_same_dut):
+ """Validate that multiple network requests issued using both in-band
+ and out-of-band discovery behave as expected.
+
+ The same_request parameter controls whether identical single NDP is
+ expected, if True, or whether multiple NDPs on different NDIs are
+ expected, if False.
+
+ Args:
+ same_request: Issue canonically identical requests (same NMI peer,
+ same passphrase) if True, if False use different passphrases.
+ ib_first: If True then the in-band network is requested first,
+ otherwise (if False) then the out-of-band network is requested first.
+ inits_on_same_dut: If True then the Initiators are run on the same
+ device, otherwise (if False) then the Initiators are run on
+ different devices. Note that Subscribe == Initiator.
+ """
+ p_dut = self.ads[0]
+ s_dut = self.ads[1]
+ if not same_request:
+ asserts.skip_if(
+ autils.get_aware_capabilities(p_dut)[
+ _CAP_MAX_NDI_INTERFACES] < 2 or
+ autils.get_aware_capabilities(s_dut)[
+ _CAP_MAX_NDI_INTERFACES] < 2,
+ "DUTs do not support enough NDIs")
+
+ (p_dut, s_dut, p_id, s_id, p_disc_id, s_disc_id, peer_id_on_sub,
+ peer_id_on_pub) = self.set_up_discovery(_PUBLISH_TYPE_UNSOLICITED,
+ _SUBSCRIBE_TYPE_PASSIVE, True)
+ p_id2, p_mac = self.attach_with_identity(p_dut)
+ s_id2, s_mac = self.attach_with_identity(s_dut)
+ time.sleep(self.WAIT_FOR_CLUSTER)
+
+ if inits_on_same_dut:
+ resp_dut = p_dut
+ resp_id = p_id2
+ resp_mac = p_mac
+ init_dut = s_dut
+ init_id = s_id2
+ init_mac = s_mac
+
+ else:
+ resp_dut = s_dut
+ resp_id = s_id2
+ resp_mac = s_mac
+ init_dut = p_dut
+ init_id = p_id2
+ init_mac = p_mac
+
+ passphrase = None if same_request else self.PASSPHRASE
+ pub_accept_handler = (
+ p_dut.wifi_aware_snippet.connectivityServerSocketAccept())
+ network_id = pub_accept_handler.callback_id
+ self.publish_session = p_disc_id.callback_id
+ self.subscribe_session = s_disc_id.callback_id
+
+ if ib_first:
+ # request in-band network (to completion)
+ p_req_key = self._request_network(
+ ad=p_dut,
+ discovery_session=self.publish_session,
+ peer=peer_id_on_pub,
+ net_work_request_id=network_id
+ )
+ s_req_key = self._request_network(
+ ad=s_dut,
+ discovery_session=self.subscribe_session,
+ peer=peer_id_on_sub,
+ net_work_request_id=network_id
+ )
+ p_net_event_nc = autils.wait_for_network(
+ ad=p_dut,
+ request_network_cb_handler=p_req_key,
+ expected_channel=None,
+ )
+ s_net_event_nc = autils.wait_for_network(
+ ad=s_dut,
+ request_network_cb_handler=s_req_key,
+ expected_channel=None,
+ )
+ p_net_event_lp = autils.wait_for_link(
+ ad=p_dut,
+ request_network_cb_handler=p_req_key,
+ )
+ s_net_event_lp = autils.wait_for_link(
+ ad=s_dut,
+ request_network_cb_handler=s_req_key,
+ )
+ # validate no leak of information
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in p_net_event_nc.data,
+ "Network specifier leak!")
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in s_net_event_nc.data,
+ "Network specifier leak!")
+
+ # request out-of-band network
+ init_dut_accept_handler = (
+ init_dut.wifi_aware_snippet.connectivityServerSocketAccept())
+ network_id = init_dut_accept_handler.callback_id
+ resp_req_key = self.request_oob_network(
+ resp_dut,
+ resp_id,
+ _DATA_PATH_RESPONDER,
+ init_mac,
+ passphrase,
+ None,
+ network_id
+ )
+ init_req_key = self.request_oob_network(
+ init_dut,
+ init_id,
+ _DATA_PATH_INITIATOR,
+ resp_mac,
+ passphrase,
+ None,
+ network_id
+ )
+ time.sleep(5)
+ # Publisher & Subscriber: wait for network formation
+ resp_net_event_nc = autils.wait_for_network(
+ ad=resp_dut,
+ request_network_cb_handler=resp_req_key,
+ expected_channel=None,
+ )
+ init_net_event_nc = autils.wait_for_network(
+ ad=init_dut,
+ request_network_cb_handler=init_req_key,
+ expected_channel=None,
+ )
+ resp_net_event_lp = autils.wait_for_link(
+ ad=resp_dut,
+ request_network_cb_handler=resp_req_key,
+ )
+ init_net_event_lp = autils.wait_for_link(
+ ad=init_dut,
+ request_network_cb_handler=init_req_key,
+ )
+ # validate no leak of information
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in resp_net_event_nc.data,
+ "Network specifier leak!")
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in init_net_event_nc.data,
+ "Network specifier leak!")
+
+ if not ib_first:
+ # request in-band network (to completion)
+ p_req_key = self._request_network(
+ ad=p_dut,
+ discovery_session=self.publish_session,
+ peer=peer_id_on_pub,
+ net_work_request_id=network_id
+ )
+ s_req_key = self._request_network(
+ ad=s_dut,
+ discovery_session=self.subscribe_session,
+ peer=peer_id_on_sub,
+ net_work_request_id=network_id
+ )
+ # Publisher & Subscriber: wait for network formation
+ p_net_event_nc = autils.wait_for_network(
+ ad=p_dut,
+ request_network_cb_handler=p_req_key,
+ expected_channel=None,
+ )
+ s_net_event_nc = autils.wait_for_network(
+ ad=s_dut,
+ request_network_cb_handler=s_req_key,
+ expected_channel=None,
+ )
+ p_net_event_lp = autils.wait_for_link(
+ ad=p_dut,
+ request_network_cb_handler=p_req_key,
+ )
+ s_net_event_lp = autils.wait_for_link(
+ ad=s_dut,
+ request_network_cb_handler=s_req_key,
+ )
+ # validate no leak of information
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in p_net_event_nc.data,
+ "Network specifier leak!")
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in s_net_event_nc.data,
+ "Network specifier leak!")
+
+ # note that Init <-> Resp & Pub <--> Sub since IPv6 are of peer's!
+ init_ipv6 = resp_net_event_nc.data[constants.NetworkCbName.NET_CAP_IPV6]
+ resp_ipv6 = init_net_event_nc.data[constants.NetworkCbName.NET_CAP_IPV6]
+ pub_ipv6 = s_net_event_nc.data[constants.NetworkCbName.NET_CAP_IPV6]
+ sub_ipv6 = p_net_event_nc.data[constants.NetworkCbName.NET_CAP_IPV6]
+
+ # extract net info
+ pub_interface = p_net_event_lp.data[
+ _NETWORK_CB_KEY_INTERFACE_NAME]
+ sub_interface = s_net_event_lp.data[
+ _NETWORK_CB_KEY_INTERFACE_NAME]
+ resp_interface = resp_net_event_lp.data[
+ _NETWORK_CB_KEY_INTERFACE_NAME]
+ init_interface = init_net_event_lp.data[
+ _NETWORK_CB_KEY_INTERFACE_NAME]
+ logging.info(
+ "Interface names: Pub=%s, Sub=%s, Resp=%s, Init=%s",
+ pub_interface, sub_interface, resp_interface,
+ init_interface
+ )
+ logging.info(
+ "Interface addresses (IPv6): Pub=%s, Sub=%s, Resp=%s, Init=%s",
+ pub_ipv6, sub_ipv6, resp_ipv6, init_ipv6)
+
+ # validate NDP/NDI conditions (using interface names & ipv6)
+ if same_request:
+ asserts.assert_equal(
+ pub_interface, resp_interface if inits_on_same_dut else
+ init_interface, "NDP interfaces don't match on Pub/other")
+ asserts.assert_equal(
+ sub_interface, init_interface if inits_on_same_dut else
+ resp_interface, "NDP interfaces don't match on Sub/other")
+
+ asserts.assert_equal(
+ pub_ipv6, resp_ipv6 if inits_on_same_dut else init_ipv6,
+ "NDP IPv6 don't match on Pub/other")
+ asserts.assert_equal(
+ sub_ipv6, init_ipv6 if inits_on_same_dut else resp_ipv6,
+ "NDP IPv6 don't match on Sub/other")
+ else:
+ asserts.assert_false(
+ pub_interface == (
+ resp_interface if inits_on_same_dut else init_interface),
+ "NDP interfaces match on Pub/other")
+ asserts.assert_false(
+ sub_interface == (
+ init_interface if inits_on_same_dut else resp_interface),
+ "NDP interfaces match on Sub/other")
+
+ asserts.assert_false(
+ pub_ipv6 == (resp_ipv6 if inits_on_same_dut else init_ipv6),
+ "NDP IPv6 match on Pub/other")
+ asserts.assert_false(
+ sub_ipv6 == (init_ipv6 if inits_on_same_dut else resp_ipv6),
+ "NDP IPv6 match on Sub/other")
+
+ # release requests
+ init_dut.wifi_aware_snippet.connectivityUnregisterNetwork(
+ init_net_event_nc.callback_id)
+ resp_dut.wifi_aware_snippet.connectivityUnregisterNetwork(
+ resp_net_event_nc.callback_id)
+ p_dut.wifi_aware_snippet.connectivityUnregisterNetwork(
+ p_net_event_nc.callback_id)
+ s_dut.wifi_aware_snippet.connectivityUnregisterNetwork(
+ s_net_event_nc.callback_id)
+
+ def create_oob_ndp_on_sessions(self,
+ init_dut,
+ resp_dut,
+ init_id,
+ init_mac,
+ resp_id,
+ resp_mac):
+ """Create an NDP on top of existing Aware sessions (using OOB discovery)
+
+ Args:
+ init_dut: Initiator device
+ resp_dut: Responder device
+ init_id: Initiator attach session id
+ init_mac: Initiator discovery MAC address
+ resp_id: Responder attach session id
+ resp_mac: Responder discovery MAC address
+ Returns:
+ init_req_key: Initiator network request
+ resp_req_key: Responder network request
+ init_aware_if: Initiator Aware data interface
+ resp_aware_if: Responder Aware data interface
+ init_ipv6: Initiator IPv6 address
+ resp_ipv6: Responder IPv6 address
+ """
+ # Responder: request network
+ init_dut_accept_handler = init_dut.wifi_aware_snippet.connectivityServerSocketAccept()
+ network_id = init_dut_accept_handler.callback_id
+ init_local_port = init_dut_accept_handler.ret_value
+ resp_req_key = self.request_oob_network(
+ resp_dut,
+ resp_id,
+ _DATA_PATH_RESPONDER,
+ init_mac,
+ None,
+ None,
+ network_id
+ )
+ # Initiator: request network
+ init_req_key = self.request_oob_network(
+ init_dut,
+ init_id,
+ _DATA_PATH_INITIATOR,
+ resp_mac,
+ None,
+ None,
+ network_id
+ )
+ time.sleep(5)
+ init_callback_event = init_req_key.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ init_name = init_callback_event.data[_CALLBACK_NAME]
+ resp_callback_event = resp_req_key.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ resp_name = resp_callback_event.data[_CALLBACK_NAME]
+ asserts.assert_equal(
+ init_name, constants.NetworkCbName.ON_CAPABILITIES_CHANGED,
+ f'{init_dut} succeeded to request the network, got callback'
+ f' {init_name}.'
+ )
+ asserts.assert_equal(
+ resp_name, constants.NetworkCbName.ON_CAPABILITIES_CHANGED,
+ f'{resp_dut} succeeded to request the network, got callback'
+ f' {resp_name}.'
+ )
+ init_net_event_nc = init_callback_event.data
+ resp_net_event_nc = resp_callback_event.data
+ # validate no leak of information
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in init_net_event_nc,
+ "Network specifier leak!")
+ asserts.assert_false(
+ _NETWORK_CB_KEY_NETWORK_SPECIFIER in resp_net_event_nc,
+ "Network specifier leak!")
+
+ #To get ipv6 ip address
+ resp_ipv6= init_net_event_nc[constants.NetworkCbName.NET_CAP_IPV6]
+ init_ipv6 = resp_net_event_nc[constants.NetworkCbName.NET_CAP_IPV6]
+ # note that Pub <-> Sub since IPv6 are of peer's!
+ init_callback_LINK = init_req_key.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ asserts.assert_equal(
+ init_callback_LINK.data[_CALLBACK_NAME],
+ _NETWORK_CB_LINK_PROPERTIES_CHANGED,
+ f'{init_dut} succeeded to request the'+
+ ' LinkPropertiesChanged, got callback'
+ f' {init_callback_LINK.data[_CALLBACK_NAME]}.'
+ )
+ resp_callback_LINK = resp_req_key.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ asserts.assert_equal(
+ resp_callback_LINK.data[_CALLBACK_NAME],
+ _NETWORK_CB_LINK_PROPERTIES_CHANGED,
+ f'{resp_dut} succeeded to request the'+
+ 'LinkPropertiesChanged, got callback'
+ f' {resp_callback_LINK.data[_CALLBACK_NAME]}.'
+ )
+ init_aware_if = init_callback_LINK.data[
+ _NETWORK_CB_KEY_INTERFACE_NAME]
+ resp_aware_if = resp_callback_LINK.data[
+ _NETWORK_CB_KEY_INTERFACE_NAME]
+ return (init_req_key, resp_req_key, init_aware_if, resp_aware_if,
+ init_ipv6, resp_ipv6)
+
+ def set_wifi_country_code(self,
+ ad: android_device.AndroidDevice,
+ country_code):
+ """Sets the wifi country code on the device.
+
+ Args:
+ ad: An AndroidDevice object.
+ country_code: 2 letter ISO country code
+
+ Raises:
+ An RpcException if unable to set the country code.
+ """
+ try:
+ ad.adb.shell("cmd wifi force-country-code enabled %s" % country_code)
+ except Exception as e:
+ ad.log.info(f"ADB command execution failed: {e}")
+
+ def create_data_ib_ndp(
+ self,
+ p_dut: android_device.AndroidDevice,
+ s_dut: android_device.AndroidDevice,
+ p_config: dict[str, any],
+ s_config: dict[str, any]
+ ):
+ """Create an NDP (using in-band discovery).
+ Args:
+ p_dut: Device to use as publisher.
+ s_dut: Device to use as subscriber.
+ p_config: Publish configuration.
+ s_config: Subscribe configuration.
+
+ Returns:
+ A tuple containing the following:
+ - Publisher network capabilities.
+ - Subscriber network capabilities.
+ - Publisher network interface name.
+ - Subscriber network interface name.
+ - Publisher IPv6 address.
+ - Subscriber IPv6 address.
+ """
+
+ (p_id, s_id, p_disc_id, s_disc_id, peer_id_on_sub, peer_id_on_pub) = (
+ autils.create_discovery_pair(
+ p_dut, s_dut, p_config, s_config, msg_id=9999
+ )
+ )
+ pub_accept_handler = (
+ p_dut.wifi_aware_snippet.connectivityServerSocketAccept()
+ )
+ network_id = pub_accept_handler.callback_id
+
+ # Request network Publisher (responder).
+ pub_network_cb_handler = self._request_network(
+ ad=p_dut,
+ discovery_session=p_disc_id.callback_id,
+ peer=peer_id_on_pub,
+ net_work_request_id=network_id,
+ )
+
+ # Request network for Subscriber (initiator).
+ sub_network_cb_handler = self._request_network(
+ ad=s_dut,
+ discovery_session=s_disc_id.callback_id,
+ peer=peer_id_on_sub,
+ net_work_request_id=network_id,
+ )
+ resp_net_event_nc = sub_network_cb_handler.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ # time.sleep(5)
+ init_net_event_nc = pub_network_cb_handler.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ s_ipv6 = resp_net_event_nc.data[constants.NetworkCbName.NET_CAP_IPV6]
+ p_ipv6 = init_net_event_nc.data[constants.NetworkCbName.NET_CAP_IPV6]
+ p_network_callback_LINK = pub_network_cb_handler.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ s_network_callback_LINK = sub_network_cb_handler.waitAndGet(
+ event_name=constants.NetworkCbEventName.NETWORK_CALLBACK,
+ timeout=_DEFAULT_TIMEOUT,
+ )
+ s_aware_if = s_network_callback_LINK.data[
+ _NETWORK_CB_KEY_INTERFACE_NAME]
+ p_aware_if = p_network_callback_LINK.data[
+ _NETWORK_CB_KEY_INTERFACE_NAME]
+ pub_network_cap = autils.wait_for_network(
+ ad=p_dut,
+ request_network_cb_handler=pub_network_cb_handler,
+ expected_channel=None,
+ )
+ sub_network_cap = autils.wait_for_network(
+ ad=s_dut,
+ request_network_cb_handler=sub_network_cb_handler,
+ expected_channel=None,
+ )
+
+ p_dut.log.info('interfaceName = %s, ipv6=%s', p_aware_if, p_ipv6)
+
+ s_dut.log.info('interfaceName = %s, ipv6=%s', s_aware_if, s_ipv6)
+ return (
+ pub_network_cap,
+ sub_network_cap,
+ p_aware_if,
+ s_aware_if,
+ p_ipv6,
+ s_ipv6,
+ )
+
+ def run_multiple_regulatory_domains(self, use_ib, init_domain,
+ resp_domain):
+ """Verify that a data-path setup with two conflicting regulatory domains
+ works (the result should be run in Channel 6 - but that is not tested).
+
+ Args:
+ use_ib: True to use in-band discovery, False to use out-of-band discovery.
+ init_domain: The regulatory domain of the Initiator/Subscriber.
+ resp_domain: The regulator domain of the Responder/Publisher.
+ """
+ init_dut = self.ads[0]
+ resp_dut = self.ads[1]
+ asserts.skip_if(
+ not init_dut.is_adb_root or not resp_dut.is_adb_root,
+ 'Country code toggle needs Android device(s) with root permission',
+ )
+ self.set_wifi_country_code(init_dut, init_domain)
+ self.set_wifi_country_code(resp_dut, resp_domain)
+ if use_ib:
+ (resp_req_key, init_req_key, resp_aware_if, init_aware_if,
+ resp_ipv6, init_ipv6) = self.create_data_ib_ndp(
+ resp_dut, init_dut,
+ autils.create_discovery_config(
+ "GoogleTestXyz", _PUBLISH_TYPE_UNSOLICITED),
+ autils.create_discovery_config(
+ "GoogleTestXyz", _SUBSCRIBE_TYPE_PASSIVE),
+ )
+ else:
+ init_id, init_mac = self.attach_with_identity(init_dut)
+ resp_id, resp_mac = self.attach_with_identity(resp_dut)
+ time.sleep(self.WAIT_FOR_CLUSTER)
+ (init_req_key, resp_req_key, init_aware_if, resp_aware_if, init_ipv6,
+ resp_ipv6) = self.create_oob_ndp_on_sessions(init_dut, resp_dut, init_id,
+ init_mac, resp_id, resp_mac)
+ logging.info("Interface names: I=%s, R=%s", init_aware_if,
+ resp_aware_if)
+ logging.info("Interface addresses (IPv6): I=%s, R=%s", init_ipv6,
+ resp_ipv6)
+ pub_accept_handler = (
+ init_dut.wifi_aware_snippet.connectivityServerSocketAccept()
+ )
+ network_id = pub_accept_handler.callback_id
+ # clean-up
+ resp_dut.wifi_aware_snippet.connectivityUnregisterNetwork(network_id)
+ init_dut.wifi_aware_snippet.connectivityUnregisterNetwork(network_id)
+
#######################################
# Positive In-Band (IB) tests key:
#
@@ -2070,6 +2632,197 @@ class WifiAwareDatapathTest(base_test.BaseTestClass):
"""
self.run_multiple_ndi([self.PMK, self.PMK2], flip_init_resp=True)
+ #######################################
+ # The device can create and use multiple NDIs tests key:
+ #
+ # names is:test_<same_request>_ndps_mix_ib_oob_
+ # <ib_first>_<inits_on_same_dut>_polarity
+ # same_request:
+ # Issue canonically identical requests (same NMI peer, same passphrase)
+ # if True, if False use different passphrases.
+ # ib_first:
+ # If True then the in-band network is requested first, otherwise (if False)
+ # then the out-of-band network is requested first.
+ # inits_on_same_dut:
+ # If True then the Initiators are run on the same device, otherwise
+ # (if False) then the Initiators are run on different devices.
+ #
+ #######################################
+
+ def test_identical_ndps_mix_ib_oob_ib_first_same_polarity(self):
+ """Validate that a single NDP is created for multiple identical
+ requests which are issued through either in-band (ib) or out-of-band
+ (oob) APIs.
+
+ The in-band request is issued first. Both Initiators (Sub == Initiator)
+ are run on the same device.
+ """
+ self.run_mix_ib_oob(
+ same_request=True, ib_first=True, inits_on_same_dut=True)
+
+ def test_identical_ndps_mix_ib_oob_oob_first_same_polarity(self):
+ """Validate that a single NDP is created for multiple identical
+ requests which are issued through either in-band (ib) or out-of-band
+ (oob) APIs.
+
+ The out-of-band request is issued first. Both Initiators (Sub ==
+ Initiator)
+ are run on the same device.
+ """
+ self.run_mix_ib_oob(
+ same_request=True, ib_first=False, inits_on_same_dut=True)
+
+ def test_identical_ndps_mix_ib_oob_ib_first_diff_polarity(self):
+ """Validate that a single NDP is created for multiple identical
+ requests which are issued through either in-band (ib) or out-of-band
+ (oob) APIs.
+
+ The in-band request is issued first. Initiators (Sub == Initiator) are
+ run on different devices.
+ """
+ self.run_mix_ib_oob(
+ same_request=True, ib_first=True, inits_on_same_dut=False)
+
+ def test_identical_ndps_mix_ib_oob_oob_first_diff_polarity(self):
+ """Validate that a single NDP is created for multiple identical
+ requests which are issued through either in-band (ib) or out-of-band
+ (oob) APIs.
+
+ The out-of-band request is issued first. Initiators (Sub == Initiator)
+ are run on different devices.
+ """
+ self.run_mix_ib_oob(
+ same_request=True, ib_first=False, inits_on_same_dut=False)
+
+ def test_multiple_ndis_mix_ib_oob_ib_first_same_polarity(self):
+
+ """Validate that multiple NDIs are created for NDPs which are requested
+ with different security configurations. Use a mix of in-band and
+ out-of-band APIs to request the different NDPs.
+
+ The in-band request is issued first. Initiators (Sub == Initiator) are
+ run on the same device.
+ """
+ self.run_mix_ib_oob(
+ same_request=False, ib_first=True, inits_on_same_dut=True)
+
+ def test_multiple_ndis_mix_ib_oob_oob_first_same_polarity(self):
+ """Validate that multiple NDIs are created for NDPs which are requested
+ with different security configurations. Use a mix of in-band and
+ out-of-band APIs to request the different NDPs.
+
+ The out-of-band request is issued first. Initiators (Sub == Initiator)
+ are run on the same device.
+ """
+ self.run_mix_ib_oob(
+ same_request=False, ib_first=False, inits_on_same_dut=True)
+
+ def test_multiple_ndis_mix_ib_oob_ib_first_diff_polarity(self):
+ """Validate that multiple NDIs are created for NDPs which are requested
+ with different security configurations. Use a mix of in-band and
+ out-of-band APIs to request the different NDPs.
+
+ The in-band request is issued first. Initiators (Sub == Initiator) are
+ run on different devices.
+ """
+ self.run_mix_ib_oob(
+ same_request=False, ib_first=True, inits_on_same_dut=False)
+
+
+ def test_multiple_ndis_mix_ib_oob_oob_first_diff_polarity(self):
+ """Validate that multiple NDIs are created for NDPs which are requested
+ with different security configurations. Use a mix of in-band and
+ out-of-band APIs to request the different NDPs.
+
+ The out-of-band request is issued first. Initiators (Sub == Initiator)
+ are run on different devices.
+ """
+ self.run_mix_ib_oob(
+ same_request=False, ib_first=False, inits_on_same_dut=False)
+
+ #######################################
+ # The device can setup two conflicting regulatory domains with a data-path test:
+ # names is:test_multiple_regulator_domains_ib_(regulatorA)_(regulatorB)
+ # use_ib: True to use in-band discovery, False to use out-of-band discovery.
+ # init_domain: The regulatory domain of the Initiator/Subscriber.
+ # resp_domain: The regulator domain of the Responder/Publisher.
+ #
+ #######################################
+
+ def test_multiple_regulator_domains_ib_us_jp(self):
+ """Verify data-path setup across multiple regulator domains.
+
+ - Uses in-band discovery
+ - Subscriber=US, Publisher=JP
+ """
+ self.run_multiple_regulatory_domains(
+ use_ib=True,
+ init_domain="US",
+ resp_domain="JP")
+
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder#build',
+ 'android.net.wifi.aware.WifiAwareSession#createNetworkSpecifierOpen(byte[])',
+ ]
+ )
+
+ def test_multiple_regulator_domains_ib_jp_us(self):
+ """Verify data-path setup across multiple regulator domains.
+
+ - Uses in-band discovery
+ - Subscriber=JP, Publisher=US
+ """
+ self.run_multiple_regulatory_domains(
+ use_ib=True,
+ init_domain="JP",
+ resp_domain="US")
+
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder#build',
+ 'android.net.wifi.aware.WifiAwareSession#createNetworkSpecifierOpen(byte[])',
+ ]
+ )
+
+ def test_multiple_regulator_domains_oob_us_jp(self):
+ """Verify data-path setup across multiple regulator domains.
+
+ - Uses out-f-band discovery
+ - Initiator=US, Responder=JP
+ """
+ self.run_multiple_regulatory_domains(
+ use_ib=False,
+ init_domain="US",
+ resp_domain="JP")
+
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareNetworkSpecifier.Builder#build',
+ 'android.net.wifi.aware.WifiAwareSession#createNetworkSpecifierOpen(byte[])',
+ ]
+ )
+
+ def test_multiple_regulator_domains_oob_jp_us(self):
+ """Verify data-path setup across multiple regulator domains.
+
+ - Uses out-of-band discovery
+ - Initiator=JP, Responder=US
+ """
+ self.run_multiple_regulatory_domains(
+ use_ib=False,
+ init_domain="JP",
+ resp_domain="US")
+
if __name__ == '__main__':
# Take test args
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_test.py b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_test.py
index ebf36f5965..2f35e00760 100644
--- a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_test.py
+++ b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_test.py
@@ -22,6 +22,7 @@ import sys
import time
from typing import Any, Dict, Union
+from android.platform.test.annotations import ApiTest
from aware import aware_lib_utils as autils
from aware import constants
from mobly import asserts
@@ -38,6 +39,10 @@ RUNTIME_PERMISSIONS = (
'android.permission.NEARBY_WIFI_DEVICES',
)
PACKAGE_NAME = constants.WIFI_AWARE_SNIPPET_PACKAGE_NAME
+snippets_to_load = [
+ ('wifi_aware_snippet', PACKAGE_NAME),
+ ('wifi', constants.WIFI_SNIPPET_PACKAGE_NAME),
+]
_DEFAULT_TIMEOUT = constants.WAIT_WIFI_STATE_TIME_OUT.total_seconds()
_MSG_ID_SUB_TO_PUB = random.randint(1000, 5000)
_MSG_ID_PUB_TO_SUB = random.randint(5001, 9999)
@@ -70,11 +75,10 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
self.subscriber = self.ads[1]
def setup_device(device: android_device.AndroidDevice):
- device.load_snippet(
- 'wifi_aware_snippet', PACKAGE_NAME
- )
+ for snippet_name, package_name in snippets_to_load:
+ device.load_snippet(snippet_name, package_name)
for permission in RUNTIME_PERMISSIONS:
- device.adb.shell(['pm', 'grant', PACKAGE_NAME, permission])
+ device.adb.shell(['pm', 'grant', package_name, permission])
asserts.abort_all_if(
not device.wifi_aware_snippet.wifiAwareIsAvailable(),
f'{device} Wi-Fi Aware is not available.',
@@ -90,7 +94,7 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
def setup_test(self):
for ad in self.ads:
- autils.control_wifi(ad, True)
+ ad.wifi.wifiEnable()
aware_avail = ad.wifi_aware_snippet.wifiAwareIsAvailable()
if not aware_avail:
ad.log.info('Aware not available. Waiting ...')
@@ -114,8 +118,11 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
def _teardown_test_on_device(self, ad: android_device.AndroidDevice) -> None:
ad.wifi_aware_snippet.wifiAwareCloseAllWifiAwareSession()
- autils.reset_device_parameters(ad)
- autils.reset_device_statistics(ad)
+ ad.wifi.wifiClearConfiguredNetworks()
+ ad.wifi.wifiEnable()
+ if ad.is_adb_root:
+ autils.reset_device_parameters(ad)
+ autils.reset_device_statistics(ad)
def on_fail(self, record: records.TestResult) -> None:
android_device.take_bug_reports(self.ads,
@@ -696,7 +703,6 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
if p_service_name is not None:
p_config[constants.SERVICE_NAME] = p_service_name
if p_mf_1 is not None:
- # p_config[constants.MATCH_FILTER] = p_mf_1.encode("utf-8")
p_config[constants.MATCH_FILTER] = autils.encode_list(
[(10).to_bytes(1, byteorder="big"), p_mf_1 , bytes(range(40))])
s_config = self.create_subscribe_config(
@@ -1116,7 +1122,6 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
SERVICE_NAME = "ServiceName"
X_SERVICE_SSI = "ServiceSpecificInfoXXX"
Y_SERVICE_SSI = "ServiceSpecificInfoYYY"
- # use_id = True
# attach and wait for confirmation
p_id = self._start_attach(p_dut)
s_id = self._start_attach(s_dut)
@@ -1277,7 +1282,6 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
p_disc_id.callback_id)
time.sleep(10)
- # service_lost_event = s_disc_id.waitAndGet("WifiAwareSessionOnServiceLost")
service_lost_event = s_disc_id.waitAndGet(
constants.DiscoverySessionCallbackMethodType.SESSION_CB_ON_SERVICE_LOST)
asserts.assert_equal(peer_id_on_sub,
@@ -1287,6 +1291,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
service_lost_event.data[constants.DiscoverySessionCallbackMethodType.SESSION_CB_KEY_LOST_REASON]
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ ]
+ )
+
def test_positive_unsolicited_passive_typical(self)-> None:
"""Functional test case / Discovery test cases / positive test case:
- Unsolicited publish + passive subscribe
@@ -1300,6 +1314,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
_PAYLOAD_SIZE_TYPICAL
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ ]
+ )
+
def test_positive_unsolicited_passive_min(self)-> None:
"""Functional test case / Discovery test cases / positive test case:
- Unsolicited publish + passive subscribe
@@ -1313,6 +1337,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
_PAYLOAD_SIZE_MIN
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ ]
+ )
+
def test_positive_unsolicited_passive_max(self)-> None:
"""Functional test case / Discovery test cases / positive test case:
- Unsolicited publish + passive subscribe
@@ -1326,6 +1360,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
_PAYLOAD_SIZE_MAX
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ ]
+ )
+
def test_positive_solicited_active_typical(self)-> None:
"""Functional test case / Discovery test cases / positive test case:
- Solicited publish + active subscribe
@@ -1339,6 +1383,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
_PAYLOAD_SIZE_TYPICAL
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ ]
+ )
+
def test_positive_solicited_active_min(self)-> None:
"""Functional test case / Discovery test cases / positive test case:
- Solicited publish + active subscribe
@@ -1352,6 +1406,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
_PAYLOAD_SIZE_MIN
)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ ]
+ )
+
def test_positive_solicited_active_max(self)-> None:
"""Functional test case / Discovery test cases / positive test case:
- Solicited publish + active subscribe
@@ -1376,6 +1440,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
# term_ind: ind_on or ind_off
#######################################
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_ttl_unsolicited_ind_on(self)-> None:
"""Functional test case / Discovery test cases / TTL test case:
- Unsolicited publish
@@ -1387,6 +1461,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
stype=None,
term_ind_on=True)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_ttl_unsolicited_ind_off(self)-> None:
"""Functional test case / Discovery test cases / TTL test case:
- Unsolicited publish
@@ -1398,6 +1482,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
stype=None,
term_ind_on=False)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_ttl_solicited_ind_on(self)-> None:
"""Functional test case / Discovery test cases / TTL test case:
- Solicited publish
@@ -1409,6 +1503,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
stype=None,
term_ind_on=True)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_ttl_solicited_ind_off(self)-> None:
"""Functional test case / Discovery test cases / TTL test case:
- Solicited publish
@@ -1420,6 +1524,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
stype=None,
term_ind_on=False)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_ttl_passive_ind_on(self)-> None:
"""Functional test case / Discovery test cases / TTL test case:
- Passive subscribe
@@ -1431,6 +1545,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
stype=_SUBSCRIBE_TYPE_PASSIVE,
term_ind_on=True)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_ttl_passive_ind_off(self)-> None:
"""Functional test case / Discovery test cases / TTL test case:
- Passive subscribe
@@ -1442,6 +1566,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
stype=_SUBSCRIBE_TYPE_PASSIVE,
term_ind_on=False)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_ttl_active_ind_on(self)-> None:
"""Functional test case / Discovery test cases / TTL test case:
- Active subscribe
@@ -1453,6 +1587,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
stype=_SUBSCRIBE_TYPE_ACTIVE,
term_ind_on=True)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_ttl_active_ind_off(self)-> None:
"""Functional test case / Discovery test cases / TTL test case:
- Active subscribe
@@ -1474,6 +1618,18 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
# sub_type: Type of subscribe discovery session: passive or active.
#######################################
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_mismatch_service_type_unsolicited_active(self):
"""Functional test case / Discovery test cases / Mismatch service name
- Unsolicited publish
@@ -1484,6 +1640,18 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
p_type=_PUBLISH_TYPE_UNSOLICITED,
s_type=_SUBSCRIBE_TYPE_ACTIVE)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_mismatch_service_type_solicited_passive(self):
"""Functional test case / Discovery test cases / Mismatch service name
- Unsolicited publish
@@ -1504,6 +1672,18 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
# sub_type: Type of subscribe discovery session: passive or active.
#######################################
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_mismatch_service_name_unsolicited_passive(self):
"""Functional test case / Discovery test cases / Mismatch service name
- Unsolicited publish
@@ -1516,6 +1696,18 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
p_service_name="GoogleTestServiceXXX",
s_service_name="GoogleTestServiceYYY")
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_mismatch_service_name_solicited_active(self):
"""Functional test case / Discovery test cases / Mismatch service name
- Solicited publish
@@ -1538,6 +1730,18 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
# sub_type: Type of subscribe discovery session: passive or active.
#######################################
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_mismatch_match_filter_unsolicited_passive(self):
"""Functional test case / Discovery test cases / Mismatch match filter
- Unsolicited publish
@@ -1550,6 +1754,18 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
p_mf_1="hello there string",
s_mf_1="goodbye there string")
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setTerminateNotificationEnabled(SubscribeConfig.mEnableTerminateNotification)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setTerminateNotificationEnabled(PublishConfig.mEnableTerminateNotification)',
+ ]
+ )
+
def test_mismatch_match_filter_solicited_active(self):
"""Functional test case / Discovery test cases / Mismatch match filter
- Solicited publish
@@ -1566,6 +1782,17 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
# Multiple concurrent services
#######################################
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_multiple_concurrent_services_both_unsolicited_passive(self):
"""Validate multiple concurrent discovery sessions running on both devices.
- DUT1 & DUT2 running Publish for X
@@ -1589,6 +1816,17 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
_SUBSCRIBE_TYPE_PASSIVE
])
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_multiple_concurrent_services_both_solicited_active(self):
"""Validate multiple concurrent discovery sessions running on both devices.
- DUT1 & DUT2 running Publish for X
@@ -1611,6 +1849,19 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
_PUBLISH_TYPE_SOLICITED, _SUBSCRIBE_TYPE_ACTIVE
])
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_multiple_concurrent_services_mix_unsolicited_solicited(self):
"""Validate multiple concurrent discovery sessions running on both devices.
- DUT1 & DUT2 running Publish for X
@@ -1638,6 +1889,17 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
# Multiple concurrent services with diff ssi
#########################################################
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_multiple_concurrent_services_diff_ssi_unsolicited_passive(self):
"""Multi service test on same service name but different Service Specific Info
- Unsolicited publish
@@ -1647,6 +1909,17 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
type_x=[_PUBLISH_TYPE_UNSOLICITED, _SUBSCRIBE_TYPE_PASSIVE],
type_y=[_PUBLISH_TYPE_UNSOLICITED, _SUBSCRIBE_TYPE_PASSIVE])
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_multiple_concurrent_services_diff_ssi_solicited_active(self):
"""Multi service test on same service name but different Service Specific Info
- Solicited publish
@@ -1658,6 +1931,17 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
#########################################################
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_upper_lower_service_name_equivalence(self):
"""Validate that Service Name is case-insensitive. Publish a service name
with mixed case, subscribe to the same service name with alternative case
@@ -1681,6 +1965,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
# service discovery on service lost
#########################################################
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ ]
+ )
+
def test_service_discovery_on_service_lost_unsolicited_passive(self):
"""
Test service discovery lost with unsolicited publish and passive subscribe
@@ -1688,6 +1982,16 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
self.run_service_discovery_on_service_lost(_PUBLISH_TYPE_UNSOLICITED,
_SUBSCRIBE_TYPE_PASSIVE)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED,)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ ]
+ )
+
def test_service_discovery_on_service_lost_solicited_active(self):
"""
Test service discovery lost with solicited publish and active subscribe
@@ -1695,6 +1999,7 @@ class WifiAwareDiscoveryTest(base_test.BaseTestClass):
self.run_service_discovery_on_service_lost(_PUBLISH_TYPE_SOLICITED,
_SUBSCRIBE_TYPE_ACTIVE)
+
if __name__ == '__main__':
# Take test args
if '--' in sys.argv:
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_with_ranging_test.py b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_with_ranging_test.py
index e689363962..5acd444dd2 100644
--- a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_with_ranging_test.py
+++ b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_discovery_with_ranging_test.py
@@ -19,6 +19,7 @@ import statistics
import sys
import time
+from android.platform.test.annotations import ApiTest
from aware import aware_lib_utils as autils
from aware import constants
from mobly import asserts
@@ -291,6 +292,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
return p_dut, s_dut, p_disc_id, s_disc_id
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_prange_snorange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -319,6 +328,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ ]
+ )
def test_ranged_discovery_solicited_active_prange_snorange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -348,6 +365,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_pnorange_smax_inrange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -380,6 +405,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ ]
+ )
def test_ranged_discovery_solicited_active_pnorange_smax_inrange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -412,6 +445,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_pnorange_smin_outofrange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -444,6 +485,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ ]
+ )
def test_ranged_discovery_solicited_active_pnorange_smin_outofrange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -476,6 +525,16 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_prange_smin_inrange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -507,6 +566,16 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, java.util.List<byte[]> matchFilter, int distanceMm)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_prange_smax_inrange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -538,6 +607,17 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_prange_sminmax_inrange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -570,6 +650,16 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ ]
+ )
def test_ranged_discovery_solicited_active_prange_smin_inrange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -601,6 +691,16 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ ]
+ )
def test_ranged_discovery_solicited_active_prange_smax_inrange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -632,6 +732,17 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ ]
+ )
def test_ranged_discovery_solicited_active_prange_sminmax_inrange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -664,6 +775,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_prange_smin_outofrange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -694,6 +813,15 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_prange_smax_outofrange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -725,6 +853,15 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ ]
+ )
def test_ranged_discovery_unsolicited_passive_prange_sminmax_outofrange(self):
"""Verify discovery(unsolicited/passive) with ranging.
@@ -756,6 +893,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ ]
+ )
def test_ranged_discovery_solicited_active_prange_smin_outofrange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -786,6 +931,14 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ ]
+ )
def test_ranged_discovery_solicited_active_prange_smax_outofrange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -817,6 +970,15 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(
s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ ]
+ )
def test_ranged_discovery_solicited_active_prange_sminmax_outofrange(self):
"""Verify discovery(solicited/active) with ranging.
@@ -980,6 +1142,18 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
time.sleep(autils._EVENT_TIMEOUT)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_ranged_updated_discovery_unsolicited_passive_oor_to_ir(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1014,6 +1188,18 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ 'android.net.wifi.aware.PublishDiscoverySession#updatePublish(android.net.wifi.aware.PublishConfig publishConfig)',
+ ]
+ )
def test_ranged_updated_discovery_unsolicited_passive_pub_unrange(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1044,6 +1230,17 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_ranged_updated_discovery_unsolicited_passive_sub_unrange(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1075,6 +1272,16 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_ranged_updated_discovery_unsolicited_passive_sub_oor(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1107,6 +1314,16 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.PublishDiscoverySession#updatePublish(android.net.wifi.aware.PublishConfig publishConfig)',
+ ]
+ )
def test_ranged_updated_discovery_unsolicited_passive_pub_same(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1137,6 +1354,16 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_ranged_updated_discovery_unsolicited_passive_multi_step(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1201,6 +1428,18 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_ranged_updated_discovery_solicited_active_oor_to_ir(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1235,6 +1474,17 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.PublishDiscoverySession#updatePublish(android.net.wifi.aware.PublishConfig publishConfig)',
+ ]
+ )
def test_ranged_updated_discovery_solicited_active_pub_unrange(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1265,6 +1515,17 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_ranged_updated_discovery_solicited_active_sub_unrange(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1294,6 +1555,16 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_ranged_updated_discovery_solicited_active_sub_oor(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1327,6 +1598,17 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.PublishDiscoverySession#updatePublish(android.net.wifi.aware.PublishConfig publishConfig)',
+ ]
+ )
def test_ranged_updated_discovery_solicited_active_pub_same(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1398,6 +1680,18 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
timeout=_DEFAULT_TIMEOUT)
return None
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_ranged_updated_discovery_solicited_active_multi_step(self):
"""Verify discovery with ranging operation with updated configuration.
@@ -1461,6 +1755,17 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(p_disc_id.callback_id)
s_dut.wifi_aware_snippet.wifiAwareCloseDiscoverSession(s_disc_id.callback_id)
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ ]
+ )
def test_ranged_discovery_multi_session(self):
"""Verify behavior with multiple concurrent discovery session with different configurations.
@@ -1833,6 +2138,18 @@ class WiFiAwareDiscoveryWithRangingTest(base_test.BaseTestClass):
)
return results
+ @ApiTest(
+ apis = [
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setRangingEnabled(boolean enable)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMinDistanceMm(int)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setMaxDistanceMm(int)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscovered(android.net.wifi.aware.ServiceDiscoveryInfo info)',
+ 'android.net.wifi.aware.DiscoverySessionCallback#onServiceDiscoveredWithinRange(android.net.wifi.aware.PeerHandle peerHandle, byte[] serviceSpecificInfo, List<byte[]> matchFilter, int distanceMm)',
+ 'android.net.wifi.aware.SubscribeDiscoverySession#updateSubscribe(android.net.wifi.aware.SubscribeConfig subscribeConfig)',
+ ]
+ )
def test_discovery_direct_concurrency(self):
"""Verify the behavior of Wi-Fi Aware Ranging used as part of discovery and as direct ranging to a peer device.
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_integration_test_suite.py b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_integration_test_suite.py
new file mode 100644
index 0000000000..5b093721d3
--- /dev/null
+++ b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_integration_test_suite.py
@@ -0,0 +1,61 @@
+# Copyright (C) 2025 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.
+
+# Lint as: python3
+"""Wi-Fi Aware integration test suite in Mobly."""
+
+import sys
+
+from mobly import base_suite
+from mobly import suite_runner
+import wifi_aware_attached_test
+import wifi_aware_capabilities_test
+import wifi_aware_datapath_test
+import wifi_aware_discovery_test
+import wifi_aware_discovery_with_ranging_test
+import wifi_aware_mac_random_test
+import wifi_aware_matchfilter_test
+import wifi_aware_message_test
+import wifi_aware_protocols_multi_country_test
+import wifi_aware_protocols_test
+
+
+class WifiAwareIntegrationTestSuite(base_suite.BaseSuite):
+ """Wi-Fi Aware integration test suite."""
+
+ def setup_suite(self, config):
+ del config # Unused.
+ self.add_test_class(wifi_aware_attached_test.WifiAwareAttachTest)
+ self.add_test_class(wifi_aware_capabilities_test.WifiAwareCapabilitiesTest)
+ self.add_test_class(wifi_aware_datapath_test.WifiAwareDatapathTest)
+ self.add_test_class(wifi_aware_discovery_test.WifiAwareDiscoveryTest)
+ self.add_test_class(
+ wifi_aware_discovery_with_ranging_test.WiFiAwareDiscoveryWithRangingTest
+ )
+ self.add_test_class(wifi_aware_mac_random_test.MacRandomTest)
+ self.add_test_class(wifi_aware_matchfilter_test.WifiAwareMatchFilterTest)
+ self.add_test_class(wifi_aware_message_test.WifiAwareMessageTest)
+ self.add_test_class(
+ wifi_aware_protocols_multi_country_test.ProtocolsMultiCountryTest
+ )
+ self.add_test_class(wifi_aware_protocols_test.WifiAwareProtocolsTest)
+
+
+if __name__ == '__main__':
+ # Take test args
+ if '--' in sys.argv:
+ index = sys.argv.index('--')
+ sys.argv = sys.argv[:1] + sys.argv[index + 1 :]
+
+ suite_runner.run_suite_class()
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_matchfilter_test.py b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_matchfilter_test.py
index f61f367eae..0f4a485c6f 100644
--- a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_matchfilter_test.py
+++ b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_matchfilter_test.py
@@ -20,6 +20,7 @@ import logging
import random
import sys
+from android.platform.test.annotations import ApiTest
from aware import aware_lib_utils as autils
from aware import constants
from mobly import asserts
@@ -36,6 +37,10 @@ RUNTIME_PERMISSIONS = (
'android.permission.NEARBY_WIFI_DEVICES',
)
PACKAGE_NAME = constants.WIFI_AWARE_SNIPPET_PACKAGE_NAME
+snippets_to_load = [
+ ('wifi_aware_snippet', PACKAGE_NAME),
+ ('wifi', constants.WIFI_SNIPPET_PACKAGE_NAME),
+]
_DEFAULT_TIMEOUT = constants.WAIT_WIFI_STATE_TIME_OUT.total_seconds()
_MSG_ID_SUB_TO_PUB = random.randint(1000, 5000)
_MSG_ID_PUB_TO_SUB = random.randint(5001, 9999)
@@ -106,11 +111,10 @@ class WifiAwareMatchFilterTest(base_test.BaseTestClass):
self.subscriber = self.ads[1]
def setup_device(device: android_device.AndroidDevice):
- device.load_snippet(
- 'wifi_aware_snippet', PACKAGE_NAME
- )
+ for snippet_name, package_name in snippets_to_load:
+ device.load_snippet(snippet_name, package_name)
for permission in RUNTIME_PERMISSIONS:
- device.adb.shell(['pm', 'grant', PACKAGE_NAME, permission])
+ device.adb.shell(['pm', 'grant', package_name, permission])
asserts.abort_all_if(
not device.wifi_aware_snippet.wifiAwareIsAvailable(),
f'{device} Wi-Fi Aware is not available.',
@@ -126,7 +130,7 @@ class WifiAwareMatchFilterTest(base_test.BaseTestClass):
def setup_test(self):
for ad in self.ads:
- autils.control_wifi(ad, True)
+ ad.wifi.wifiEnable()
aware_avail = ad.wifi_aware_snippet.wifiAwareIsAvailable()
if not aware_avail:
ad.log.info('Aware not available. Waiting ...')
@@ -152,9 +156,12 @@ class WifiAwareMatchFilterTest(base_test.BaseTestClass):
def _teardown_test_on_device(self,
ad: android_device.AndroidDevice) -> None:
ad.wifi_aware_snippet.wifiAwareCloseAllWifiAwareSession()
- autils.reset_device_parameters(ad)
- autils.validate_forbidden_callbacks(ad)
- autils.reset_device_statistics(ad)
+ ad.wifi.wifiClearConfiguredNetworks()
+ ad.wifi.wifiEnable()
+ if ad.is_adb_root:
+ autils.reset_device_parameters(ad)
+ autils.reset_device_statistics(ad)
+ autils.validate_forbidden_callbacks(ad)
def on_fail(self, record: records.TestResult) -> None:
android_device.take_bug_reports(self.ads,
@@ -325,12 +332,34 @@ class WifiAwareMatchFilterTest(base_test.BaseTestClass):
"Some match filter tests are failing",
extras={"data": fails})
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_match_filters_per_spec_unsolicited_passive(self):
"""Validate all the match filter combinations in the Wi-Fi Aware spec,
Appendix H for Unsolicited Publish (tx filter) Passive Subscribe (rx
filter)"""
self.run_match_filters_per_spec(do_unsolicited_passive=True)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_SOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_ACTIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_match_filters_per_spec_solicited_active(self):
"""Validate all the match filter combinations in the Wi-Fi Aware spec,
Appendix H for Solicited Publish (rx filter) Active Subscribe (tx
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_message_test.py b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_message_test.py
index badd1390f4..ce6b658143 100644
--- a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_message_test.py
+++ b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_message_test.py
@@ -18,6 +18,7 @@ import logging
import string
import sys
+from android.platform.test.annotations import ApiTest
from aware import aware_lib_utils as autils
from aware import constants
from mobly import asserts
@@ -34,6 +35,10 @@ RUNTIME_PERMISSIONS = (
'android.permission.NEARBY_WIFI_DEVICES',
)
PACKAGE_NAME = constants.WIFI_AWARE_SNIPPET_PACKAGE_NAME
+snippets_to_load = [
+ ('wifi_aware_snippet', PACKAGE_NAME),
+ ('wifi', constants.WIFI_SNIPPET_PACKAGE_NAME),
+]
_DEFAULT_TIMEOUT = constants.WAIT_WIFI_STATE_TIME_OUT.total_seconds()
_CALLBACK_NAME = constants.DiscoverySessionCallbackParamsType.CALLBACK_NAME
_IS_SESSION_INIT = constants.DiscoverySessionCallbackParamsType.IS_SESSION_INIT
@@ -81,11 +86,10 @@ class WifiAwareMessageTest(base_test.BaseTestClass):
self.subscriber = self.ads[1]
def setup_device(device: android_device.AndroidDevice):
- device.load_snippet(
- 'wifi_aware_snippet', PACKAGE_NAME
- )
+ for snippet_name, package_name in snippets_to_load:
+ device.load_snippet(snippet_name, package_name)
for permission in RUNTIME_PERMISSIONS:
- device.adb.shell(['pm', 'grant', PACKAGE_NAME, permission])
+ device.adb.shell(['pm', 'grant', package_name, permission])
asserts.abort_all_if(
not device.wifi_aware_snippet.wifiAwareIsAvailable(),
f'{device} Wi-Fi Aware is not available.',
@@ -101,7 +105,7 @@ class WifiAwareMessageTest(base_test.BaseTestClass):
def setup_test(self):
for ad in self.ads:
- autils.control_wifi(ad, True)
+ ad.wifi.wifiEnable()
aware_avail = ad.wifi_aware_snippet.wifiAwareIsAvailable()
if not aware_avail:
ad.log.info('Aware not available. Waiting ...')
@@ -125,9 +129,12 @@ class WifiAwareMessageTest(base_test.BaseTestClass):
def _teardown_test_on_device(self, ad: android_device.AndroidDevice) -> None:
ad.wifi_aware_snippet.wifiAwareCloseAllWifiAwareSession()
- autils.reset_device_parameters(ad)
- autils.validate_forbidden_callbacks(ad)
- autils.reset_device_statistics(ad)
+ ad.wifi.wifiClearConfiguredNetworks()
+ ad.wifi.wifiEnable()
+ if ad.is_adb_root:
+ autils.reset_device_parameters(ad)
+ autils.reset_device_statistics(ad)
+ autils.validate_forbidden_callbacks(ad)
def on_fail(self, record: records.TestResult) -> None:
android_device.take_bug_reports(self.ads,
@@ -403,12 +410,9 @@ class WifiAwareMessageTest(base_test.BaseTestClass):
event_name=_MESSAGE_SEND_RESULT,
timeout=_DEFAULT_TIMEOUT,
)
- logging.info("tx_event: %s",tx_event )
tx_msg_id = tx_event.data[
constants.DiscoverySessionCallbackParamsType.MESSAGE_ID
]
- logging.info("tx_msg_id: %s",tx_msg_id )
- logging.info("tx_msg_ids: %s",tx_msg_ids )
tx_msg_ids[tx_msg_id] = tx_msg_ids[tx_msg_id] + 1
if tx_msg_ids[tx_msg_id] == 1:
still_to_be_tx = still_to_be_tx - 1
@@ -569,6 +573,16 @@ class WifiAwareMessageTest(base_test.BaseTestClass):
self.wait_for_messages(msgs2, msg_ids2, p_disc_id2, s_disc_id2, p_dut,
s_dut, payload_size == _PAYLOAD_SIZE_MIN)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
def test_message_no_queue_min(self):
"""Functional / Message / No queue
@@ -576,45 +590,112 @@ class WifiAwareMessageTest(base_test.BaseTestClass):
"""
self.run_message_no_queue(_PAYLOAD_SIZE_MIN)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_message_no_queue_typical(self):
"""Functional / Message / No queue
- Typical payload size
"""
self.run_message_no_queue(_PAYLOAD_SIZE_TYPICAL)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_message_no_queue_max(self):
"""Functional / Message / No queue
- Max payload size (based on device capabilities)
"""
self.run_message_no_queue(_PAYLOAD_SIZE_MAX)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_message_with_queue_min(self):
"""Functional / Message / With queue
- Minimal payload size (none or "")
"""
self.run_message_with_queue(_PAYLOAD_SIZE_MIN)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_message_with_queue_typical(self):
"""Functional / Message / With queue
- Typical payload size
"""
self.run_message_with_queue(_PAYLOAD_SIZE_TYPICAL)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_message_with_queue_max(self):
"""Functional / Message / With queue
- Max payload size (based on device capabilities)
"""
self.run_message_with_queue(_PAYLOAD_SIZE_MAX)
+ @ApiTest(
+ apis=[
+ 'android.net.wifi.aware.WifiAwareManager#attach(android.net.wifi.aware.AttachCallback, android.net.wifi.aware.IdentityChangedListener, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#publish(android.net.wifi.aware.PublishConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.WifiAwareSession#subscrible(android.net.wifi.aware.SubscribeConfig, android.net.wifi.aware.DiscoverySessionCallback, android.os.Handler)',
+ 'android.net.wifi.aware.PublishConfig.Builder#setPublishType(PublishConfig.PUBLISH_TYPE_UNSOLICITED)',
+ 'android.net.wifi.aware.SubscribeConfig.Builder#setSubscribeType(SubscribeConfig.SUBSCRIBE_TYPE_PASSIVE)',
+ 'android.net.wifi.aware.DiscoverySession#sendMessage(int, byte[])',
+ ]
+ )
+
def test_message_with_multiple_discovery_sessions_typical(self):
"""Functional / Message / Multiple sessions
- Sets up 2 discovery sessions on 2 devices. Sends a message in each
- direction on each discovery session and verifies that reaches expected
- destination.
+ Sets up 2 discovery sessions on 2 devices. Sends a message in each
+ direction on each discovery session and verifies that reaches expected
+ destination.
"""
self.run_message_multi_session_with_queue(_PAYLOAD_SIZE_TYPICAL)
+
if __name__ == '__main__':
# Take test args
if '--' in sys.argv:
diff --git a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_protocols_test.py b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_protocols_test.py
index 1217d0d12c..9cbbb40011 100644
--- a/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_protocols_test.py
+++ b/tests/hostsidetests/multidevices/test/aware/integration/wifi_aware_protocols_test.py
@@ -36,22 +36,21 @@ RUNTIME_PERMISSIONS = (
)
PACKAGE_NAME = constants.WIFI_AWARE_SNIPPET_PACKAGE_NAME
-_CALLBACK_NAME = constants.DiscoverySessionCallbackParamsType.CALLBACK_NAME
+_REQUEST_NETWORK_TIMEOUT_MS = 15 * 1000
-# Publish & Subscribe Config keys.
-_PAYLOAD_SIZE_MIN = 0
-_PAYLOAD_SIZE_TYPICAL = 1
-_PAYLOAD_SIZE_MAX = 2
-
-# number of second to 'reasonably' wait to make sure that devices synchronize
+# The number of second to 'reasonably' wait to make sure that devices synchronize
# with each other - useful for OOB test cases, where the OOB discovery would
# take some time
_WAIT_FOR_CLUSTER = 5
+# Aware Data-Path Constants
+_DATA_PATH_INITIATOR = 0
+_DATA_PATH_RESPONDER = 1
+
class WifiAwareProtocolsTest(base_test.BaseTestClass):
"""Set of tests for Wi-Fi Aware data-paths: validating protocols running ontop of a data-path."""
- # message ID counter to make sure all uses are unique
+ # The message ID counter to make sure all uses are unique.
msg_id = 0
device_startup_offset = 1
@@ -282,9 +281,186 @@ class WifiAwareProtocolsTest(base_test.BaseTestClass):
p_dut.wifi_aware_snippet.wifiAwareCloseAllWifiAwareSession()
s_dut.wifi_aware_snippet.wifiAwareCloseAllWifiAwareSession()
+ def request_oob_network(
+ self,
+ ad: android_device.AndroidDevice,
+ aware_session: str,
+ role: int,
+ mac: str,
+ passphrase: str | None,
+ pmk: str | None,
+ net_work_request_id: str,
+ ) -> callback_handler_v2.CallbackHandlerV2:
+ """Requests a Wi-Fi Aware network."""
+ network_specifier_parcel = (
+ ad.wifi_aware_snippet.createNetworkSpecifierOob(
+ aware_session, role, mac, passphrase, pmk
+ )
+ )
+ network_request_dict = constants.NetworkRequest(
+ transport_type=constants.NetworkCapabilities.Transport.TRANSPORT_WIFI_AWARE,
+ network_specifier_parcel=network_specifier_parcel['result'],
+ ).to_dict()
+ return ad.wifi_aware_snippet.connectivityRequestNetwork(
+ net_work_request_id, network_request_dict, _REQUEST_NETWORK_TIMEOUT_MS
+ )
+
+ def create_oob_ndp_on_sessions(
+ self,
+ init_dut,
+ resp_dut,
+ init_id,
+ init_mac,
+ resp_id,
+ resp_mac):
+ """Create an NDP on top of existing Aware sessions (using OOB discovery).
+
+ Args:
+ init_dut: Initiator device
+ resp_dut: Responder device
+ init_id: Initiator attach session id
+ init_mac: Initiator discovery MAC address
+ resp_id: Responder attach session id
+ resp_mac: Responder discovery MAC address
+ Returns:
+ init_req_key: Initiator network request
+ resp_req_key: Responder network request
+ init_aware_if: Initiator Aware data interface
+ resp_aware_if: Responder Aware data interface
+ init_ipv6: Initiator IPv6 address
+ resp_ipv6: Responder IPv6 address
+ """
+ # Responder: request network.
+ init_dut_accept_handler = (
+ init_dut.wifi_aware_snippet.connectivityServerSocketAccept())
+ network_id = init_dut_accept_handler.callback_id
+ resp_network_cb_handler = self.request_oob_network(
+ resp_dut,
+ resp_id,
+ _DATA_PATH_RESPONDER,
+ init_mac,
+ None,
+ None,
+ network_id
+ )
+ # Initiator: request network.
+ init_network_cb_handler = self.request_oob_network(
+ init_dut,
+ init_id,
+ _DATA_PATH_INITIATOR,
+ resp_mac,
+ None,
+ None,
+ network_id
+ )
+ pub_network_cap = autils.wait_for_network(
+ ad=init_dut,
+ request_network_cb_handler=init_network_cb_handler,
+ expected_channel=None,
+ )
+ sub_network_cap = autils.wait_for_network(
+ ad=resp_dut,
+ request_network_cb_handler=resp_network_cb_handler,
+ expected_channel=None,
+ )
+ # To get ipv6 ip address.
+ resp_ipv6 = pub_network_cap.data[constants.NetworkCbName.NET_CAP_IPV6]
+ init_ipv6 = sub_network_cap.data[constants.NetworkCbName.NET_CAP_IPV6]
+
+ pub_network_link = autils.wait_for_link(
+ ad=init_dut,
+ request_network_cb_handler=init_network_cb_handler,
+ )
+ init_aware_if = pub_network_link.data[
+ constants.NetworkCbEventKey.NETWORK_INTERFACE_NAME
+ ]
+ sub_network_link = autils.wait_for_link(
+ ad=resp_dut,
+ request_network_cb_handler=resp_network_cb_handler,
+ )
+ resp_aware_if = sub_network_link.data[
+ constants.NetworkCbEventKey.NETWORK_INTERFACE_NAME
+ ]
+
+ init_dut.log.info('interfaceName = %s, ipv6=%s', init_aware_if, init_ipv6)
+ resp_dut.log.info('interfaceName = %s, ipv6=%s', resp_aware_if, resp_ipv6)
+ return (init_network_cb_handler, resp_network_cb_handler,
+ init_aware_if, resp_aware_if,
+ init_ipv6, resp_ipv6)
+
+ def create_oob_ndp(
+ self,
+ init_dut: android_device.AndroidDevice,
+ resp_dut: android_device.AndroidDevice):
+ """Create an NDP (using OOB discovery).
+
+ Args:
+ init_dut: Initiator device
+ resp_dut: Responder device
+ Returns:
+ A tuple containing the following:
+ - Initiator network request
+ - Responder network request
+ - Initiator Aware data interface
+ - Responder Aware data interface
+ - Initiator IPv6 address
+ - Responder IPv6 address
+ """
+ init_dut.pretty_name = 'Initiator'
+ resp_dut.pretty_name = 'Responder'
+
+ # Initiator+Responder: attach and wait for confirmation & identity.
+ init_id, init_mac = autils.start_attach(init_dut)
+ time.sleep(self.device_startup_offset)
+ resp_id, resp_mac = autils.start_attach(resp_dut)
+
+ # Wait for devices to synchronize with each other - there are no other
+ # mechanisms to make sure this happens for OOB discovery (except retrying
+ # to execute the data-path request).
+ time.sleep(_WAIT_FOR_CLUSTER)
+ return self.create_oob_ndp_on_sessions(init_dut, resp_dut, init_id,
+ init_mac, resp_id, resp_mac)
+
+ def test_ping6_oob(self):
+ """Validate that ping6 works correctly on an NDP created using OOB (out-of-band) discovery."""
+ init_dut = self.ads[0]
+ resp_dut = self.ads[1]
+
+ # Create NDP.
+ (
+ init_network_cb,
+ resp_network_cb,
+ init_aware_if,
+ resp_aware_if,
+ init_ipv6,
+ resp_ipv6,
+ ) = self.create_oob_ndp(init_dut, resp_dut)
+ init_dut.log.info(
+ 'Interface names: I=%s, R=%s', init_aware_if, resp_aware_if
+ )
+ resp_dut.log.info(
+ 'Interface addresses (IPv6): I=%s, R=%s', init_ipv6, resp_ipv6
+ )
+
+ # Run ping6 command.
+ autils.run_ping6(init_dut, resp_ipv6)
+ time.sleep(3)
+ autils.run_ping6(resp_dut, init_ipv6)
+ time.sleep(3)
+
+ # Clean-up.
+ init_dut.wifi_aware_snippet.connectivityUnregisterNetwork(
+ init_network_cb.callback_id
+ )
+ resp_dut.wifi_aware_snippet.connectivityUnregisterNetwork(
+ resp_network_cb.callback_id
+ )
+ init_dut.wifi_aware_snippet.wifiAwareCloseAllWifiAwareSession()
+ resp_dut.wifi_aware_snippet.wifiAwareCloseAllWifiAwareSession()
+
if __name__ == '__main__':
- # Take test args
+ # Take test args.
if '--' in sys.argv:
index = sys.argv.index('--')
sys.argv = sys.argv[:1] + sys.argv[index + 1 :]