diff options
Diffstat (limited to 'node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java')
-rw-r--r-- | node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java index a5b60ae6e16..49bb51c1d79 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTester.java @@ -47,28 +47,28 @@ class AutoscalingTester { /** Creates an autoscaling tester with a single host type ready */ public AutoscalingTester(NodeResources hostResources) { - this(new Zone(Environment.prod, RegionName.from("us-east")), List.of(new Flavor("hostFlavor", hostResources)), null); - provisioningTester.makeReadyNodes(20, "hostFlavor", NodeType.host, 8); + this(new Zone(Environment.prod, RegionName.from("us-east")), null, null, asConfig(hostResources)); + provisioningTester.makeReadyNodes(20, "hostFlavor", NodeType.host, 8); // "hostFlavor" generated by asConfig provisioningTester.deployZoneApp(); } public AutoscalingTester(Zone zone, List<Flavor> flavors) { this(zone, flavors, - new InMemoryFlagSource().withBooleanFlag(Flags.ENABLE_DYNAMIC_PROVISIONING.id(), true)); + new InMemoryFlagSource().withBooleanFlag(Flags.ENABLE_DYNAMIC_PROVISIONING.id(), true), + asConfig(flavors)); } - private AutoscalingTester(Zone zone, List<Flavor> flavors, FlagSource flagSource) { + private AutoscalingTester(Zone zone, List<Flavor> flavors, FlagSource flagSource, FlavorsConfig flavorsConfig) { provisioningTester = new ProvisioningTester.Builder().zone(zone) - .flavors(flavors) - .resourcesCalculator(new MockHostResourcesCalculator(zone)) + .flavorsConfig(flavorsConfig) .hostProvisioner(new MockHostProvisioner(flavors)) .flagSource(flagSource) .build(); hostResourcesCalculator = new MockHostResourcesCalculator(zone); db = new NodeMetricsDb(); - autoscaler = new Autoscaler(db, nodeRepository()); + autoscaler = new Autoscaler(hostResourcesCalculator, db, nodeRepository()); } public ApplicationId applicationId(String applicationName) { @@ -196,6 +196,31 @@ class AutoscalingTester { public NodeMetricsDb nodeMetricsDb() { return db; } + private static FlavorsConfig asConfig(NodeResources hostResources) { + FlavorsConfig.Builder b = new FlavorsConfig.Builder(); + b.flavor(asFlavorConfig("hostFlavor", hostResources)); + return b.build(); + } + + private static FlavorsConfig asConfig(List<Flavor> flavors) { + FlavorsConfig.Builder b = new FlavorsConfig.Builder(); + for (Flavor flavor : flavors) + b.flavor(asFlavorConfig(flavor.name(), flavor.resources())); + return b.build(); + } + + private static FlavorsConfig.Flavor.Builder asFlavorConfig(String flavorName, NodeResources resources) { + FlavorsConfig.Flavor.Builder flavor = new FlavorsConfig.Flavor.Builder(); + flavor.name(flavorName); + flavor.minCpuCores(resources.vcpu()); + flavor.minMainMemoryAvailableGb(resources.memoryGb()); + flavor.minDiskAvailableGb(resources.diskGb()); + flavor.bandwidth(resources.bandwidthGbps() * 1000); + flavor.fastDisk(resources.diskSpeed().compatibleWith(NodeResources.DiskSpeed.fast)); + flavor.remoteStorage(resources.storageType().compatibleWith(NodeResources.StorageType.remote)); + return flavor; + } + private static class MockHostResourcesCalculator implements HostResourcesCalculator { private final Zone zone; @@ -205,7 +230,7 @@ class AutoscalingTester { } @Override - public NodeResources realResourcesOf(Node node, NodeRepository nodeRepository) { + public NodeResources realResourcesOf(Node node) { if (zone.cloud().value().equals("aws")) return node.flavor().resources().withMemoryGb(node.flavor().resources().memoryGb() - 3); else |