|
|
|
|
@ -127,20 +127,24 @@ class ConfigurationPropertySourcesTests {
@@ -127,20 +127,24 @@ class ConfigurationPropertySourcesTests {
|
|
|
|
|
|
|
|
|
|
@Test // gh-20625
|
|
|
|
|
void environmentPropertyAccessWhenImmutableShouldBePerformant() { |
|
|
|
|
testPropertySourcePerformance(true, 1000); |
|
|
|
|
long baseline = testPropertySourcePerformance(false); |
|
|
|
|
long immutable = testPropertySourcePerformance(true); |
|
|
|
|
assertThat(immutable).isLessThan(baseline / 2); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test // gh-20625
|
|
|
|
|
void environmentPropertyAccessWhenMutableWithCacheShouldBePerformant() { |
|
|
|
|
StandardEnvironment environment = createPerformanceTestEnvironment(false); |
|
|
|
|
long uncached = testPropertySourcePerformance(environment); |
|
|
|
|
ConfigurationPropertyCaching.get(environment).enable(); |
|
|
|
|
testPropertySourcePerformance(environment, 1000); |
|
|
|
|
long cached = testPropertySourcePerformance(environment); |
|
|
|
|
assertThat(cached).isLessThan(uncached / 2); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test // gh-20625
|
|
|
|
|
@Disabled("for manual testing") |
|
|
|
|
void environmentPropertyAccessWhenMutableShouldBeTolerable() { |
|
|
|
|
testPropertySourcePerformance(false, 5000); |
|
|
|
|
assertThat(testPropertySourcePerformance(false)).isLessThan(5000); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test // gh-21416
|
|
|
|
|
@ -158,9 +162,9 @@ class ConfigurationPropertySourcesTests {
@@ -158,9 +162,9 @@ class ConfigurationPropertySourcesTests {
|
|
|
|
|
assertThat(total).isLessThan(1000); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void testPropertySourcePerformance(boolean immutable, int maxTime) { |
|
|
|
|
private long testPropertySourcePerformance(boolean immutable) { |
|
|
|
|
StandardEnvironment environment = createPerformanceTestEnvironment(immutable); |
|
|
|
|
testPropertySourcePerformance(environment, maxTime); |
|
|
|
|
return testPropertySourcePerformance(environment); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private StandardEnvironment createPerformanceTestEnvironment(boolean immutable) { |
|
|
|
|
@ -173,14 +177,14 @@ class ConfigurationPropertySourcesTests {
@@ -173,14 +177,14 @@ class ConfigurationPropertySourcesTests {
|
|
|
|
|
return environment; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void testPropertySourcePerformance(StandardEnvironment environment, int maxTime) { |
|
|
|
|
private long testPropertySourcePerformance(StandardEnvironment environment) { |
|
|
|
|
long start = System.nanoTime(); |
|
|
|
|
for (int i = 0; i < 1000; i++) { |
|
|
|
|
environment.getProperty("missing" + i); |
|
|
|
|
} |
|
|
|
|
long total = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start); |
|
|
|
|
assertThat(environment.getProperty("test-10-property-80")).isEqualTo("test-10-property-80-value"); |
|
|
|
|
assertThat(total).isLessThan(maxTime); |
|
|
|
|
return total; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static class TestPropertySource extends MapPropertySource implements OriginLookup<String> { |
|
|
|
|
|