Clean Up and Add new Flags for SPE in ODP and FC
Bug: 338411035
Test: atest OnDevicePersonalizationManagingServicesTests:PhFlagsTest FederatedComputeServicesTests:PhFlagsTest
Change-Id: Ia89c049ad45f793183416f2eee9944d225c72df5
diff --git a/federatedcompute/src/com/android/federatedcompute/services/common/Flags.java b/federatedcompute/src/com/android/federatedcompute/services/common/Flags.java
index 9bea97b..6a7bf9d 100644
--- a/federatedcompute/src/com/android/federatedcompute/services/common/Flags.java
+++ b/federatedcompute/src/com/android/federatedcompute/services/common/Flags.java
@@ -16,6 +16,8 @@
package com.android.federatedcompute.services.common;
+import com.android.adservices.shared.common.flags.ConfigFlag;
+import com.android.adservices.shared.common.flags.FeatureFlag;
import com.android.adservices.shared.common.flags.ModuleSharedFlags;
import java.util.concurrent.TimeUnit;
@@ -209,19 +211,6 @@
return DEFAULT_TASK_HISTORY_TTL_MILLIS;
}
- boolean DEFAULT_BACKGROUND_JOBS_LOGGING_ENABLED = false;
-
- default boolean getBackgroundJobsLoggingEnabled() {
- return DEFAULT_BACKGROUND_JOBS_LOGGING_ENABLED;
- }
-
- /** Default logging rate in percent */
- int DEFAULT_BACKGROUND_JOB_SAMPLING_LOGGING_RATE = 5;
-
- default int getBackgroundJobSamplingLoggingRate() {
- return DEFAULT_BACKGROUND_JOB_SAMPLING_LOGGING_RATE;
- }
-
int DEFAULT_EXAMPLE_STORE_SERVICE_CALLBACK_TIMEOUT_SEC = 10;
default int getExampleStoreServiceCallbackTimeoutSec() {
@@ -243,10 +232,22 @@
long FCP_DEFAULT_MEMORY_SIZE_LIMIT = 50000000L; // 50 MBs in bytes
- /**
- * Provides upper limit for FCP temp files.
- */
+ /** Provides upper limit for FCP temp files. */
default long getFcpMemorySizeLimit() {
return FCP_DEFAULT_MEMORY_SIZE_LIMIT;
}
+
+ /** Default value for the base64 encoded Job Policy proto for FCP background jobs. */
+ @ConfigFlag String DEFAULT_FCP_MODULE_JOB_POLICY = "";
+
+ default String getFcpModuleJobPolicy() {
+ return DEFAULT_FCP_MODULE_JOB_POLICY;
+ }
+
+ /** Default value for SPE to be enabled for the pilot background jobs. */
+ @FeatureFlag boolean DEFAULT_SPE_PILOT_JOB_ENABLED = false;
+
+ default boolean getSpePilotJobEnabled() {
+ return DEFAULT_SPE_PILOT_JOB_ENABLED;
+ }
}
diff --git a/federatedcompute/src/com/android/federatedcompute/services/common/PhFlags.java b/federatedcompute/src/com/android/federatedcompute/services/common/PhFlags.java
index 6dc6500..2b96196 100644
--- a/federatedcompute/src/com/android/federatedcompute/services/common/PhFlags.java
+++ b/federatedcompute/src/com/android/federatedcompute/services/common/PhFlags.java
@@ -79,6 +79,12 @@
static final String FCP_ENABLE_BACKGROUND_JOBS_LOGGING = "fcp_enable_background_jobs_logging";
static final String FCP_BACKGROUND_JOB_LOGGING_SAMPLING_RATE =
"fcp_background_job_logging_sampling_rate";
+ static final String FCP_JOB_SCHEDULING_LOGGING_ENABLED = "fcp_job_scheduling_logging_enabled";
+
+ static final String FCP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE =
+ "fcp_job_scheduling_logging_sampling_rate";
+ static final String FCP_MODULE_JOB_POLICY = "fcp_module_job_policy";
+ static final String FCP_SPE_PILOT_JOB_ENABLED = "fcp_spe_pilot_job_enabled";
static final String EXAMPLE_STORE_SERVICE_CALLBACK_TIMEOUT_SEC =
"example_store_service_timeout_sec";
static final String FCP_TF_ERROR_RESCHEDULE_SECONDS_CONFIG_NAME = "tf_error_reschedule_seconds";
@@ -266,7 +272,7 @@
return DeviceConfig.getBoolean(
/* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
/* name= */ FCP_ENABLE_BACKGROUND_JOBS_LOGGING,
- /* defaultValue= */ DEFAULT_BACKGROUND_JOBS_LOGGING_ENABLED);
+ /* defaultValue= */ BACKGROUND_JOB_LOGGING_ENABLED);
});
}
@@ -275,7 +281,39 @@
return DeviceConfig.getInt(
/* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
/* name= */ FCP_BACKGROUND_JOB_LOGGING_SAMPLING_RATE,
- /* defaultValue= */ DEFAULT_BACKGROUND_JOB_SAMPLING_LOGGING_RATE);
+ /* defaultValue= */ BACKGROUND_JOB_SAMPLING_LOGGING_RATE);
+ }
+
+ @Override
+ public boolean getJobSchedulingLoggingEnabled() {
+ return DeviceConfig.getBoolean(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name= */ FCP_JOB_SCHEDULING_LOGGING_ENABLED,
+ /* defaultValue= */ DEFAULT_JOB_SCHEDULING_LOGGING_ENABLED);
+ }
+
+ @Override
+ public int getJobSchedulingLoggingSamplingRate() {
+ return DeviceConfig.getInt(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name= */ FCP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE,
+ /* defaultValue= */ DEFAULT_JOB_SCHEDULING_LOGGING_SAMPLING_RATE);
+ }
+
+ @Override
+ public String getFcpModuleJobPolicy() {
+ return DeviceConfig.getString(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name */ FCP_MODULE_JOB_POLICY,
+ /* defaultValue */ DEFAULT_FCP_MODULE_JOB_POLICY);
+ }
+
+ @Override
+ public boolean getSpePilotJobEnabled() {
+ return DeviceConfig.getBoolean(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name= */ FCP_SPE_PILOT_JOB_ENABLED,
+ /* defaultValue= */ DEFAULT_SPE_PILOT_JOB_ENABLED);
}
@Override
@@ -309,5 +347,4 @@
/* name= */ FCP_MEMORY_SIZE_LIMIT_CONFIG_NAME,
/* defaultValue= */ FCP_DEFAULT_MEMORY_SIZE_LIMIT);
}
-
}
diff --git a/src/com/android/ondevicepersonalization/services/Flags.java b/src/com/android/ondevicepersonalization/services/Flags.java
index 4e6e3be..ce9361c 100644
--- a/src/com/android/ondevicepersonalization/services/Flags.java
+++ b/src/com/android/ondevicepersonalization/services/Flags.java
@@ -16,6 +16,8 @@
package com.android.ondevicepersonalization.services;
+import com.android.adservices.shared.common.flags.ConfigFlag;
+import com.android.adservices.shared.common.flags.FeatureFlag;
import com.android.adservices.shared.common.flags.ModuleSharedFlags;
/**
@@ -70,42 +72,29 @@
*/
int WEB_TRIGGER_FLOW_DEADLINE_SECONDS = 30;
-
- /**
- * Default value for the list of trusted partner app names.
- */
+ /** Default value for the list of trusted partner app names. */
String DEFAULT_TRUSTED_PARTNER_APPS_LIST = "";
- /**
- * Default value for the shared isolated process feature.
- */
+ /** Default value for the shared isolated process feature. */
boolean DEFAULT_SHARED_ISOLATED_PROCESS_FEATURE_ENABLED = true;
- /**
- * Default value for enabling client error logging.
- */
+ /** Default value for enabling client error logging. */
boolean DEFAULT_CLIENT_ERROR_LOGGING_ENABLED = false;
- /**
- * Default value for enabling background jobs logging.
- */
- boolean DEFAULT_BACKGROUND_JOBS_LOGGING_ENABLED = false;
+ /** Default value for the base64 encoded Job Policy proto for ODP background jobs. */
+ @ConfigFlag String DEFAULT_ODP_MODULE_JOB_POLICY = "";
- /**
- * Default value for background job sampling logging rate.
- */
- int DEFAULT_BACKGROUND_JOB_SAMPLING_LOGGING_RATE = 5;
+ /** Default value for SPE to be enabled for the pilot background jobs. */
+ @FeatureFlag boolean DEFAULT_SPE_PILOT_JOB_ENABLED = false;
- /**
- * Default value for isolated service debugging flag.
- */
+ /** Default value for isolated service debugging flag. */
boolean DEFAULT_ISOLATED_SERVICE_DEBUGGING_ENABLED = false;
/** Default delay before starting a data reset. */
- int DEFAULT_RESET_DATA_DELAY_SECONDS = 24 * 60 * 60; // 24 hours
+ int DEFAULT_RESET_DATA_DELAY_SECONDS = 24 * 60 * 60; // 24 hours
/** Default deadline for data reset. */
- int DEFAULT_RESET_DATA_DEADLINE_SECONDS = 30 * 60 * 60; // 30 hours
+ int DEFAULT_RESET_DATA_DEADLINE_SECONDS = 30 * 60 * 60; // 30 hours
String DEFAULT_CALLER_APP_ALLOW_LIST =
"android.ondevicepersonalization,"
@@ -243,6 +232,14 @@
return DEFAULT_ISOLATED_SERVICE_DEBUGGING_ENABLED;
}
+ default String getOdpModuleJobPolicy() {
+ return DEFAULT_ODP_MODULE_JOB_POLICY;
+ }
+
+ default boolean getSpePilotJobEnabled() {
+ return DEFAULT_SPE_PILOT_JOB_ENABLED;
+ }
+
/** Set all stable flags. */
default void setStableFlags() {}
diff --git a/src/com/android/ondevicepersonalization/services/PhFlags.java b/src/com/android/ondevicepersonalization/services/PhFlags.java
index 99a15c7..ffe5241 100644
--- a/src/com/android/ondevicepersonalization/services/PhFlags.java
+++ b/src/com/android/ondevicepersonalization/services/PhFlags.java
@@ -76,17 +76,25 @@
public static final String KEY_ODP_BACKGROUND_JOB_SAMPLING_LOGGING_RATE =
"odp_background_job_sampling_logging_rate";
+ public static final String KEY_ODP_JOB_SCHEDULING_LOGGING_ENABLED =
+ "odp_job_scheduling_logging_enabled";
+
+ public static final String KEY_ODP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE =
+ "odp_job_scheduling_logging_sampling_rate";
+
+ public static final String KEY_ODP_MODULE_JOB_POLICY = "odp_module_job_policy";
+
+ public static final String KEY_ODP_SPE_PILOT_JOB_ENABLED = "odp_spe_pilot_job_enabled";
+
public static final String KEY_IS_ART_IMAGE_LOADING_OPTIMIZATION_ENABLED =
"is_art_image_loading_optimization_enabled";
public static final String KEY_ISOLATED_SERVICE_DEBUGGING_ENABLED =
"isolated_service_debugging_enabled";
- public static final String KEY_RESET_DATA_DELAY_SECONDS =
- "reset_data_delay_seconds";
+ public static final String KEY_RESET_DATA_DELAY_SECONDS = "reset_data_delay_seconds";
- public static final String KEY_RESET_DATA_DEADLINE_SECONDS =
- "reset_data_deadline_seconds";
+ public static final String KEY_RESET_DATA_DEADLINE_SECONDS = "reset_data_deadline_seconds";
// OnDevicePersonalization Namespace String from DeviceConfig class
public static final String NAMESPACE_ON_DEVICE_PERSONALIZATION = "on_device_personalization";
@@ -308,13 +316,15 @@
@Override
public boolean getBackgroundJobsLoggingEnabled() {
// needs stable: execution stats may be less accurate if flag changed during job execution
- return (boolean) mStableFlags.computeIfAbsent(KEY_ODP_BACKGROUND_JOBS_LOGGING_ENABLED,
- key -> {
- return DeviceConfig.getBoolean(
- /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
- /* name= */ KEY_ODP_BACKGROUND_JOBS_LOGGING_ENABLED,
- /* defaultValue= */ DEFAULT_BACKGROUND_JOBS_LOGGING_ENABLED);
- });
+ return (boolean)
+ mStableFlags.computeIfAbsent(
+ KEY_ODP_BACKGROUND_JOBS_LOGGING_ENABLED,
+ key -> {
+ return DeviceConfig.getBoolean(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name= */ KEY_ODP_BACKGROUND_JOBS_LOGGING_ENABLED,
+ /* defaultValue= */ BACKGROUND_JOB_LOGGING_ENABLED);
+ });
}
@Override
@@ -322,7 +332,39 @@
return DeviceConfig.getInt(
/* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
/* name= */ KEY_ODP_BACKGROUND_JOB_SAMPLING_LOGGING_RATE,
- /* defaultValue= */ DEFAULT_BACKGROUND_JOB_SAMPLING_LOGGING_RATE);
+ /* defaultValue= */ BACKGROUND_JOB_SAMPLING_LOGGING_RATE);
+ }
+
+ @Override
+ public boolean getJobSchedulingLoggingEnabled() {
+ return DeviceConfig.getBoolean(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name= */ KEY_ODP_JOB_SCHEDULING_LOGGING_ENABLED,
+ /* defaultValue= */ DEFAULT_JOB_SCHEDULING_LOGGING_ENABLED);
+ }
+
+ @Override
+ public int getJobSchedulingLoggingSamplingRate() {
+ return DeviceConfig.getInt(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name= */ KEY_ODP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE,
+ /* defaultValue= */ DEFAULT_JOB_SCHEDULING_LOGGING_SAMPLING_RATE);
+ }
+
+ @Override
+ public String getOdpModuleJobPolicy() {
+ return DeviceConfig.getString(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name */ KEY_ODP_MODULE_JOB_POLICY,
+ /* defaultValue */ DEFAULT_ODP_MODULE_JOB_POLICY);
+ }
+
+ @Override
+ public boolean getSpePilotJobEnabled() {
+ return DeviceConfig.getBoolean(
+ /* namespace= */ NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ /* name= */ KEY_ODP_SPE_PILOT_JOB_ENABLED,
+ /* defaultValue= */ DEFAULT_SPE_PILOT_JOB_ENABLED);
}
@Override
diff --git a/tests/federatedcomputetests/src/com/android/federatedcompute/services/common/PhFlagsTest.java b/tests/federatedcomputetests/src/com/android/federatedcompute/services/common/PhFlagsTest.java
index 05fe0da..0fbf437 100644
--- a/tests/federatedcomputetests/src/com/android/federatedcompute/services/common/PhFlagsTest.java
+++ b/tests/federatedcomputetests/src/com/android/federatedcompute/services/common/PhFlagsTest.java
@@ -16,10 +16,14 @@
package com.android.federatedcompute.services.common;
-import static com.android.federatedcompute.services.common.Flags.DEFAULT_BACKGROUND_JOBS_LOGGING_ENABLED;
-import static com.android.federatedcompute.services.common.Flags.DEFAULT_BACKGROUND_JOB_SAMPLING_LOGGING_RATE;
+import static com.android.adservices.shared.common.flags.ModuleSharedFlags.BACKGROUND_JOB_LOGGING_ENABLED;
+import static com.android.adservices.shared.common.flags.ModuleSharedFlags.BACKGROUND_JOB_SAMPLING_LOGGING_RATE;
+import static com.android.adservices.shared.common.flags.ModuleSharedFlags.DEFAULT_JOB_SCHEDULING_LOGGING_ENABLED;
+import static com.android.adservices.shared.common.flags.ModuleSharedFlags.DEFAULT_JOB_SCHEDULING_LOGGING_SAMPLING_RATE;
import static com.android.federatedcompute.services.common.Flags.DEFAULT_ENABLE_ELIGIBILITY_TASK;
+import static com.android.federatedcompute.services.common.Flags.DEFAULT_FCP_MODULE_JOB_POLICY;
import static com.android.federatedcompute.services.common.Flags.DEFAULT_SCHEDULING_PERIOD_SECS;
+import static com.android.federatedcompute.services.common.Flags.DEFAULT_SPE_PILOT_JOB_ENABLED;
import static com.android.federatedcompute.services.common.Flags.DEFAULT_THERMAL_STATUS_TO_THROTTLE;
import static com.android.federatedcompute.services.common.Flags.DEFAULT_TRAINING_CONDITION_CHECK_THROTTLE_PERIOD_MILLIS;
import static com.android.federatedcompute.services.common.Flags.DEFAULT_TRAINING_MIN_BATTERY_LEVEL;
@@ -42,8 +46,12 @@
import static com.android.federatedcompute.services.common.PhFlags.FCP_ENABLE_BACKGROUND_JOBS_LOGGING;
import static com.android.federatedcompute.services.common.PhFlags.FCP_ENABLE_CLIENT_ERROR_LOGGING;
import static com.android.federatedcompute.services.common.PhFlags.FCP_ENABLE_ENCRYPTION;
+import static com.android.federatedcompute.services.common.PhFlags.FCP_JOB_SCHEDULING_LOGGING_ENABLED;
+import static com.android.federatedcompute.services.common.PhFlags.FCP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE;
import static com.android.federatedcompute.services.common.PhFlags.FCP_MEMORY_SIZE_LIMIT_CONFIG_NAME;
+import static com.android.federatedcompute.services.common.PhFlags.FCP_MODULE_JOB_POLICY;
import static com.android.federatedcompute.services.common.PhFlags.FCP_RESCHEDULE_LIMIT_CONFIG_NAME;
+import static com.android.federatedcompute.services.common.PhFlags.FCP_SPE_PILOT_JOB_ENABLED;
import static com.android.federatedcompute.services.common.PhFlags.FEDERATED_COMPUTATION_ENCRYPTION_KEY_DOWNLOAD_URL;
import static com.android.federatedcompute.services.common.PhFlags.HTTP_REQUEST_RETRY_LIMIT_CONFIG_NAME;
import static com.android.federatedcompute.services.common.PhFlags.KEY_FEDERATED_COMPUTE_KILL_SWITCH;
@@ -152,12 +160,32 @@
DeviceConfig.setProperty(
DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
FCP_ENABLE_BACKGROUND_JOBS_LOGGING,
- Boolean.toString(DEFAULT_BACKGROUND_JOBS_LOGGING_ENABLED),
+ Boolean.toString(BACKGROUND_JOB_LOGGING_ENABLED),
/* makeDefault= */ false);
DeviceConfig.setProperty(
DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
FCP_BACKGROUND_JOB_LOGGING_SAMPLING_RATE,
- Integer.toString(DEFAULT_BACKGROUND_JOB_SAMPLING_LOGGING_RATE),
+ Integer.toString(BACKGROUND_JOB_SAMPLING_LOGGING_RATE),
+ /* makeDefault= */ false);
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ FCP_JOB_SCHEDULING_LOGGING_ENABLED,
+ Boolean.toString(DEFAULT_JOB_SCHEDULING_LOGGING_ENABLED),
+ /* makeDefault= */ false);
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ FCP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE,
+ Integer.toString(DEFAULT_JOB_SCHEDULING_LOGGING_SAMPLING_RATE),
+ /* makeDefault= */ false);
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ FCP_MODULE_JOB_POLICY,
+ DEFAULT_FCP_MODULE_JOB_POLICY,
+ /* makeDefault= */ false);
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ FCP_SPE_PILOT_JOB_ENABLED,
+ Boolean.toString(DEFAULT_SPE_PILOT_JOB_ENABLED),
/* makeDefault= */ false);
DeviceConfig.setProperty(
DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
@@ -555,8 +583,9 @@
@Test
public void testGetBackgroundJobsLoggingEnabled() {
- // read a stable flag value
+ // read a stable flag value and verify it's equal to the default value.
boolean stableValue = FlagsFactory.getFlags().getBackgroundJobsLoggingEnabled();
+ assertThat(stableValue).isEqualTo(BACKGROUND_JOB_LOGGING_ENABLED);
// Now overriding the value from PH.
boolean overrideEnabled = !stableValue;
@@ -573,17 +602,12 @@
@Test
public void testGetBackgroundJobSamplingLoggingRate() {
- int currentValue = 10;
- DeviceConfig.setProperty(
- DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
- FCP_BACKGROUND_JOB_LOGGING_SAMPLING_RATE,
- Integer.toString(currentValue),
- /* makeDefault= */ false);
+ int defaultValue = BACKGROUND_JOB_SAMPLING_LOGGING_RATE;
assertThat(FlagsFactory.getFlags().getBackgroundJobSamplingLoggingRate())
- .isEqualTo(currentValue);
+ .isEqualTo(defaultValue);
// Now overriding the value from PH.
- int overrideRate = 1;
+ int overrideRate = defaultValue + 1;
DeviceConfig.setProperty(
DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
FCP_BACKGROUND_JOB_LOGGING_SAMPLING_RATE,
@@ -615,4 +639,72 @@
Flags phFlags = FlagsFactory.getFlags();
assertThat(phFlags.getFcpMemorySizeLimit()).isEqualTo(overrideFcpMemLimit);
}
+
+ @Test
+ public void testGetJobSchedulingLoggingEnabled() {
+ // read a stable flag value and verify it's equal to the default value.
+ boolean stableValue = FlagsFactory.getFlags().getJobSchedulingLoggingEnabled();
+ assertThat(stableValue).isEqualTo(DEFAULT_JOB_SCHEDULING_LOGGING_ENABLED);
+
+ // override the value in device config.
+ boolean overrideEnabled = !stableValue;
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ FCP_JOB_SCHEDULING_LOGGING_ENABLED,
+ Boolean.toString(overrideEnabled),
+ /* makeDefault= */ false);
+
+ // the flag value remains stable
+ assertThat(FlagsFactory.getFlags().getJobSchedulingLoggingEnabled())
+ .isEqualTo(overrideEnabled);
+ }
+
+ @Test
+ public void testGetJobSchedulingLoggingSamplingRate() {
+ int defaultValue = DEFAULT_JOB_SCHEDULING_LOGGING_SAMPLING_RATE;
+ assertThat(FlagsFactory.getFlags().getJobSchedulingLoggingSamplingRate())
+ .isEqualTo(defaultValue);
+
+ // Override the value in device config.
+ int overrideRate = defaultValue + 1;
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ FCP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE,
+ Integer.toString(overrideRate),
+ /* makeDefault= */ false);
+ assertThat(FlagsFactory.getFlags().getJobSchedulingLoggingSamplingRate())
+ .isEqualTo(overrideRate);
+ }
+
+ @Test
+ public void testGetFcpModuleJobPolicy() {
+ assertThat(FlagsFactory.getFlags().getFcpModuleJobPolicy())
+ .isEqualTo(DEFAULT_FCP_MODULE_JOB_POLICY);
+
+ String overrideValue = "Something";
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ FCP_MODULE_JOB_POLICY,
+ overrideValue,
+ /* makeDefault= */ false);
+ assertThat(FlagsFactory.getFlags().getFcpModuleJobPolicy()).isEqualTo(overrideValue);
+ }
+
+ @Test
+ public void testGetSpePilotJobEnabled() {
+ // read a stable flag value and verify it's equal to the default value.
+ boolean stableValue = FlagsFactory.getFlags().getSpePilotJobEnabled();
+ assertThat(stableValue).isEqualTo(DEFAULT_SPE_PILOT_JOB_ENABLED);
+
+ // override the value in device config.
+ boolean overrideEnabled = !stableValue;
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ FCP_SPE_PILOT_JOB_ENABLED,
+ Boolean.toString(overrideEnabled),
+ /* makeDefault= */ false);
+
+ // the flag value remains stable
+ assertThat(FlagsFactory.getFlags().getSpePilotJobEnabled()).isEqualTo(overrideEnabled);
+ }
}
diff --git a/tests/servicetests/src/com/android/ondevicepersonalization/services/PhFlagsTest.java b/tests/servicetests/src/com/android/ondevicepersonalization/services/PhFlagsTest.java
index a2ba05e..1dedaf4 100644
--- a/tests/servicetests/src/com/android/ondevicepersonalization/services/PhFlagsTest.java
+++ b/tests/servicetests/src/com/android/ondevicepersonalization/services/PhFlagsTest.java
@@ -16,12 +16,18 @@
package com.android.ondevicepersonalization.services;
+import static com.android.adservices.shared.common.flags.ModuleSharedFlags.BACKGROUND_JOB_LOGGING_ENABLED;
+import static com.android.adservices.shared.common.flags.ModuleSharedFlags.BACKGROUND_JOB_SAMPLING_LOGGING_RATE;
+import static com.android.adservices.shared.common.flags.ModuleSharedFlags.DEFAULT_JOB_SCHEDULING_LOGGING_ENABLED;
+import static com.android.adservices.shared.common.flags.ModuleSharedFlags.DEFAULT_JOB_SCHEDULING_LOGGING_SAMPLING_RATE;
import static com.android.ondevicepersonalization.services.Flags.APP_REQUEST_FLOW_DEADLINE_SECONDS;
import static com.android.ondevicepersonalization.services.Flags.DEFAULT_CALLER_APP_ALLOW_LIST;
import static com.android.ondevicepersonalization.services.Flags.DEFAULT_CLIENT_ERROR_LOGGING_ENABLED;
import static com.android.ondevicepersonalization.services.Flags.DEFAULT_ISOLATED_SERVICE_ALLOW_LIST;
+import static com.android.ondevicepersonalization.services.Flags.DEFAULT_ODP_MODULE_JOB_POLICY;
import static com.android.ondevicepersonalization.services.Flags.DEFAULT_OUTPUT_DATA_ALLOW_LIST;
import static com.android.ondevicepersonalization.services.Flags.DEFAULT_SHARED_ISOLATED_PROCESS_FEATURE_ENABLED;
+import static com.android.ondevicepersonalization.services.Flags.DEFAULT_SPE_PILOT_JOB_ENABLED;
import static com.android.ondevicepersonalization.services.Flags.DEFAULT_TRUSTED_PARTNER_APPS_LIST;
import static com.android.ondevicepersonalization.services.Flags.DOWNLOAD_FLOW_DEADLINE_SECONDS;
import static com.android.ondevicepersonalization.services.Flags.ENABLE_PERSONALIZATION_STATUS_OVERRIDE;
@@ -44,6 +50,10 @@
import static com.android.ondevicepersonalization.services.PhFlags.KEY_ODP_BACKGROUND_JOBS_LOGGING_ENABLED;
import static com.android.ondevicepersonalization.services.PhFlags.KEY_ODP_BACKGROUND_JOB_SAMPLING_LOGGING_RATE;
import static com.android.ondevicepersonalization.services.PhFlags.KEY_ODP_ENABLE_CLIENT_ERROR_LOGGING;
+import static com.android.ondevicepersonalization.services.PhFlags.KEY_ODP_JOB_SCHEDULING_LOGGING_ENABLED;
+import static com.android.ondevicepersonalization.services.PhFlags.KEY_ODP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE;
+import static com.android.ondevicepersonalization.services.PhFlags.KEY_ODP_MODULE_JOB_POLICY;
+import static com.android.ondevicepersonalization.services.PhFlags.KEY_ODP_SPE_PILOT_JOB_ENABLED;
import static com.android.ondevicepersonalization.services.PhFlags.KEY_OUTPUT_DATA_ALLOW_LIST;
import static com.android.ondevicepersonalization.services.PhFlags.KEY_PERSONALIZATION_STATUS_OVERRIDE_VALUE;
import static com.android.ondevicepersonalization.services.PhFlags.KEY_RENDER_FLOW_DEADLINE_SECONDS;
@@ -56,18 +66,14 @@
import android.provider.DeviceConfig;
-import androidx.test.runner.AndroidJUnit4;
-
import com.android.modules.utils.build.SdkLevel;
import com.android.modules.utils.testing.TestableDeviceConfig;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-import org.junit.runner.RunWith;
-/** Unit tests for {@link com.android.ondevicepersonalization.service.PhFlags} */
-@RunWith(AndroidJUnit4.class)
+/** Unit tests for {@link com.android.ondevicepersonalization.services.PhFlags} */
public class PhFlagsTest {
@Rule
public final TestableDeviceConfig.TestableDeviceConfigRule mDeviceConfigRule =
@@ -505,8 +511,9 @@
@Test
public void testGetBackgroundJobsLoggingEnabled() {
- // read a stable flag value
+ // read a stable flag value and verify it's equal to the default value.
boolean stableValue = FlagsFactory.getFlags().getBackgroundJobsLoggingEnabled();
+ assertThat(stableValue).isEqualTo(BACKGROUND_JOB_LOGGING_ENABLED);
// override the value in device config.
boolean overrideEnabled = !stableValue;
@@ -523,17 +530,12 @@
@Test
public void testGetBackgroundJobSamplingLoggingRate() {
- int currentValue = 10;
- DeviceConfig.setProperty(
- DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
- KEY_ODP_BACKGROUND_JOB_SAMPLING_LOGGING_RATE,
- Integer.toString(currentValue),
- /* makeDefault= */ false);
+ int defaultValue = BACKGROUND_JOB_SAMPLING_LOGGING_RATE;
assertThat(FlagsFactory.getFlags().getBackgroundJobSamplingLoggingRate())
- .isEqualTo(currentValue);
+ .isEqualTo(defaultValue);
// Override the value in device config.
- int overrideRate = 1;
+ int overrideRate = defaultValue + 1;
DeviceConfig.setProperty(
DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
KEY_ODP_BACKGROUND_JOB_SAMPLING_LOGGING_RATE,
@@ -542,4 +544,72 @@
assertThat(FlagsFactory.getFlags().getBackgroundJobSamplingLoggingRate())
.isEqualTo(overrideRate);
}
+
+ @Test
+ public void testGetJobSchedulingLoggingEnabled() {
+ // read a stable flag value and verify it's equal to the default value.
+ boolean stableValue = FlagsFactory.getFlags().getJobSchedulingLoggingEnabled();
+ assertThat(stableValue).isEqualTo(DEFAULT_JOB_SCHEDULING_LOGGING_ENABLED);
+
+ // override the value in device config.
+ boolean overrideEnabled = !stableValue;
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ KEY_ODP_JOB_SCHEDULING_LOGGING_ENABLED,
+ Boolean.toString(overrideEnabled),
+ /* makeDefault= */ false);
+
+ // the flag value remains stable
+ assertThat(FlagsFactory.getFlags().getJobSchedulingLoggingEnabled())
+ .isEqualTo(overrideEnabled);
+ }
+
+ @Test
+ public void testGetJobSchedulingLoggingSamplingRate() {
+ int defaultValue = DEFAULT_JOB_SCHEDULING_LOGGING_SAMPLING_RATE;
+ assertThat(FlagsFactory.getFlags().getJobSchedulingLoggingSamplingRate())
+ .isEqualTo(defaultValue);
+
+ // Override the value in device config.
+ int overrideRate = defaultValue + 1;
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ KEY_ODP_JOB_SCHEDULING_LOGGING_SAMPLING_RATE,
+ Integer.toString(overrideRate),
+ /* makeDefault= */ false);
+ assertThat(FlagsFactory.getFlags().getJobSchedulingLoggingSamplingRate())
+ .isEqualTo(overrideRate);
+ }
+
+ @Test
+ public void testGetOdpModuleJobPolicy() {
+ assertThat(FlagsFactory.getFlags().getOdpModuleJobPolicy())
+ .isEqualTo(DEFAULT_ODP_MODULE_JOB_POLICY);
+
+ String overrideValue = "Something";
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ KEY_ODP_MODULE_JOB_POLICY,
+ overrideValue,
+ /* makeDefault= */ false);
+ assertThat(FlagsFactory.getFlags().getOdpModuleJobPolicy()).isEqualTo(overrideValue);
+ }
+
+ @Test
+ public void testGetSpePilotJobEnabled() {
+ // read a stable flag value and verify it's equal to the default value.
+ boolean stableValue = FlagsFactory.getFlags().getSpePilotJobEnabled();
+ assertThat(stableValue).isEqualTo(DEFAULT_SPE_PILOT_JOB_ENABLED);
+
+ // override the value in device config.
+ boolean overrideEnabled = !stableValue;
+ DeviceConfig.setProperty(
+ DeviceConfig.NAMESPACE_ON_DEVICE_PERSONALIZATION,
+ KEY_ODP_SPE_PILOT_JOB_ENABLED,
+ Boolean.toString(overrideEnabled),
+ /* makeDefault= */ false);
+
+ // the flag value remains stable
+ assertThat(FlagsFactory.getFlags().getSpePilotJobEnabled()).isEqualTo(overrideEnabled);
+ }
}