Merge "Fix SynchedDeviceConfigTest flakiness" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0917a8fa80
@@ -16,9 +16,13 @@
|
|||||||
|
|
||||||
package com.android.server.wm;
|
package com.android.server.wm;
|
||||||
|
|
||||||
|
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
|
||||||
|
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
|
||||||
import android.app.ActivityThread;
|
import android.app.ActivityThread;
|
||||||
import android.platform.test.annotations.Presubmit;
|
import android.platform.test.annotations.Presubmit;
|
||||||
@@ -68,8 +72,6 @@ public class SynchedDeviceConfigTests {
|
|||||||
.addDeviceConfigEntry(/* key */ "key2", /* default */ false, /* enabled */ true)
|
.addDeviceConfigEntry(/* key */ "key2", /* default */ false, /* enabled */ true)
|
||||||
.addDeviceConfigEntry(/* key */ "key3", /* default */ true, /* enabled */ false)
|
.addDeviceConfigEntry(/* key */ "key3", /* default */ true, /* enabled */ false)
|
||||||
.addDeviceConfigEntry(/* key */ "key4", /* default */ false, /* enabled */ false)
|
.addDeviceConfigEntry(/* key */ "key4", /* default */ false, /* enabled */ false)
|
||||||
.addDeviceConfigEntry(/* key */ "key5", /* default */ true, /* enabled */ false)
|
|
||||||
.addDeviceConfigEntry(/* key */ "key6", /* default */ false, /* enabled */ false)
|
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,8 +86,6 @@ public class SynchedDeviceConfigTests {
|
|||||||
assertFlagValue(/* key */ "key2", /* expected */ false); // enabled
|
assertFlagValue(/* key */ "key2", /* expected */ false); // enabled
|
||||||
assertFlagValue(/* key */ "key3", /* expected */ false); // disabled
|
assertFlagValue(/* key */ "key3", /* expected */ false); // disabled
|
||||||
assertFlagValue(/* key */ "key4", /* expected */ false); // disabled
|
assertFlagValue(/* key */ "key4", /* expected */ false); // disabled
|
||||||
assertFlagValue(/* key */ "key5", /* expected */ false); // disabled
|
|
||||||
assertFlagValue(/* key */ "key6", /* expected */ false); // disabled
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -94,18 +94,17 @@ public class SynchedDeviceConfigTests {
|
|||||||
assertFlagEnabled(/* key */ "key2", /* expected */ true);
|
assertFlagEnabled(/* key */ "key2", /* expected */ true);
|
||||||
assertFlagEnabled(/* key */ "key3", /* expected */ false);
|
assertFlagEnabled(/* key */ "key3", /* expected */ false);
|
||||||
assertFlagEnabled(/* key */ "key4", /* expected */ false);
|
assertFlagEnabled(/* key */ "key4", /* expected */ false);
|
||||||
assertFlagEnabled(/* key */ "key5", /* expected */ false);
|
|
||||||
assertFlagEnabled(/* key */ "key6", /* expected */ false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWhenUpdated_onlyEnabledChanges() {
|
public void testWhenUpdated_onlyEnabledChanges() {
|
||||||
final CountDownLatch countDownLatch = new CountDownLatch(4);
|
final CountDownLatch countDownLatch = new CountDownLatch(4);
|
||||||
final DeviceConfig.OnPropertiesChangedListener countDownLatchListener =
|
spyOn(mDeviceConfig);
|
||||||
properties -> countDownLatch.countDown();
|
doAnswer(invocation -> {
|
||||||
DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_FOR_TEST, mExecutor,
|
invocation.callRealMethod();
|
||||||
countDownLatchListener);
|
countDownLatch.countDown();
|
||||||
|
return null;
|
||||||
|
}).when(mDeviceConfig).onPropertiesChanged(any());
|
||||||
try {
|
try {
|
||||||
// We update all the keys
|
// We update all the keys
|
||||||
updateProperty(/* key */ "key1", /* value */ false);
|
updateProperty(/* key */ "key1", /* value */ false);
|
||||||
@@ -123,58 +122,9 @@ public class SynchedDeviceConfigTests {
|
|||||||
assertFlagValue(/* key */ "key4", /* expected */ false); // disabled
|
assertFlagValue(/* key */ "key4", /* expected */ false); // disabled
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
Assert.fail(e.getMessage());
|
Assert.fail(e.getMessage());
|
||||||
} finally {
|
|
||||||
DeviceConfig.removeOnPropertiesChangedListener(countDownLatchListener);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWhenEnabled_updatesAreUsed() {
|
|
||||||
final CountDownLatch countDownLatchBefore = new CountDownLatch(2);
|
|
||||||
final CountDownLatch countDownLatchAfter = new CountDownLatch(2);
|
|
||||||
final DeviceConfig.OnPropertiesChangedListener countDownLatchBeforeListener =
|
|
||||||
properties -> countDownLatchBefore.countDown();
|
|
||||||
final DeviceConfig.OnPropertiesChangedListener countDownLatchAfterListener =
|
|
||||||
properties -> countDownLatchAfter.countDown();
|
|
||||||
DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_FOR_TEST, mExecutor,
|
|
||||||
countDownLatchBeforeListener);
|
|
||||||
|
|
||||||
try {
|
|
||||||
// We update disabled values
|
|
||||||
updateProperty(/* key */ "key3", /* value */ false);
|
|
||||||
updateProperty(/* key */ "key4", /* value */ true);
|
|
||||||
|
|
||||||
assertThat(countDownLatchBefore.await(
|
|
||||||
WAIT_FOR_PROPERTY_CHANGE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)).isTrue();
|
|
||||||
|
|
||||||
// We check they haven't been updated
|
|
||||||
assertFlagValue(/* key */ "key3", /* expected */ false);
|
|
||||||
assertFlagValue(/* key */ "key4", /* expected */ false);
|
|
||||||
|
|
||||||
|
|
||||||
DeviceConfig.removeOnPropertiesChangedListener(countDownLatchBeforeListener);
|
|
||||||
DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_FOR_TEST, mExecutor,
|
|
||||||
countDownLatchAfterListener);
|
|
||||||
|
|
||||||
// We update enabled flags
|
|
||||||
updateProperty(/* key */ "key1", /* value */ false);
|
|
||||||
updateProperty(/* key */ "key2", /* value */ true);
|
|
||||||
|
|
||||||
assertThat(countDownLatchAfter.await(
|
|
||||||
WAIT_FOR_PROPERTY_CHANGE_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)).isTrue();
|
|
||||||
|
|
||||||
// Value have been updated
|
|
||||||
assertFlagValue(/* key */ "key1", /* expected */ false);
|
|
||||||
assertFlagValue(/* key */ "key2", /* expected */ true);
|
|
||||||
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
Assert.fail(e.getMessage());
|
|
||||||
} finally {
|
|
||||||
DeviceConfig.removeOnPropertiesChangedListener(countDownLatchAfterListener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void assertFlagValue(String key, boolean expectedValue) {
|
private void assertFlagValue(String key, boolean expectedValue) {
|
||||||
assertEquals(/* message */"Flag " + key + " value is not " + expectedValue, /* expected */
|
assertEquals(/* message */"Flag " + key + " value is not " + expectedValue, /* expected */
|
||||||
expectedValue, /* actual */ mDeviceConfig.getFlagValue(key));
|
expectedValue, /* actual */ mDeviceConfig.getFlagValue(key));
|
||||||
|
|||||||
Reference in New Issue
Block a user