From ebeecbd35845d2ae6422b8196a94b1c1987602c2 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Tue, 11 Jul 2023 14:51:40 +0200 Subject: Use correct certificate for hosted --- .../yahoo/vespa/testrunner/VespaCliTestRunner.java | 10 ++- .../vespa/testrunner/VespaCliTestRunnerTest.java | 76 ++++++++++++++++------ 2 files changed, 63 insertions(+), 23 deletions(-) (limited to 'vespa-osgi-testrunner/src') diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaCliTestRunner.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaCliTestRunner.java index 5816cd54526..9bb0e7ff955 100644 --- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaCliTestRunner.java +++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/VespaCliTestRunner.java @@ -6,6 +6,7 @@ import com.yahoo.component.annotation.Inject; import com.yahoo.slime.Cursor; import com.yahoo.slime.Slime; import com.yahoo.slime.SlimeUtils; +import com.yahoo.vespa.defaults.Defaults; import java.io.BufferedReader; import java.io.IOException; @@ -124,11 +125,16 @@ public class VespaCliTestRunner implements TestRunner { builder.environment().put("VESPA_CLI_HOME", ensureDirectoryForVespaCli("cli-home").toString()); builder.environment().put("VESPA_CLI_CACHE_DIR", ensureDirectoryForVespaCli("cli-cache").toString()); builder.environment().put("VESPA_CLI_ENDPOINTS", toEndpointsConfig(config)); - builder.environment().put("VESPA_CLI_DATA_PLANE_KEY_FILE", artifactsPath.resolve("key").toAbsolutePath().toString()); - builder.environment().put("VESPA_CLI_DATA_PLANE_CERT_FILE", artifactsPath.resolve("cert").toAbsolutePath().toString()); + Path certRoot = certificateRoot(config); + builder.environment().put("VESPA_CLI_DATA_PLANE_KEY_FILE", certRoot.resolve("key").toAbsolutePath().toString()); + builder.environment().put("VESPA_CLI_DATA_PLANE_CERT_FILE", certRoot.resolve("cert").toAbsolutePath().toString()); return builder; } + private Path certificateRoot(TestConfig config) { + return config.system().isPublic() ? artifactsPath : Path.of(Defaults.getDefaults().underVespaHome("var/vespa/sia")); + } + private static String toSuiteDirectoryName(Suite suite) { return switch (suite) { case SYSTEM_TEST -> "system-test"; diff --git a/vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/VespaCliTestRunnerTest.java b/vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/VespaCliTestRunnerTest.java index 357106da646..fcd0553566f 100644 --- a/vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/VespaCliTestRunnerTest.java +++ b/vespa-osgi-testrunner/src/test/java/com/yahoo/vespa/testrunner/VespaCliTestRunnerTest.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.testrunner; import ai.vespa.hosted.api.TestConfig; +import com.yahoo.config.provision.SystemName; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -19,28 +20,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue; */ class VespaCliTestRunnerTest { - static final TestConfig testConfig = TestConfig.fromJson(("{\n" + - " \"application\": \"t:a:i\",\n" + - " \"zone\": \"dev.aws-us-east-1c\",\n" + - " \"system\": \"publiccd\",\n" + - " \"isCI\": true,\n" + - " \"zoneEndpoints\": {\n" + - " \"dev.aws-us-east-1c\": {\n" + - " \"default\": \"https://dev.endpoint:443/\"\n" + - " },\n" + - " \"prod.aws-us-east-1a\": {\n" + - " \"default\": \"https://prod.endpoint:443/\"\n" + - " }\n" + - " },\n" + - " \"clusters\": {\n" + - " \"prod.aws-us-east-1c\": [\n" + - " \"documents\"\n" + - " ]\n" + - " }\n" + - "}\n").getBytes(StandardCharsets.UTF_8)); - @Test - void testSetup() throws IOException { + void cloud() throws IOException { Path temp = Files.createTempDirectory("vespa-cli-test-runner-test-"); temp.toFile().deleteOnExit(); Path tests = Files.createDirectory(temp.resolve("tests")); @@ -48,6 +29,7 @@ class VespaCliTestRunnerTest { VespaCliTestRunner runner = new VespaCliTestRunner(artifacts, tests); Path systemTests = Files.createDirectory(tests.resolve("system-test")); + TestConfig testConfig = testConfig(SystemName.PublicCd); assertNull(runner.testRunProcessBuilder(TestRunner.Suite.STAGING_TEST, testConfig)); ProcessBuilder builder = runner.testRunProcessBuilder(TestRunner.Suite.SYSTEM_TEST, testConfig); @@ -68,4 +50,56 @@ class VespaCliTestRunnerTest { builder.environment().get("VESPA_CLI_DATA_PLANE_CERT_FILE")); } + @Test + void hosted() throws IOException { + Path temp = Files.createTempDirectory("vespa-cli-test-runner-test-"); + temp.toFile().deleteOnExit(); + Path tests = Files.createDirectory(temp.resolve("tests")); + Path artifacts = Files.createDirectory(temp.resolve("artifacts")); + VespaCliTestRunner runner = new VespaCliTestRunner(artifacts, tests); + + Path systemTests = Files.createDirectory(tests.resolve("system-test")); + TestConfig testConfig = testConfig(SystemName.cd); + assertNull(runner.testRunProcessBuilder(TestRunner.Suite.STAGING_TEST, testConfig)); + + ProcessBuilder builder = runner.testRunProcessBuilder(TestRunner.Suite.SYSTEM_TEST, testConfig); + assertEquals(List.of("vespa", "test", systemTests.toAbsolutePath().toString(), + "--application", "t.a.i", + "--zone", "dev.aws-us-east-1c", + "--target", "hosted"), + builder.command()); + assertTrue(builder.environment().containsKey("CI")); + assertTrue(builder.environment().containsKey("VESPA_CLI_CLOUD_CI")); + assertTrue(builder.environment().containsKey("VESPA_CLI_HOME")); + assertTrue(builder.environment().containsKey("VESPA_CLI_CACHE_DIR")); + assertEquals("{\"endpoints\":[{\"cluster\":\"default\",\"url\":\"https://dev.endpoint:443/\"}]}", + builder.environment().get("VESPA_CLI_ENDPOINTS")); + assertEquals("/opt/vespa/var/vespa/sia/key", + builder.environment().get("VESPA_CLI_DATA_PLANE_KEY_FILE")); + assertEquals("/opt/vespa/var/vespa/sia/cert", + builder.environment().get("VESPA_CLI_DATA_PLANE_CERT_FILE")); + } + + private static TestConfig testConfig(SystemName system) { + return TestConfig.fromJson(("{\n" + + " \"application\": \"t:a:i\",\n" + + " \"zone\": \"dev.aws-us-east-1c\",\n" + + " \"system\": \"" + system.value() + "\",\n" + + " \"isCI\": true,\n" + + " \"zoneEndpoints\": {\n" + + " \"dev.aws-us-east-1c\": {\n" + + " \"default\": \"https://dev.endpoint:443/\"\n" + + " },\n" + + " \"prod.aws-us-east-1a\": {\n" + + " \"default\": \"https://prod.endpoint:443/\"\n" + + " }\n" + + " },\n" + + " \"clusters\": {\n" + + " \"prod.aws-us-east-1c\": [\n" + + " \"documents\"\n" + + " ]\n" + + " }\n" + + "}\n").getBytes(StandardCharsets.UTF_8)); + } + } -- cgit v1.2.3