diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-10-17 16:36:48 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-10-17 16:36:48 +0200 |
commit | 82d9136a2166d7262c8b2eaba0d09a10f4750422 (patch) | |
tree | 04639ce412ba7c3c79f6290c00c4a9be203e00fd /node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeSkewTest.java | |
parent | 15c2736314ff5c94a695124ab271f1e046060029 (diff) |
Schedule node balancing acts
Diffstat (limited to 'node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeSkewTest.java')
-rw-r--r-- | node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeSkewTest.java | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeSkewTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeSkewTest.java new file mode 100644 index 00000000000..85ff4fe4264 --- /dev/null +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/NodeSkewTest.java @@ -0,0 +1,45 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.provision; + +import com.yahoo.config.provision.NodeResources; +import org.junit.Test; +import static org.junit.Assert.assertEquals; + +/** + * @author bratseth + */ +public class NodeSkewTest { + + private static final double d = 0.0001; + + @Test + public void testNodeSkewComputation() { + // No skew + assertEquals(0, Node.skew(r(6, 4, 2), r(6, 4, 2)), d); + assertEquals(0, Node.skew(r(6, 4, 2), r(0, 0, 0)), d); + assertEquals(0, Node.skew(r(6, 4, 2), r(3, 2, 1)), d); + + // Extremely skewed + assertEquals(0.2222, Node.skew(r(6, 4, 2), r(0, 4, 0)), d); + // A little less + assertEquals(0.1666, Node.skew(r(6, 4, 2), r(3, 4, 0)), d); + // A little less + assertEquals(0.0555, Node.skew(r(6, 4, 2), r(3, 4, 1)), d); + // The same, since being at half and full is equally skewed here + assertEquals(0.0555, Node.skew(r(6, 4, 2), r(3, 4, 2)), d); + // Almost not skewed + assertEquals(0.0062, Node.skew(r(6, 4, 2), r(5, 4, 2)), d); + + // Skew is scale free + assertEquals(0.0201, Node.skew(r( 6, 4, 2), r(1, 1, 1)), d); + // - all dimensions twice as large + assertEquals(0.0201, Node.skew(r(12, 8, 4), r(2, 2, 2)), d); + // - just one dimension twice as large + assertEquals(0.0201, Node.skew(r(12, 4, 2), r(2, 1, 1)), d); + } + + private NodeResources r(double vcpu, double memGb, double diskGb) { + return new NodeResources(vcpu, memGb, diskGb, 1); + } + +} |