|
30 | 30 | import org.apache.polaris.core.PolarisCallContext; |
31 | 31 | import org.apache.polaris.core.PolarisDefaultDiagServiceImpl; |
32 | 32 | import org.apache.polaris.core.PolarisDiagnostics; |
| 33 | +import org.apache.polaris.core.config.FeatureConfiguration; |
33 | 34 | import org.apache.polaris.core.config.PolarisConfigurationStore; |
34 | 35 | import org.apache.polaris.core.context.CallContext; |
35 | 36 | import org.apache.polaris.core.context.RealmContext; |
| 37 | +import org.apache.polaris.core.entity.CatalogEntity; |
36 | 38 | import org.apache.polaris.core.persistence.MetaStoreManagerFactory; |
37 | 39 | import org.apache.polaris.service.config.DefaultConfigurationStore; |
38 | 40 | import org.apache.polaris.service.config.FeaturesConfiguration; |
39 | 41 | import org.apache.polaris.service.persistence.InMemoryPolarisMetaStoreManagerFactory; |
| 42 | +import org.assertj.core.api.Assertions; |
40 | 43 | import org.junit.jupiter.api.BeforeEach; |
41 | 44 | import org.junit.jupiter.api.Test; |
42 | 45 | import org.junit.jupiter.api.TestInfo; |
@@ -230,4 +233,46 @@ public void testInjectedFeaturesConfiguration() { |
230 | 233 | assertThat(featuresConfiguration.realmOverrides().get(realmOne).overrides()) |
231 | 234 | .containsKey(falseByDefaultKey); |
232 | 235 | } |
| 236 | + |
| 237 | + @Test |
| 238 | + public void testRegisterAndUseFeatureConfigurations() { |
| 239 | + String prefix = "testRegisterAndUseFeatureConfigurations"; |
| 240 | + |
| 241 | + FeatureConfiguration<Boolean> safeConfig = |
| 242 | + FeatureConfiguration.<Boolean>builder() |
| 243 | + .key(String.format("%s_safe", prefix)) |
| 244 | + .catalogConfig(String.format("polaris.config.%s.safe", prefix)) |
| 245 | + .defaultValue(true) |
| 246 | + .description(prefix) |
| 247 | + .buildFeatureConfiguration(); |
| 248 | + |
| 249 | + FeatureConfiguration<Boolean> unsafeConfig = |
| 250 | + FeatureConfiguration.<Boolean>builder() |
| 251 | + .key(String.format("%s_unsafe", prefix)) |
| 252 | + .catalogConfigUnsafe(String.format("%s.unsafe", prefix)) |
| 253 | + .defaultValue(true) |
| 254 | + .description(prefix) |
| 255 | + .buildFeatureConfiguration(); |
| 256 | + |
| 257 | + FeatureConfiguration<Boolean> bothConfig = |
| 258 | + FeatureConfiguration.<Boolean>builder() |
| 259 | + .key(String.format("%s_both", prefix)) |
| 260 | + .catalogConfig(String.format("polaris.config.%s.both", prefix)) |
| 261 | + .catalogConfigUnsafe(String.format("%s.both", prefix)) |
| 262 | + .defaultValue(true) |
| 263 | + .description(prefix) |
| 264 | + .buildFeatureConfiguration(); |
| 265 | + |
| 266 | + CatalogEntity catalog = new CatalogEntity.Builder().build(); |
| 267 | + |
| 268 | + Assertions.assertThat(configurationStore.getConfiguration(polarisContext, catalog, safeConfig)) |
| 269 | + .isTrue(); |
| 270 | + |
| 271 | + Assertions.assertThat( |
| 272 | + configurationStore.getConfiguration(polarisContext, catalog, unsafeConfig)) |
| 273 | + .isTrue(); |
| 274 | + |
| 275 | + Assertions.assertThat(configurationStore.getConfiguration(polarisContext, catalog, bothConfig)) |
| 276 | + .isTrue(); |
| 277 | + } |
233 | 278 | } |
0 commit comments