[RESTRICT AUTOMERGE] [DataBroker] Remove MetricsConfig after script finishes
Bug: 201086178
Test: atest CarServiceUnitTest:DataBrokerControllerTest
Test: atest CarServiceUnitTest:DataBrokerTest
Change-Id: If12e322d9beb638d432e7d4496924f74ba71beaf
diff --git a/service/src/com/android/car/telemetry/databroker/DataBrokerController.java b/service/src/com/android/car/telemetry/databroker/DataBrokerController.java
index 8df74be..1ff76ff 100644
--- a/service/src/com/android/car/telemetry/databroker/DataBrokerController.java
+++ b/service/src/com/android/car/telemetry/databroker/DataBrokerController.java
@@ -90,7 +90,8 @@
* @param configName the name of the config of the finished script.
*/
public void onScriptFinished(String configName) {
- // TODO(b/192008783): remove finished config from config store
+ mMetricsConfigStore.removeMetricsConfig(configName);
+ mDataBroker.removeMetricsConfiguration(configName);
}
/**
diff --git a/service/src/com/android/car/telemetry/databroker/DataBrokerImpl.java b/service/src/com/android/car/telemetry/databroker/DataBrokerImpl.java
index b53899b..39a2f17 100644
--- a/service/src/com/android/car/telemetry/databroker/DataBrokerImpl.java
+++ b/service/src/com/android/car/telemetry/databroker/DataBrokerImpl.java
@@ -437,6 +437,7 @@
private void onScriptFinished(PersistableBundle result) {
mTelemetryHandler.post(() -> {
mResultStore.putFinalResult(mCurrentScriptName, result);
+ mScriptFinishedCallback.onScriptFinished(mCurrentScriptName);
mCurrentScriptName = null;
scheduleNextTask();
});
diff --git a/tests/carservice_unit_test/src/com/android/car/telemetry/databroker/DataBrokerControllerTest.java b/tests/carservice_unit_test/src/com/android/car/telemetry/databroker/DataBrokerControllerTest.java
index 43fe336..e589fd3 100644
--- a/tests/carservice_unit_test/src/com/android/car/telemetry/databroker/DataBrokerControllerTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/telemetry/databroker/DataBrokerControllerTest.java
@@ -117,6 +117,16 @@
}
@Test
+ public void testOnScriptFinished_shouldRemoveConfig() {
+ String metricsConfigName = "my_metrics_config";
+
+ mController.onScriptFinished(metricsConfigName);
+
+ verify(mMockMetricsConfigStore).removeMetricsConfig(eq(metricsConfigName));
+ verify(mMockDataBroker).removeMetricsConfiguration(eq(metricsConfigName));
+ }
+
+ @Test
public void testOnSystemEvent_setDataBrokerPriorityCorrectlyForHighCpuUsage() {
SystemMonitorEvent highCpuEvent = new SystemMonitorEvent();
highCpuEvent.setCpuUsageLevel(SystemMonitorEvent.USAGE_LEVEL_HI);
diff --git a/tests/carservice_unit_test/src/com/android/car/telemetry/databroker/DataBrokerTest.java b/tests/carservice_unit_test/src/com/android/car/telemetry/databroker/DataBrokerTest.java
index 3e71470..15aa461 100644
--- a/tests/carservice_unit_test/src/com/android/car/telemetry/databroker/DataBrokerTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/telemetry/databroker/DataBrokerTest.java
@@ -108,6 +108,8 @@
@Mock
private CarPropertyService mMockCarPropertyService;
@Mock
+ private DataBroker.ScriptFinishedCallback mMockScriptFinishedCallback;
+ @Mock
private Handler mMockHandler;
@Mock
private StatsManagerProxy mMockStatsManager;
@@ -124,6 +126,7 @@
mMockCarPropertyService, mMockHandler, mMockStatsManager,
Files.createTempDirectory("telemetry_test").toFile());
mDataBroker = new DataBrokerImpl(mMockContext, factory, mMockResultStore);
+ mDataBroker.setOnScriptFinishedCallback(mMockScriptFinishedCallback);
// add IdleHandler to get notified when all messages and posts are handled
mDataBroker.getTelemetryHandler().getLooper().getQueue().addIdleHandler(() -> {
mIdleHandlerLatch.countDown();
@@ -286,6 +289,7 @@
assertThat(mFakeScriptExecutor.getInvokeScriptCount()).isEqualTo(1);
verify(mMockResultStore).putFinalResult(
eq(mHighPriorityTask.getMetricsConfig().getName()), eq(mData));
+ verify(mMockScriptFinishedCallback).onScriptFinished(eq(METRICS_CONFIG_FOO.getName()));
}
@Test