Fix testDeviceStateChanges fail. Request device_state_change will post to work thread and return.If dump statsd immediately,there is a race-condition,maybe get a null statsd report cause test fail. Bug: 243122614 Test: run cts -m CtsStatsdAtomHostTestCases -t android.cts.statsdatom.devicestate.DeviceStateStatsTests#testDeviceStateChanges Change-Id: Ifc6d907c1e487ea8d42156a00bbf1896f765b467 (cherry picked from commit 003c66e9e615a86c0bd1f5679faa32fcd384f689)
diff --git a/hostsidetests/statsdatom/src/android/cts/statsdatom/devicestate/DeviceStateStatsTests.java b/hostsidetests/statsdatom/src/android/cts/statsdatom/devicestate/DeviceStateStatsTests.java index 440bc94..200b718 100644 --- a/hostsidetests/statsdatom/src/android/cts/statsdatom/devicestate/DeviceStateStatsTests.java +++ b/hostsidetests/statsdatom/src/android/cts/statsdatom/devicestate/DeviceStateStatsTests.java
@@ -26,9 +26,11 @@ import com.android.os.AtomsProto; import com.android.os.StatsLog; import com.android.tradefed.build.IBuildInfo; +import com.android.tradefed.device.DeviceFoldableState; import com.android.tradefed.log.LogUtil.CLog; import com.android.tradefed.testtype.DeviceTestCase; import com.android.tradefed.testtype.IBuildReceiver; +import com.android.compatibility.common.util.PollingCheck; import java.util.Arrays; import java.util.List; @@ -99,6 +101,10 @@ private void testDeviceStateChange(int nextState) throws Exception { getDevice().executeShellCommand("cmd device_state state " + nextState); + // wait device state change complete. + PollingCheck.waitFor(2000, () -> nextState == getDevice() + .getCurrentFoldableState().getIdentifier()); + List<StatsLog.EventMetricData> data = ReportUtils.getEventMetricDataList(getDevice()); assertThat(data.size()).isEqualTo(1);