diff options
author | jonmv <venstad@gmail.com> | 2023-10-24 13:56:54 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-10-24 13:56:54 +0200 |
commit | 613e6c34dd3eae9ff7ae67d4f1409672a859eafb (patch) | |
tree | 529bb3e913f98fd4656c0936b28c216bb3ee1b7f /config-provisioning | |
parent | 094c30a06a3e4441ee4dbeaa61de76fe1b6f54e4 (diff) |
Actually set arch from flag for admin nodes
Diffstat (limited to 'config-provisioning')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java | 9 | ||||
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java | 44 |
2 files changed, 49 insertions, 4 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java index c1296c6708e..a0c48200ff6 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java @@ -278,7 +278,7 @@ public class NodeResources { return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed, storageType, architecture, gpuResources); } - public NodeResources withUnspecifiedNumbersFrom(NodeResources fullySpecified) { + public NodeResources withUnspecifiedFieldsFrom(NodeResources fullySpecified) { var resources = this; if (resources.vcpuIsUnspecified()) resources = resources.withVcpu(fullySpecified.vcpu()); @@ -288,6 +288,13 @@ public class NodeResources { resources = resources.withDiskGb(fullySpecified.diskGb()); if (resources.bandwidthGbpsIsUnspecified()) resources = resources.withBandwidthGbps(fullySpecified.bandwidthGbps()); + if (resources.diskSpeed() == DiskSpeed.any) + resources = resources.with(fullySpecified.diskSpeed()); + if (resources.storageType() == StorageType.any) + resources = resources.with(fullySpecified.storageType()); + if (resources.architecture() == Architecture.any) + resources = resources.with(fullySpecified.architecture()); + assert fullySpecified.gpuResources() == GpuResources.zero : "Not handled"; return resources; } diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java index 27b659fe1c6..65ec070d744 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/NodeResourcesTest.java @@ -1,22 +1,27 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; +import com.yahoo.config.provision.NodeResources.Architecture; +import com.yahoo.config.provision.NodeResources.DiskSpeed; +import com.yahoo.config.provision.NodeResources.GpuResources; +import com.yahoo.config.provision.NodeResources.StorageType; import org.junit.jupiter.api.Test; import java.util.function.Supplier; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; /** * @author bratseth */ -public class NodeResourcesTest { +class NodeResourcesTest { @Test - public void testCost() { + void testCost() { assertEquals(5.408, new NodeResources(32, 128, 1200, 1).cost(), 0.0001); } @@ -81,7 +86,40 @@ public class NodeResourcesTest { } @Test - public void testJoiningResources() { + void testSpecifyFully() { + NodeResources empty = new NodeResources(0, 0, 0, 0).with(DiskSpeed.any); + + assertEquals(0, empty.withUnspecifiedFieldsFrom(empty).vcpu()); + assertEquals(3, empty.withUnspecifiedFieldsFrom(empty.withVcpu(3)).vcpu()); + assertEquals(2, empty.withVcpu(2).withUnspecifiedFieldsFrom(empty.withVcpu(3)).vcpu()); + + assertEquals(0, empty.withUnspecifiedFieldsFrom(empty).memoryGb()); + assertEquals(3, empty.withUnspecifiedFieldsFrom(empty.withMemoryGb(3)).memoryGb()); + assertEquals(2, empty.withMemoryGb(2).withUnspecifiedFieldsFrom(empty.withMemoryGb(3)).memoryGb()); + + assertEquals(0, empty.withUnspecifiedFieldsFrom(empty).diskGb()); + assertEquals(3, empty.withUnspecifiedFieldsFrom(empty.withDiskGb(3)).diskGb()); + assertEquals(2, empty.withDiskGb(2).withUnspecifiedFieldsFrom(empty.withDiskGb(3)).diskGb()); + + assertEquals(0, empty.withUnspecifiedFieldsFrom(empty).bandwidthGbps()); + assertEquals(3, empty.withUnspecifiedFieldsFrom(empty.withBandwidthGbps(3)).bandwidthGbps()); + assertEquals(2, empty.withBandwidthGbps(2).withUnspecifiedFieldsFrom(empty.withBandwidthGbps(3)).bandwidthGbps()); + + assertEquals(Architecture.any, empty.withUnspecifiedFieldsFrom(empty).architecture()); + assertEquals(Architecture.arm64, empty.withUnspecifiedFieldsFrom(empty.with(Architecture.arm64)).architecture()); + assertEquals(Architecture.x86_64, empty.with(Architecture.x86_64).withUnspecifiedFieldsFrom(empty.with(Architecture.arm64)).architecture()); + + assertEquals(DiskSpeed.any, empty.withUnspecifiedFieldsFrom(empty).diskSpeed()); + assertEquals(DiskSpeed.fast, empty.withUnspecifiedFieldsFrom(empty.with(DiskSpeed.fast)).diskSpeed()); + assertEquals(DiskSpeed.slow, empty.with(DiskSpeed.slow).withUnspecifiedFieldsFrom(empty.with(DiskSpeed.fast)).diskSpeed()); + + assertEquals(StorageType.any, empty.withUnspecifiedFieldsFrom(empty).storageType()); + assertEquals(StorageType.local, empty.withUnspecifiedFieldsFrom(empty.with(StorageType.local)).storageType()); + assertEquals(StorageType.remote, empty.with(StorageType.remote).withUnspecifiedFieldsFrom(empty.with(StorageType.local)).storageType()); + } + + @Test + void testJoiningResources() { var resources = new NodeResources(1, 2, 3, 1, NodeResources.DiskSpeed.fast, NodeResources.StorageType.local, |