summaryrefslogtreecommitdiff
path: root/common/tests/unit/src/com/android/net/module/util/DeviceConfigUtilsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'common/tests/unit/src/com/android/net/module/util/DeviceConfigUtilsTest.java')
-rw-r--r--common/tests/unit/src/com/android/net/module/util/DeviceConfigUtilsTest.java446
1 files changed, 0 insertions, 446 deletions
diff --git a/common/tests/unit/src/com/android/net/module/util/DeviceConfigUtilsTest.java b/common/tests/unit/src/com/android/net/module/util/DeviceConfigUtilsTest.java
deleted file mode 100644
index f259e687..00000000
--- a/common/tests/unit/src/com/android/net/module/util/DeviceConfigUtilsTest.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.net.module.util;
-
-import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
-import static android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY;
-import static android.provider.DeviceConfig.NAMESPACE_TETHERING;
-
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
-import static com.android.net.module.util.FeatureVersions.CONNECTIVITY_MODULE_ID;
-import static com.android.net.module.util.FeatureVersions.NETWORK_STACK_MODULE_ID;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.Mockito.anyInt;
-import static org.mockito.Mockito.anyString;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ResolveInfo;
-import android.content.res.Resources;
-import android.provider.DeviceConfig;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.MockitoSession;
-
-import java.util.Arrays;
-
-
-/**
- * Tests for DeviceConfigUtils.
- *
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class DeviceConfigUtilsTest {
- private static final String TEST_NAME_SPACE = "connectivity";
- private static final String TEST_EXPERIMENT_FLAG = "experiment_flag";
- private static final int TEST_FLAG_VALUE = 28;
- private static final String TEST_FLAG_VALUE_STRING = "28";
- private static final int TEST_DEFAULT_FLAG_VALUE = 0;
- private static final int TEST_MAX_FLAG_VALUE = 1000;
- private static final int TEST_MIN_FLAG_VALUE = 100;
- private static final long TEST_PACKAGE_VERSION = 290000000;
- private static final String TEST_PACKAGE_NAME = "test.package.name";
- // The APEX name is the name of the APEX module, as in android.content.pm.ModuleInfo, and is
- // used for its mount point in /apex. APEX packages are actually APKs with a different
- // file extension, so they have an AndroidManifest: the APEX package name is the package name in
- // that manifest, and is reflected in android.content.pm.ApplicationInfo. Contrary to the APEX
- // (module) name, different package names are typically used to identify the organization that
- // built and signed the APEX modules.
- private static final String TEST_APEX_NAME = "com.android.tethering";
- private static final String TEST_APEX_PACKAGE_NAME = "com.prefix.android.tethering";
- private static final String TEST_GO_APEX_PACKAGE_NAME = "com.prefix.android.go.tethering";
- private static final String TEST_CONNRES_PACKAGE_NAME =
- "com.prefix.android.connectivity.resources";
- private static final String TEST_NETWORKSTACK_NAME = "com.prefix.android.networkstack";
- private static final String TEST_GO_NETWORKSTACK_NAME = "com.prefix.android.go.networkstack";
- private final PackageInfo mPackageInfo = new PackageInfo();
- private final PackageInfo mApexPackageInfo = new PackageInfo();
- private MockitoSession mSession;
-
- @Mock private Context mContext;
- @Mock private PackageManager mPm;
- @Mock private Resources mResources;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- mSession = mockitoSession().spyStatic(DeviceConfig.class).startMocking();
-
- mPackageInfo.setLongVersionCode(TEST_PACKAGE_VERSION);
- mApexPackageInfo.setLongVersionCode(TEST_PACKAGE_VERSION);
-
- doReturn(mPm).when(mContext).getPackageManager();
- doReturn(TEST_PACKAGE_NAME).when(mContext).getPackageName();
- doThrow(NameNotFoundException.class).when(mPm).getPackageInfo(anyString(), anyInt());
- doReturn(mPackageInfo).when(mPm).getPackageInfo(eq(TEST_PACKAGE_NAME), anyInt());
- doReturn(mApexPackageInfo).when(mPm).getPackageInfo(eq(TEST_APEX_PACKAGE_NAME), anyInt());
-
- doReturn(mResources).when(mContext).getResources();
-
- final ResolveInfo ri = new ResolveInfo();
- ri.activityInfo = new ActivityInfo();
- ri.activityInfo.applicationInfo = new ApplicationInfo();
- ri.activityInfo.applicationInfo.packageName = TEST_CONNRES_PACKAGE_NAME;
- ri.activityInfo.applicationInfo.sourceDir =
- "/apex/com.android.tethering/priv-app/ServiceConnectivityResources@version";
- doReturn(Arrays.asList(ri)).when(mPm).queryIntentActivities(argThat(
- intent -> intent.getAction().equals(DeviceConfigUtils.RESOURCES_APK_INTENT)),
- eq(MATCH_SYSTEM_ONLY));
- }
-
- @After
- public void tearDown() {
- mSession.finishMocking();
- DeviceConfigUtils.resetPackageVersionCacheForTest();
- }
-
- @Test
- public void testGetDeviceConfigPropertyInt_Null() {
- doReturn(null).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertEquals(TEST_DEFAULT_FLAG_VALUE, DeviceConfigUtils.getDeviceConfigPropertyInt(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG,
- TEST_DEFAULT_FLAG_VALUE /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyInt_NotNull() {
- doReturn(TEST_FLAG_VALUE_STRING).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertEquals(TEST_FLAG_VALUE, DeviceConfigUtils.getDeviceConfigPropertyInt(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG,
- TEST_DEFAULT_FLAG_VALUE /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyInt_NormalValue() {
- doReturn(TEST_FLAG_VALUE_STRING).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertEquals(TEST_FLAG_VALUE, DeviceConfigUtils.getDeviceConfigPropertyInt(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG, 0 /* minimum value */,
- TEST_MAX_FLAG_VALUE /* maximum value */,
- TEST_DEFAULT_FLAG_VALUE /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyInt_NullValue() {
- doReturn(null).when(() -> DeviceConfig.getProperty(
- eq(TEST_NAME_SPACE), eq(TEST_EXPERIMENT_FLAG)));
- assertEquals(TEST_DEFAULT_FLAG_VALUE, DeviceConfigUtils.getDeviceConfigPropertyInt(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG, 0 /* minimum value */,
- TEST_MAX_FLAG_VALUE /* maximum value */,
- TEST_DEFAULT_FLAG_VALUE /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyInt_OverMaximumValue() {
- doReturn(Integer.toString(TEST_MAX_FLAG_VALUE + 10)).when(() -> DeviceConfig.getProperty(
- eq(TEST_NAME_SPACE), eq(TEST_EXPERIMENT_FLAG)));
- assertEquals(TEST_DEFAULT_FLAG_VALUE, DeviceConfigUtils.getDeviceConfigPropertyInt(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG, TEST_MIN_FLAG_VALUE /* minimum value */,
- TEST_MAX_FLAG_VALUE /* maximum value */,
- TEST_DEFAULT_FLAG_VALUE /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyInt_EqualsMaximumValue() {
- doReturn(Integer.toString(TEST_MAX_FLAG_VALUE)).when(() -> DeviceConfig.getProperty(
- eq(TEST_NAME_SPACE), eq(TEST_EXPERIMENT_FLAG)));
- assertEquals(TEST_MAX_FLAG_VALUE, DeviceConfigUtils.getDeviceConfigPropertyInt(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG, TEST_MIN_FLAG_VALUE /* minimum value */,
- TEST_MAX_FLAG_VALUE /* maximum value */,
- TEST_DEFAULT_FLAG_VALUE /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyInt_BelowMinimumValue() {
- doReturn(Integer.toString(TEST_MIN_FLAG_VALUE - 10)).when(() -> DeviceConfig.getProperty(
- eq(TEST_NAME_SPACE), eq(TEST_EXPERIMENT_FLAG)));
- assertEquals(TEST_DEFAULT_FLAG_VALUE, DeviceConfigUtils.getDeviceConfigPropertyInt(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG, TEST_MIN_FLAG_VALUE /* minimum value */,
- TEST_MAX_FLAG_VALUE /* maximum value */,
- TEST_DEFAULT_FLAG_VALUE /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyInt_EqualsMinimumValue() {
- doReturn(Integer.toString(TEST_MIN_FLAG_VALUE)).when(() -> DeviceConfig.getProperty(
- eq(TEST_NAME_SPACE), eq(TEST_EXPERIMENT_FLAG)));
- assertEquals(TEST_MIN_FLAG_VALUE, DeviceConfigUtils.getDeviceConfigPropertyInt(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG, TEST_MIN_FLAG_VALUE /* minimum value */,
- TEST_MAX_FLAG_VALUE /* maximum value */,
- TEST_DEFAULT_FLAG_VALUE /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyBoolean_Null() {
- doReturn(null).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertFalse(DeviceConfigUtils.getDeviceConfigPropertyBoolean(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG,
- false /* default value */));
- }
-
- @Test
- public void testGetDeviceConfigPropertyBoolean_NotNull() {
- doReturn("true").when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertTrue(DeviceConfigUtils.getDeviceConfigPropertyBoolean(
- TEST_NAME_SPACE, TEST_EXPERIMENT_FLAG,
- false /* default value */));
- }
-
- @Test
- public void testFeatureIsEnabled() {
- doReturn(TEST_FLAG_VALUE_STRING).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertTrue(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG));
- assertTrue(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
- }
-
- @Test
- public void testFeatureDefaultEnabled() {
- doReturn(null).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertFalse(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG));
- assertFalse(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
- assertTrue(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, true /* defaultEnabled */));
- }
-
- @Test
- public void testFeatureIsEnabledWithException() throws Exception {
- doThrow(NameNotFoundException.class).when(mPm).getPackageInfo(anyString(), anyInt());
-
- // Feature should be enabled by flag value "1".
- doReturn("1").when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertTrue(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG));
- assertTrue(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
-
- // Feature should be disabled by flag value "999999999".
- doReturn("999999999").when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertFalse(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG));
- assertFalse(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
-
- // Follow defaultEnabled if the flag is not set
- doReturn(null).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertFalse(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, false /* defaultEnabled */));
- assertTrue(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, true /* defaultEnabled */));
- assertFalse(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
- assertTrue(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, true /* defaultEnabled */));
- }
-
- @Test
- public void testFeatureIsEnabledOnGo() throws Exception {
- doThrow(NameNotFoundException.class).when(mPm).getPackageInfo(
- eq(TEST_APEX_PACKAGE_NAME), anyInt());
- doReturn(mApexPackageInfo).when(mPm).getPackageInfo(
- eq(TEST_GO_APEX_PACKAGE_NAME), anyInt());
- doReturn("0").when(() -> DeviceConfig.getProperty(
- eq(TEST_NAME_SPACE), eq(TEST_EXPERIMENT_FLAG)));
-
- assertFalse(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG));
- assertFalse(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
- assertTrue(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, true /* defaultEnabled */));
-
- doReturn(TEST_FLAG_VALUE_STRING).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertTrue(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
- }
-
- @Test
- public void testFeatureIsEnabledCaching_APK() throws Exception {
- doReturn(TEST_FLAG_VALUE_STRING).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertTrue(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG));
- assertTrue(DeviceConfigUtils.isFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG));
-
- // Package info is only queried once
- verify(mContext, times(1)).getPackageManager();
- verify(mContext, times(1)).getPackageName();
- verify(mPm, times(1)).getPackageInfo(anyString(), anyInt());
- }
-
- @Test
- public void testFeatureIsEnabledCaching_APEX() throws Exception {
- doReturn(TEST_FLAG_VALUE_STRING).when(() -> DeviceConfig.getProperty(eq(TEST_NAME_SPACE),
- eq(TEST_EXPERIMENT_FLAG)));
- assertTrue(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
- assertTrue(DeviceConfigUtils.isTetheringFeatureEnabled(mContext, TEST_NAME_SPACE,
- TEST_EXPERIMENT_FLAG, TEST_APEX_NAME, false /* defaultEnabled */));
-
- // Package info is only queried once
- verify(mPm, times(1)).getPackageInfo(anyString(), anyInt());
- verify(mContext, never()).getPackageName();
- }
-
- @Test
- public void testGetResBooleanConfig() {
- final int someResId = 1234;
- doReturn(true).when(mResources).getBoolean(someResId);
- assertTrue(DeviceConfigUtils.getResBooleanConfig(mContext, someResId, false));
- doReturn(false).when(mResources).getBoolean(someResId);
- assertFalse(DeviceConfigUtils.getResBooleanConfig(mContext, someResId, false));
- doThrow(new Resources.NotFoundException()).when(mResources).getBoolean(someResId);
- assertFalse(DeviceConfigUtils.getResBooleanConfig(mContext, someResId, false));
- }
-
- @Test
- public void testGetResIntegerConfig() {
- final int someResId = 1234;
- doReturn(2097).when(mResources).getInteger(someResId);
- assertEquals(2097, DeviceConfigUtils.getResIntegerConfig(mContext, someResId, 2098));
- doThrow(new Resources.NotFoundException()).when(mResources).getInteger(someResId);
- assertEquals(2098, DeviceConfigUtils.getResIntegerConfig(mContext, someResId, 2098));
- }
-
- @Test
- public void testGetNetworkStackModuleVersionCaching() throws Exception {
- final PackageInfo networkStackPackageInfo = new PackageInfo();
- networkStackPackageInfo.setLongVersionCode(TEST_PACKAGE_VERSION);
- doReturn(networkStackPackageInfo).when(mPm).getPackageInfo(
- eq(TEST_NETWORKSTACK_NAME), anyInt());
- assertEquals(TEST_PACKAGE_VERSION,
- DeviceConfigUtils.getNetworkStackModuleVersion(mContext));
-
- assertEquals(TEST_PACKAGE_VERSION,
- DeviceConfigUtils.getNetworkStackModuleVersion(mContext));
- // Package info is only queried once
- verify(mPm, times(1)).getPackageInfo(anyString(), anyInt());
- verify(mContext, never()).getPackageName();
- }
-
- @Test
- public void testGetNetworkStackModuleVersionOnNonMainline() {
- assertEquals(DeviceConfigUtils.DEFAULT_PACKAGE_VERSION,
- DeviceConfigUtils.getNetworkStackModuleVersion(mContext));
- }
-
- @Test
- public void testGetNetworkStackModuleVersion() throws Exception {
- final PackageInfo networkStackPackageInfo = new PackageInfo();
- final PackageInfo goNetworkStackPackageInfo = new PackageInfo();
- networkStackPackageInfo.setLongVersionCode(TEST_PACKAGE_VERSION);
- goNetworkStackPackageInfo.setLongVersionCode(TEST_PACKAGE_VERSION + 1);
- doReturn(goNetworkStackPackageInfo).when(mPm).getPackageInfo(
- eq(TEST_NETWORKSTACK_NAME), anyInt());
- // Verify the returned value is go module version.
- assertEquals(TEST_PACKAGE_VERSION + 1,
- DeviceConfigUtils.getNetworkStackModuleVersion(mContext));
- }
-
- @Test
- public void testIsFeatureSupported_networkStackFeature() throws Exception {
- // Supported for DEFAULT_PACKAGE_VERSION
- assertTrue(DeviceConfigUtils.isFeatureSupported(
- mContext, TEST_PACKAGE_VERSION + NETWORK_STACK_MODULE_ID));
-
- final PackageInfo networkStackPackageInfo = new PackageInfo();
- networkStackPackageInfo.setLongVersionCode(TEST_PACKAGE_VERSION);
- doReturn(networkStackPackageInfo).when(mPm).getPackageInfo(
- eq(TEST_NETWORKSTACK_NAME), anyInt());
-
- assertTrue(DeviceConfigUtils.isFeatureSupported(
- mContext, TEST_PACKAGE_VERSION + NETWORK_STACK_MODULE_ID));
- assertFalse(DeviceConfigUtils.isFeatureSupported(
- mContext, TEST_PACKAGE_VERSION + NETWORK_STACK_MODULE_ID + 1));
- }
-
- @Test
- public void testIsFeatureSupported_tetheringFeature() throws Exception {
- assertTrue(DeviceConfigUtils.isFeatureSupported(
- mContext, TEST_PACKAGE_VERSION + CONNECTIVITY_MODULE_ID));
- // Return false because feature requires a future version.
- assertFalse(DeviceConfigUtils.isFeatureSupported(
- mContext, 889900000L + CONNECTIVITY_MODULE_ID));
- }
-
- @Test
- public void testIsFeatureSupported_illegalModule() throws Exception {
- assertThrows(IllegalArgumentException.class,
- () -> DeviceConfigUtils.isFeatureSupported(mContext, TEST_PACKAGE_VERSION));
- }
-
- @Test
- public void testIsTetheringFeatureNotChickenedOut() throws Exception {
- doReturn("0").when(() -> DeviceConfig.getProperty(
- eq(NAMESPACE_TETHERING), eq(TEST_EXPERIMENT_FLAG)));
- assertTrue(DeviceConfigUtils.isTetheringFeatureNotChickenedOut(TEST_EXPERIMENT_FLAG));
-
- doReturn(TEST_FLAG_VALUE_STRING).when(
- () -> DeviceConfig.getProperty(eq(NAMESPACE_TETHERING), eq(TEST_EXPERIMENT_FLAG)));
- assertFalse(DeviceConfigUtils.isTetheringFeatureNotChickenedOut(TEST_EXPERIMENT_FLAG));
- }
-
- @Test
- public void testIsNetworkStackFeatureNotChickenedOut() throws Exception {
- doReturn("0").when(() -> DeviceConfig.getProperty(
- eq(NAMESPACE_CONNECTIVITY), eq(TEST_EXPERIMENT_FLAG)));
- assertTrue(DeviceConfigUtils.isNetworkStackFeatureNotChickenedOut(TEST_EXPERIMENT_FLAG));
-
- doReturn(TEST_FLAG_VALUE_STRING).when(
- () -> DeviceConfig.getProperty(eq(NAMESPACE_CONNECTIVITY),
- eq(TEST_EXPERIMENT_FLAG)));
- assertFalse(DeviceConfigUtils.isNetworkStackFeatureNotChickenedOut(TEST_EXPERIMENT_FLAG));
- }
-}