use of com.datastax.oss.driver.internal.core.specex.NoSpeculativeExecutionPolicy in project java-driver by datastax.
the class ReflectionTest method should_build_policies_per_profile.
@Test
public void should_build_policies_per_profile() {
String configSource = "advanced.speculative-execution-policy {\n" + " class = ConstantSpeculativeExecutionPolicy\n" + " max-executions = 3\n" + " delay = 100 milliseconds\n" + "}\n" + "profiles {\n" + // Inherits from default profile
" profile1 {}\n" + // Inherits but changes one option
" profile2 { \n" + " advanced.speculative-execution-policy.max-executions = 2" + " }\n" + // Same as previous profile, should share the same policy instance
" profile3 { \n" + " advanced.speculative-execution-policy.max-executions = 2" + " }\n" + // Completely overrides default profile
" profile4 { \n" + " advanced.speculative-execution-policy.class = NoSpeculativeExecutionPolicy\n" + " }\n" + "}\n";
InternalDriverContext context = mock(InternalDriverContext.class);
TypesafeDriverConfig config = new TypesafeDriverConfig(ConfigFactory.parseString(configSource));
when(context.getConfig()).thenReturn(config);
Map<String, SpeculativeExecutionPolicy> policies = Reflection.buildFromConfigProfiles(context, DefaultDriverOption.SPECULATIVE_EXECUTION_POLICY_CLASS, DefaultDriverOption.SPECULATIVE_EXECUTION_POLICY, SpeculativeExecutionPolicy.class, "com.datastax.oss.driver.internal.core.specex");
assertThat(policies).hasSize(5);
SpeculativeExecutionPolicy defaultPolicy = policies.get(DriverExecutionProfile.DEFAULT_NAME);
SpeculativeExecutionPolicy policy1 = policies.get("profile1");
SpeculativeExecutionPolicy policy2 = policies.get("profile2");
SpeculativeExecutionPolicy policy3 = policies.get("profile3");
SpeculativeExecutionPolicy policy4 = policies.get("profile4");
assertThat(defaultPolicy).isInstanceOf(ConstantSpeculativeExecutionPolicy.class).isSameAs(policy1);
assertThat(policy2).isInstanceOf(ConstantSpeculativeExecutionPolicy.class).isSameAs(policy3);
assertThat(policy4).isInstanceOf(NoSpeculativeExecutionPolicy.class);
}
Aggregations