diff --git a/tasks/terraform/pom.xml b/tasks/terraform/pom.xml index 9b8a66c6..66af7b48 100644 --- a/tasks/terraform/pom.xml +++ b/tasks/terraform/pom.xml @@ -94,12 +94,6 @@ wiremock-jre8 test - - com.squareup.okhttp - okhttp - 2.7.5 - test - com.walmartlabs.concord.runtime.v2 concord-runner-v2 diff --git a/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/AbstractTerraformTest.java b/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/AbstractTerraformTest.java index 57c3b333..8d8246fd 100644 --- a/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/AbstractTerraformTest.java +++ b/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/AbstractTerraformTest.java @@ -26,19 +26,18 @@ import com.github.tomakehurst.wiremock.http.HttpHeader; import com.github.tomakehurst.wiremock.http.RequestMethod; import com.github.tomakehurst.wiremock.junit5.WireMockExtension; -import com.squareup.okhttp.Call; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.Request; -import com.squareup.okhttp.Response; -import com.walmartlabs.concord.common.IOUtils; import com.walmartlabs.concord.plugins.terraform.backend.BackendFactoryV1; import com.walmartlabs.concord.plugins.terraform.docker.DockerService; import com.walmartlabs.concord.sdk.*; import org.junit.jupiter.api.extension.RegisterExtension; +import org.junit.jupiter.api.io.TempDir; import java.io.*; import java.lang.reflect.Field; import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -60,6 +59,7 @@ public abstract class AbstractTerraformTest { private String basedir; private AWSCredentials awsCredentials; + @TempDir protected Path workDir; protected Path dstDir; private Path testFile; @@ -67,7 +67,7 @@ public abstract class AbstractTerraformTest { protected LockService lockService; protected ObjectStorage objectStorage; protected BackendFactoryV1 backendManager; - protected OKHttpDownloadManager dependencyManager; + protected HttpClientDownloadManager dependencyManager; protected DockerService dockerService; @RegisterExtension @@ -100,7 +100,7 @@ public void abstractSetup() throws Exception { Files.copy(testFile, dstDir.resolve("main.tf")); lockService = mock(LockService.class); - dependencyManager = new OKHttpDownloadManager("terraform"); + dependencyManager = new HttpClientDownloadManager("terraform"); dockerService = new DockerService(workDir, Collections.emptyList()); } @@ -297,14 +297,8 @@ public Object put(Object key, Object value) { // private Path workDir() throws Exception { - String concordTmpDir = System.getenv(CONCORD_TMP_DIR_KEY); - if (concordTmpDir == null) { - // Grab the old environment and add the CONCORD_TMP_DIR value to it and reset it - Map newEnvironment = new HashMap<>(System.getenv()); - newEnvironment.put(CONCORD_TMP_DIR_KEY, CONCORD_TMP_DIR_VALUE); - setNewEnvironment(newEnvironment); - } - return IOUtils.createTempDir("test"); + + return Files.createDirectories(workDir.resolve("test")); } private Path terraformTestFile() { @@ -361,11 +355,11 @@ private static void setNewEnvironment(Map newEnvironment) throws } } - static class OKHttpDownloadManager implements DependencyManager, com.walmartlabs.concord.runtime.v2.sdk.DependencyManager { + protected static class HttpClientDownloadManager implements DependencyManager, com.walmartlabs.concord.runtime.v2.sdk.DependencyManager { private final Path toolDir; - public OKHttpDownloadManager(String tool) { + public HttpClientDownloadManager(String tool) { this.toolDir = Paths.get(System.getProperty("user.home"), ".m2/tools/", tool); if (Files.exists(toolDir)) { @@ -395,11 +389,17 @@ public Path resolve(URI uri) throws IOException { String fileName = urlString.substring(urlString.lastIndexOf('/') + 1); Path target = toolDir.resolve(fileName); if (!Files.exists(target)) { - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder().url(urlString).build(); - Call call = client.newCall(request); - Response response = call.execute(); - download(response.body().byteStream(), target.toFile()); + HttpClient client = HttpClient.newHttpClient(); + HttpRequest req = HttpRequest.newBuilder(URI.create(urlString)) + .GET() + .build(); + + try { + var response = client.send(req, HttpResponse.BodyHandlers.ofInputStream()); + download(response.body(), target.toFile()); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } return target; } diff --git a/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/TerraformTaskIT.java b/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/TerraformTaskIT.java index 099850ba..16777269 100644 --- a/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/TerraformTaskIT.java +++ b/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/TerraformTaskIT.java @@ -51,12 +51,12 @@ public class TerraformTaskIT { private static final String CURRENT_VERSION = getCurrentVersion(); @Test - public void testWithRuntimeV1() throws Exception { + void testWithRuntimeV1() throws Exception { test("runtimeV1/concord.yml"); } @Test - public void testWithRuntimeV2() throws Exception { + void testWithRuntimeV2() throws Exception { test("runtimeV2/concord.yml"); } diff --git a/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/TerraformTaskV2Test.java b/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/TerraformTaskV2Test.java index a3d228fd..4dd22b03 100644 --- a/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/TerraformTaskV2Test.java +++ b/tasks/terraform/src/test/java/com/walmartlabs/concord/plugins/terraform/TerraformTaskV2Test.java @@ -20,7 +20,6 @@ * ===== */ -import com.squareup.okhttp.OkHttpClient; import com.walmartlabs.concord.ApiClient; import com.walmartlabs.concord.client.ApiClientConfiguration; import com.walmartlabs.concord.client.ApiClientFactory; @@ -36,7 +35,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; -import java.time.Duration; import java.util.Collections; import java.util.Map; @@ -71,7 +69,7 @@ // TODO: split test apart to prepare for testing OCI/GCP // @Disabled -public class TerraformTaskV2Test extends AbstractTerraformTest { +class TerraformTaskV2Test extends AbstractTerraformTest { private ApiClient apiClient; private SecretService secretService; private final LockService lockService = mock(LockService.class); @@ -96,7 +94,7 @@ public void setup() throws Exception { } @Test - public void test() throws Exception { + void test() throws Exception { Map args = baseArguments(workDir, dstDir, Action.PLAN.name()); args.put(TaskConstants.VARS_FILES, varFiles()); args.put(TaskConstants.EXTRA_VARS_KEY, extraVars()); @@ -235,7 +233,7 @@ private static SecretService createSecretService(Path workDir) throws Exception ApiClientFactory getApiClientFactory() { return cfg -> { - ApiClient apiClient = new ConcordApiClient(cfg.baseUrl(), new OkHttpClient()); + ApiClient apiClient = new ConcordApiClient(cfg.baseUrl()); apiClient.setReadTimeout(60000); apiClient.setConnectTimeout(10000); apiClient.setWriteTimeout(60000);