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);