Merge "[RESTRICT AUTOMERGE] [DataBroker] Remove MetricsConfig after script finishes" into sc-v2-dev
diff --git a/service/src/com/android/car/telemetry/databroker/DataBrokerController.java b/service/src/com/android/car/telemetry/databroker/DataBrokerController.java
index 42da6cd..6b66f12 100644
--- a/service/src/com/android/car/telemetry/databroker/DataBrokerController.java
+++ b/service/src/com/android/car/telemetry/databroker/DataBrokerController.java
@@ -99,7 +99,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