diff options
Diffstat (limited to 'node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java')
-rw-r--r-- | node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java | 149 |
1 files changed, 66 insertions, 83 deletions
diff --git a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java index 16e72521853..d819a9dd269 100644 --- a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java +++ b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifierTest.java @@ -1,115 +1,98 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.node.verification.spec; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.yahoo.vespa.hosted.node.verification.commons.noderepo.NodeRepoInfoRetriever; -import com.yahoo.vespa.hosted.node.verification.commons.noderepo.NodeRepoJsonModel; -import com.yahoo.vespa.hosted.node.verification.commons.report.SpecVerificationReport; +import com.yahoo.vespa.hosted.node.verification.Main; import com.yahoo.vespa.hosted.node.verification.mock.MockCommandExecutor; -import com.yahoo.vespa.hosted.node.verification.spec.retrievers.HardwareInfo; -import org.junit.Before; import org.junit.Test; -import java.io.File; -import java.net.URL; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; - import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; /** - * @author sgrostad - * @author olaaun + * @author freva */ - public class SpecVerifierTest { - private MockCommandExecutor mockCommandExecutor; - private static final String ABSOLUTE_PATH = Paths.get(".").toAbsolutePath().normalize().toString(); private static final String RESOURCE_PATH = "src/test/java/com/yahoo/vespa/hosted/node/verification/spec/resources"; - private static final String URL_RESOURCE_PATH = "file://" + ABSOLUTE_PATH + "/" + RESOURCE_PATH; - private static final String NODE_REPO_PATH = "src/test/java/com/yahoo/vespa/hosted/node/verification/spec/resources/nodeInfoTest.json"; private static final String CPU_INFO_PATH = RESOURCE_PATH + "/cpuinfoTest"; private static final String MEMORY_INFO_PATH = RESOURCE_PATH + "/meminfoTest"; private static final String FAST_DISK_TYPE_INFO_PATH = RESOURCE_PATH + "/DiskTypeFastDisk"; - private static final String NON_FAST_DISK_TYPE_INFO_PATH = RESOURCE_PATH + "/DiskTypeNonFastDisk"; private static final String DISK_SIZE_INFO_PATH = RESOURCE_PATH + "/filesize"; private static final String NET_INTERFACE_INFO_PATH = RESOURCE_PATH + "/ifconfig"; private static final String NET_INTERFACE_SPEED_INFO_PATH = RESOURCE_PATH + "/eth0"; private static final String PING_RESPONSE = RESOURCE_PATH + "/validpingresponse"; - private static final String INVALID_PING_RESPONSE = RESOURCE_PATH + "/pingresponse-all-packets-lost"; - private static final double DELTA = 0.1; - List<URL> nodeInfoUrls; + private final MockCommandExecutor commandExecutor = new MockCommandExecutor(); - @Before - public void setup() { - mockCommandExecutor = new MockCommandExecutor(); - nodeInfoUrls = new ArrayList<>(); - } + @Test + public void spec_verification_with_failures() throws Exception { + commandExecutor.addCommand("cat " + CPU_INFO_PATH); + commandExecutor.addCommand("cat " + MEMORY_INFO_PATH); + commandExecutor.addCommand("cat " + FAST_DISK_TYPE_INFO_PATH); + commandExecutor.addCommand("cat " + DISK_SIZE_INFO_PATH); + commandExecutor.addCommand("cat " + NET_INTERFACE_INFO_PATH); + commandExecutor.addCommand("cat " + NET_INTERFACE_SPEED_INFO_PATH); + commandExecutor.addCommand("cat " + PING_RESPONSE); + String result = Main.execute(new String[] { + "specification", + "-d", "250", + "-m", "64", + "-c", "1.5", + "-s", "true", + "-i", "10.11.12.13,::1234" + }, commandExecutor); - @Test - public void verifySpec_equal_nodeRepoInfo_and_hardware_should_return_true() throws Exception { - nodeInfoUrls.add(new URL(URL_RESOURCE_PATH + "/nodeRepo.json")); - mockCommandExecutor.addCommand("cat " + CPU_INFO_PATH); - mockCommandExecutor.addCommand("cat " + MEMORY_INFO_PATH); - mockCommandExecutor.addCommand("cat " + FAST_DISK_TYPE_INFO_PATH); - mockCommandExecutor.addCommand("cat " + DISK_SIZE_INFO_PATH); - mockCommandExecutor.addCommand("cat " + NET_INTERFACE_INFO_PATH); - mockCommandExecutor.addCommand("cat " + NET_INTERFACE_SPEED_INFO_PATH); - mockCommandExecutor.addCommand("cat " + PING_RESPONSE); - assertTrue(SpecVerifier.verifySpec(mockCommandExecutor, nodeInfoUrls)); + assertEquals( + "{\"specVerificationReport\":{\"" + + "actualMemoryAvailable\":4.042128,\"" + + "actualDiskSpaceAvailable\":1760.0,\"" + + "actualcpuCores\":4,\"" + + "faultyIpAddresses\":[\"10.11.12.13\",\"0:0:0:0:0:0:0:1234\"]}}", result); } @Test - public void verifySpec_unequal_nodeRepoInfo_and_hardware_should_return_false() throws Exception { - nodeInfoUrls.add(new URL(URL_RESOURCE_PATH + "/nodeRepo.json")); - mockCommandExecutor.addCommand("cat " + CPU_INFO_PATH); - mockCommandExecutor.addCommand("cat " + MEMORY_INFO_PATH); - mockCommandExecutor.addCommand("cat " + NON_FAST_DISK_TYPE_INFO_PATH); - mockCommandExecutor.addCommand("cat " + DISK_SIZE_INFO_PATH); - mockCommandExecutor.addCommand("cat " + NET_INTERFACE_INFO_PATH + "NoIpv6"); - mockCommandExecutor.addCommand("cat " + NET_INTERFACE_SPEED_INFO_PATH); - mockCommandExecutor.addCommand("cat " + INVALID_PING_RESPONSE); - assertFalse(SpecVerifier.verifySpec(mockCommandExecutor, nodeInfoUrls)); - } + public void benchmark_with_no_failures() throws Exception { + commandExecutor.addCommand("cat " + CPU_INFO_PATH); + commandExecutor.addCommand("cat " + MEMORY_INFO_PATH); + commandExecutor.addCommand("cat " + FAST_DISK_TYPE_INFO_PATH); + commandExecutor.addCommand("cat " + DISK_SIZE_INFO_PATH); + commandExecutor.addCommand("cat " + NET_INTERFACE_INFO_PATH); + commandExecutor.addCommand("cat " + NET_INTERFACE_SPEED_INFO_PATH); + commandExecutor.addCommand("cat " + PING_RESPONSE); - @Test - public void makeVerificationSpecReport_should_return_false_interface_speed_and_ipv6_connection() throws Exception { - HardwareInfo actualHardware = new HardwareInfo(); - actualHardware.setMinCpuCores(24); - actualHardware.setMinMainMemoryAvailableGb(24); - actualHardware.setInterfaceSpeedMbs(100); //this is wrong - actualHardware.setMinDiskAvailableGb(500); - actualHardware.setIpv4Interface(true); - actualHardware.setIpv6Interface(true); - actualHardware.setIpv6Connection(true); - actualHardware.setDiskType(HardwareInfo.DiskType.SLOW); - nodeInfoUrls.add(new File(NODE_REPO_PATH).toURI().toURL()); - NodeRepoJsonModel nodeRepoJsonModel = NodeRepoInfoRetriever.retrieve(nodeInfoUrls); - SpecVerificationReport verificationSpecVerificationReport = SpecVerifier.makeVerificationReport(actualHardware, nodeRepoJsonModel); - String expectedJson = "{\"actualInterfaceSpeed\":100.0}"; - ObjectMapper om = new ObjectMapper(); - String actualJson = om.writeValueAsString(verificationSpecVerificationReport); - assertEquals(expectedJson, actualJson); + String result = Main.execute(new String[] { + "specification", + "-d", "1760", + "-m", "4", + "-c", "4", + "-s", "true", + }, commandExecutor); + + assertEquals("null", result); } @Test - public void getNodeRepositoryJSON_should_return_valid_nodeRepoJSONModel() throws Exception { - nodeInfoUrls.add(new URL(URL_RESOURCE_PATH + "/nodeRepo.json")); - NodeRepoJsonModel actualNodeRepoJsonModel = SpecVerifier.getNodeRepositoryJSON(nodeInfoUrls); - double expectedMinCpuCores = 4D; - double expectedMinMainMemoryAvailableGb = 4.04D; - double expectedMinDiskAvailableGb = 1759.84; - boolean expectedFastDisk = true; - assertEquals(expectedMinCpuCores, actualNodeRepoJsonModel.getMinCpuCores(), DELTA); - assertEquals(expectedMinMainMemoryAvailableGb, actualNodeRepoJsonModel.getMinMainMemoryAvailableGb(), DELTA); - assertEquals(expectedMinDiskAvailableGb, actualNodeRepoJsonModel.getMinDiskAvailableGb(), DELTA); - assertEquals(expectedFastDisk, actualNodeRepoJsonModel.isFastDisk()); - } + public void preserve_previous_benchmark_result() throws Exception { + commandExecutor.addCommand("cat " + CPU_INFO_PATH); + commandExecutor.addCommand("cat " + MEMORY_INFO_PATH); + commandExecutor.addCommand("cat " + FAST_DISK_TYPE_INFO_PATH); + commandExecutor.addCommand("cat " + DISK_SIZE_INFO_PATH); + commandExecutor.addCommand("cat " + NET_INTERFACE_INFO_PATH); + commandExecutor.addCommand("cat " + NET_INTERFACE_SPEED_INFO_PATH); + commandExecutor.addCommand("cat " + PING_RESPONSE); + final String previousResult = "{\"specVerificationReport\":{\"actualMemoryAvailable\":4.042128}," + + "\"benchmarkReport\":{\"diskSpeedMbs\":49.0}}"; + + String result = Main.execute(new String[] { + "specification", + "-d", "1760", + "-m", "4", + "-c", "4", + "-s", "true", + "-h", previousResult + }, commandExecutor); + + assertEquals("{\"benchmarkReport\":{\"diskSpeedMbs\":49.0}}", result); + } } |