diff --git a/src/com/android/media/tests/Camera2StressTest.java b/src/com/android/media/tests/Camera2StressTest.java
index 3c3e539..77868d9 100644
--- a/src/com/android/media/tests/Camera2StressTest.java
+++ b/src/com/android/media/tests/Camera2StressTest.java
@@ -75,7 +75,7 @@
         }
 
         @Override
-        public void testEnded(TestIdentifier test, Map<String, String> testMetrics) {
+        public void testEnded(TestIdentifier test, long endTime, Map<String, String> testMetrics) {
             if (hasTestRunFatalError()) {
                 CLog.v("The instrumentation result not found. Fall back to get the metrics from a "
                         + "log file. errorMsg: %s", getCollectingListener().getErrorMessage());
@@ -97,7 +97,7 @@
             parseLog(test.getTestName(), namedTestMetrics);
 
             postScreenshotOnFailure(test);
-            super.testEnded(test, namedTestMetrics);
+            super.testEnded(test, endTime, namedTestMetrics);
         }
 
         private void postScreenshotOnFailure(TestIdentifier test) {
diff --git a/src/com/android/media/tests/CameraTestBase.java b/src/com/android/media/tests/CameraTestBase.java
index 94fe3ce..8714a22 100644
--- a/src/com/android/media/tests/CameraTestBase.java
+++ b/src/com/android/media/tests/CameraTestBase.java
@@ -273,26 +273,25 @@
 
         /**
          * Report the end of an individual camera test and delegate handling the collected metrics
-         * to subclasses.
-         * Do not override testEnded to manipulate the test metrics after each test. Instead,
-         * use handleMetricsOnTestEnded.
+         * to subclasses. Do not override testEnded to manipulate the test metrics after each test.
+         * Instead, use handleMetricsOnTestEnded.
          *
          * @param test identifies the test
          * @param testMetrics a {@link Map} of the metrics emitted
          */
         @Override
-        public void testEnded(TestIdentifier test, Map<String, String> testMetrics) {
-            super.testEnded(test, testMetrics);
+        public void testEnded(TestIdentifier test, long endTime, Map<String, String> testMetrics) {
+            super.testEnded(test, endTime, testMetrics);
             handleMetricsOnTestEnded(test, testMetrics);
             stopDumping(test);
-            mListener.testEnded(test, testMetrics);
+            mListener.testEnded(test, endTime, testMetrics);
         }
 
         @Override
-        public void testStarted(TestIdentifier test) {
-            super.testStarted(test);
+        public void testStarted(TestIdentifier test, long startTime) {
+            super.testStarted(test, startTime);
             startDumping(test);
-            mListener.testStarted(test);
+            mListener.testStarted(test, startTime);
         }
 
         @Override
