|
@@ -4,7 +4,7 @@
|
|
|
* you may not use this file except in compliance with the Elastic License.
|
|
|
*/
|
|
|
|
|
|
-package org.elasticsearch.xpack.autoscaling.decision;
|
|
|
+package org.elasticsearch.xpack.autoscaling.capacity;
|
|
|
|
|
|
import org.elasticsearch.Version;
|
|
|
import org.elasticsearch.cluster.ClusterInfo;
|
|
@@ -31,9 +31,9 @@ import java.util.stream.IntStream;
|
|
|
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
|
|
|
-public class AutoscalingDecisionServiceTests extends AutoscalingTestCase {
|
|
|
- public void testMultiplePoliciesFixedDecision() {
|
|
|
- AutoscalingDecisionService service = new AutoscalingDecisionService(Set.of(new FixedAutoscalingDeciderService()));
|
|
|
+public class AutoscalingDeciderResultServiceTests extends AutoscalingTestCase {
|
|
|
+ public void testMultiplePoliciesFixedCapacity() {
|
|
|
+ AutoscalingCalculateCapacityService service = new AutoscalingCalculateCapacityService(Set.of(new FixedAutoscalingDeciderService()));
|
|
|
Set<String> policyNames = IntStream.range(0, randomIntBetween(1, 10))
|
|
|
.mapToObj(i -> "test_ " + randomAlphaOfLength(10))
|
|
|
.collect(Collectors.toSet());
|
|
@@ -46,32 +46,31 @@ public class AutoscalingDecisionServiceTests extends AutoscalingTestCase {
|
|
|
ClusterState state = ClusterState.builder(ClusterName.DEFAULT)
|
|
|
.metadata(Metadata.builder().putCustom(AutoscalingMetadata.NAME, new AutoscalingMetadata(policies)))
|
|
|
.build();
|
|
|
- SortedMap<String, AutoscalingDecisions> decisions = service.decide(state, new ClusterInfo() {
|
|
|
+ SortedMap<String, AutoscalingDeciderResults> resultsMap = service.calculate(state, new ClusterInfo() {
|
|
|
});
|
|
|
- assertThat(decisions.keySet(), equalTo(policyNames));
|
|
|
- for (Map.Entry<String, AutoscalingDecisions> entry : decisions.entrySet()) {
|
|
|
- AutoscalingDecisions decision = entry.getValue();
|
|
|
- assertThat(decision.tier(), equalTo(entry.getKey()));
|
|
|
- SortedMap<String, AutoscalingDeciderConfiguration> deciders = policies.get(decision.tier()).policy().deciders();
|
|
|
+ assertThat(resultsMap.keySet(), equalTo(policyNames));
|
|
|
+ for (Map.Entry<String, AutoscalingDeciderResults> entry : resultsMap.entrySet()) {
|
|
|
+ AutoscalingDeciderResults results = entry.getValue();
|
|
|
+ SortedMap<String, AutoscalingDeciderConfiguration> deciders = policies.get(entry.getKey()).policy().deciders();
|
|
|
assertThat(deciders.size(), equalTo(1));
|
|
|
FixedAutoscalingDeciderConfiguration configuration = (FixedAutoscalingDeciderConfiguration) deciders.values().iterator().next();
|
|
|
- AutoscalingCapacity requiredCapacity = calculateFixedDecisionCapacity(configuration);
|
|
|
- assertThat(decision.requiredCapacity(), equalTo(requiredCapacity));
|
|
|
- assertThat(decision.decisions().size(), equalTo(1));
|
|
|
- AutoscalingDecision deciderDecision = decision.decisions().get(deciders.firstKey());
|
|
|
- assertNotNull(deciderDecision);
|
|
|
- assertThat(deciderDecision.requiredCapacity(), equalTo(requiredCapacity));
|
|
|
+ AutoscalingCapacity requiredCapacity = calculateFixedDeciderCapacity(configuration);
|
|
|
+ assertThat(results.requiredCapacity(), equalTo(requiredCapacity));
|
|
|
+ assertThat(results.results().size(), equalTo(1));
|
|
|
+ AutoscalingDeciderResult deciderResult = results.results().get(deciders.firstKey());
|
|
|
+ assertNotNull(deciderResult);
|
|
|
+ assertThat(deciderResult.requiredCapacity(), equalTo(requiredCapacity));
|
|
|
ByteSizeValue storage = configuration.storage();
|
|
|
ByteSizeValue memory = configuration.memory();
|
|
|
int nodes = configuration.nodes();
|
|
|
- assertThat(deciderDecision.reason(), equalTo(new FixedAutoscalingDeciderService.FixedReason(storage, memory, nodes)));
|
|
|
+ assertThat(deciderResult.reason(), equalTo(new FixedAutoscalingDeciderService.FixedReason(storage, memory, nodes)));
|
|
|
assertThat(
|
|
|
- deciderDecision.reason().summary(),
|
|
|
+ deciderResult.reason().summary(),
|
|
|
equalTo("fixed storage [" + storage + "] memory [" + memory + "] nodes [" + nodes + "]")
|
|
|
);
|
|
|
|
|
|
// there is no nodes in any tier.
|
|
|
- assertThat(decision.currentCapacity(), equalTo(AutoscalingCapacity.ZERO));
|
|
|
+ assertThat(results.currentCapacity(), equalTo(AutoscalingCapacity.ZERO));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -88,7 +87,7 @@ public class AutoscalingDecisionServiceTests extends AutoscalingTestCase {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- private AutoscalingCapacity calculateFixedDecisionCapacity(FixedAutoscalingDeciderConfiguration configuration) {
|
|
|
+ private AutoscalingCapacity calculateFixedDeciderCapacity(FixedAutoscalingDeciderConfiguration configuration) {
|
|
|
ByteSizeValue totalStorage = configuration.storage() != null
|
|
|
? new ByteSizeValue(configuration.storage().getBytes() * configuration.nodes())
|
|
|
: null;
|
|
@@ -110,8 +109,8 @@ public class AutoscalingDecisionServiceTests extends AutoscalingTestCase {
|
|
|
String tier = randomAlphaOfLength(5);
|
|
|
ClusterState state = ClusterState.builder(ClusterName.DEFAULT).build();
|
|
|
ClusterInfo info = ClusterInfo.EMPTY;
|
|
|
- AutoscalingDecisionService.DecisionAutoscalingDeciderContext context =
|
|
|
- new AutoscalingDecisionService.DecisionAutoscalingDeciderContext(tier, state, info);
|
|
|
+ AutoscalingCalculateCapacityService.DefaultAutoscalingDeciderContext context =
|
|
|
+ new AutoscalingCalculateCapacityService.DefaultAutoscalingDeciderContext(tier, state, info);
|
|
|
|
|
|
assertSame(state, context.state());
|
|
|
// there is no nodes in any tier.
|
|
@@ -121,7 +120,7 @@ public class AutoscalingDecisionServiceTests extends AutoscalingTestCase {
|
|
|
state = ClusterState.builder(ClusterName.DEFAULT)
|
|
|
.nodes(DiscoveryNodes.builder().add(new DiscoveryNode("nodeId", buildNewFakeTransportAddress(), Version.CURRENT)))
|
|
|
.build();
|
|
|
- context = new AutoscalingDecisionService.DecisionAutoscalingDeciderContext(tier, state, info);
|
|
|
+ context = new AutoscalingCalculateCapacityService.DefaultAutoscalingDeciderContext(tier, state, info);
|
|
|
|
|
|
assertNull(context.currentCapacity());
|
|
|
|
|
@@ -144,7 +143,7 @@ public class AutoscalingDecisionServiceTests extends AutoscalingTestCase {
|
|
|
}
|
|
|
state = ClusterState.builder(ClusterName.DEFAULT).nodes(nodes).build();
|
|
|
info = new ClusterInfo(leastUsages.build(), mostUsages.build(), null, null, null);
|
|
|
- context = new AutoscalingDecisionService.DecisionAutoscalingDeciderContext(tier, state, info);
|
|
|
+ context = new AutoscalingCalculateCapacityService.DefaultAutoscalingDeciderContext(tier, state, info);
|
|
|
|
|
|
AutoscalingCapacity capacity = context.currentCapacity();
|
|
|
assertThat(capacity.node().storage(), equalTo(new ByteSizeValue(maxTotal)));
|