diff --git a/pom.xml b/pom.xml index 0522c72..fdb64a1 100644 --- a/pom.xml +++ b/pom.xml @@ -88,6 +88,12 @@ aws-java-sdk ${aws.sdk.version} provided + + + com.amazonaws + aws-java-sdk-kinesisvideo + + com.amazonaws @@ -115,6 +121,28 @@ ${aws.sdk.version} + + + software.amazon.awssdk + sns + 2.13.36 + + + software.amazon.awssdk + sqs + 2.13.36 + + + software.amazon.awssdk + kinesis + 2.13.36 + + + software.amazon.awssdk + netty-nio-client + 2.13.36 + + diff --git a/src/main/java/cloud/localstack/CommonUtils.java b/src/main/java/cloud/localstack/CommonUtils.java new file mode 100644 index 0000000..8ace1dc --- /dev/null +++ b/src/main/java/cloud/localstack/CommonUtils.java @@ -0,0 +1,102 @@ +package cloud.localstack; + +import cloud.localstack.Constants; +import cloud.localstack.Localstack; + +import java.io.*; +import java.nio.file.*; +import java.util.*; +import java.lang.reflect.Field; +import java.nio.channels.FileChannel; +import java.util.stream.Stream; + +/** + * Common utility methods + */ +public class CommonUtils { + + private static final String[] EXCLUDED_DIRECTORIES = { + ".github", ".git", ".idea", ".venv", "target", "node_modules" + }; + + public static void disableSslCertChecking() { + System.setProperty("com.amazonaws.sdk.disableCertChecking", "true"); + } + + public static void setEnv(String key, String value) { + Map newEnv = new HashMap(System.getenv()); + newEnv.put(key, value); + setEnv(newEnv); + } + + protected static void setEnv(Map newEnv) { + try { + Class processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment"); + Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment"); + theEnvironmentField.setAccessible(true); + Map env = (Map) theEnvironmentField.get(null); + env.putAll(newEnv); + Field theCaseInsensitiveEnvironmentField = processEnvironmentClass + .getDeclaredField("theCaseInsensitiveEnvironment"); + theCaseInsensitiveEnvironmentField.setAccessible(true); + Map cienv = (Map) theCaseInsensitiveEnvironmentField.get(null); + cienv.putAll(newEnv); + } catch (NoSuchFieldException e) { + try { + Class[] classes = Collections.class.getDeclaredClasses(); + Map env = System.getenv(); + for (Class cl : classes) { + if ("java.util.Collections$UnmodifiableMap".equals(cl.getName())) { + Field field = cl.getDeclaredField("m"); + field.setAccessible(true); + Object obj = field.get(env); + Map map = (Map) obj; + map.clear(); + map.putAll(newEnv); + } + } + } catch (Exception e2) { + e2.printStackTrace(); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + public static void copyFolder(Path src, Path dest) throws IOException { + try(Stream stream = Files.walk(src)) { + stream.forEach(source -> { + boolean isExcluded = Arrays.stream(EXCLUDED_DIRECTORIES) + .anyMatch( excluded -> source.toAbsolutePath().toString().contains(excluded)); + if (!isExcluded) { + copy(source, dest.resolve(src.relativize(source))); + } + }); + } + } + + public static void copy(Path source, Path dest) { + try { + CopyOption[] options = new CopyOption[] {StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING}; + if(Files.isDirectory(dest)) { + // continue without copying + return; + } + if (Files.exists(dest)) { + try(FileChannel sourceFile = FileChannel.open(source)) { + try (FileChannel destFile = FileChannel.open(dest)) { + if (!Files.getLastModifiedTime(source).equals(Files.getLastModifiedTime(dest)) + || sourceFile.size() != destFile.size() + ) { + Files.copy(source, dest, options); + } + } + } + } else { + Files.copy(source, dest, options); + } + } catch (Exception e) { + throw new RuntimeException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/cloud/localstack/Constants.java b/src/main/java/cloud/localstack/Constants.java index ba85435..8093a7d 100644 --- a/src/main/java/cloud/localstack/Constants.java +++ b/src/main/java/cloud/localstack/Constants.java @@ -8,6 +8,10 @@ public class Constants { public static final String LOCALHOST_DOMAIN_NAME = "localhost.localstack.cloud"; + public static final String DEFAULT_REGION = "us-east-1"; + public static final String TEST_ACCESS_KEY = "test"; + public static final String TEST_SECRET_KEY = "test"; + static { DEFAULT_PORTS.put("apigateway", 4567); DEFAULT_PORTS.put("kinesis", 4568); @@ -34,4 +38,5 @@ public class Constants { DEFAULT_PORTS.put("ec2", 4597); DEFAULT_PORTS.put("kms", 4599); } + } diff --git a/src/main/java/cloud/localstack/Localstack.java b/src/main/java/cloud/localstack/Localstack.java index ca1fd6a..c9d7723 100644 --- a/src/main/java/cloud/localstack/Localstack.java +++ b/src/main/java/cloud/localstack/Localstack.java @@ -2,6 +2,7 @@ import cloud.localstack.Constants; import cloud.localstack.ServiceName; +import cloud.localstack.CommonUtils; import cloud.localstack.docker.*; import cloud.localstack.docker.command.*; import cloud.localstack.docker.annotation.LocalstackDockerConfiguration; @@ -54,7 +55,7 @@ public class Localstack { static { // make sure we avoid any errors related to locally generated SSL certificates - TestUtils.disableSslCertChecking(); + CommonUtils.disableSslCertChecking(); } private Localstack() { } @@ -237,6 +238,6 @@ public static boolean isEnvConfigSet(String configName) { } public static String getDefaultRegion() { - return TestUtils.DEFAULT_REGION; + return Constants.DEFAULT_REGION; } } diff --git a/src/main/java/cloud/localstack/TestUtils.java b/src/main/java/cloud/localstack/awssdkv1/TestUtils.java similarity index 69% rename from src/main/java/cloud/localstack/TestUtils.java rename to src/main/java/cloud/localstack/awssdkv1/TestUtils.java index 4b37a76..2ccf388 100644 --- a/src/main/java/cloud/localstack/TestUtils.java +++ b/src/main/java/cloud/localstack/awssdkv1/TestUtils.java @@ -1,4 +1,4 @@ -package cloud.localstack; +package cloud.localstack.awssdkv1; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; @@ -33,36 +33,16 @@ import com.amazonaws.services.secretsmanager.AWSSecretsManagerClientBuilder; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; -import java.io.IOException; -import java.lang.reflect.Field; -import java.nio.channels.FileChannel; -import java.nio.file.CopyOption; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; + +import cloud.localstack.Constants; +import cloud.localstack.Localstack; +import cloud.localstack.CommonUtils; @SuppressWarnings("all") public class TestUtils { - public static final String DEFAULT_REGION = "us-east-1"; - public static final String TEST_ACCESS_KEY = "test"; - public static final String TEST_SECRET_KEY = "test"; - public static final AWSCredentials TEST_CREDENTIALS = new BasicAWSCredentials(TEST_ACCESS_KEY, TEST_SECRET_KEY); - - private static final String[] EXCLUDED_DIRECTORIES = { - ".github", ".git", ".idea", ".venv", "target", "node_modules" - }; - - public static void setEnv(String key, String value) { - Map newEnv = new HashMap(System.getenv()); - newEnv.put(key, value); - setEnv(newEnv); - } + public static final AWSCredentials TEST_CREDENTIALS = new BasicAWSCredentials( + Constants.TEST_ACCESS_KEY, Constants.TEST_SECRET_KEY); public static AmazonSQS getClientSQS() { return getClientSQS(null); @@ -227,87 +207,16 @@ protected static AwsClientBuilder.EndpointConfiguration getEndpointConfiguration return getEndpointConfiguration(Localstack.INSTANCE.getEndpointStepFunctions()); } - protected static void setEnv(Map newEnv) { - try { - Class processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment"); - Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment"); - theEnvironmentField.setAccessible(true); - Map env = (Map) theEnvironmentField.get(null); - env.putAll(newEnv); - Field theCaseInsensitiveEnvironmentField = processEnvironmentClass - .getDeclaredField("theCaseInsensitiveEnvironment"); - theCaseInsensitiveEnvironmentField.setAccessible(true); - Map cienv = (Map) theCaseInsensitiveEnvironmentField.get(null); - cienv.putAll(newEnv); - } catch (NoSuchFieldException e) { - try { - Class[] classes = Collections.class.getDeclaredClasses(); - Map env = System.getenv(); - for (Class cl : classes) { - if ("java.util.Collections$UnmodifiableMap".equals(cl.getName())) { - Field field = cl.getDeclaredField("m"); - field.setAccessible(true); - Object obj = field.get(env); - Map map = (Map) obj; - map.clear(); - map.putAll(newEnv); - } - } - } catch (Exception e2) { - e2.printStackTrace(); - } - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - public static void disableSslCertChecking() { - System.setProperty("com.amazonaws.sdk.disableCertChecking", "true"); - } - - public static void copyFolder(Path src, Path dest) throws IOException { - try(Stream stream = Files.walk(src)) { - stream.forEach(source -> { - boolean isExcluded = Arrays.stream(EXCLUDED_DIRECTORIES) - .anyMatch( excluded -> source.toAbsolutePath().toString().contains(excluded)); - if (!isExcluded) { - copy(source, dest.resolve(src.relativize(source))); - } - }); - } - } - - public static void copy(Path source, Path dest) { - try { - CopyOption[] options = new CopyOption[] {StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING}; - if(Files.isDirectory(dest)) { - // continue without copying - return; - } - if (Files.exists(dest)) { - try(FileChannel sourceFile = FileChannel.open(source)) { - try (FileChannel destFile = FileChannel.open(dest)) { - if (!Files.getLastModifiedTime(source).equals(Files.getLastModifiedTime(dest)) - || sourceFile.size() != destFile.size() - ) { - Files.copy(source, dest, options); - } - } - } - } else { - Files.copy(source, dest, options); - } - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); - } - } + /** + * UTIL METHODS + */ public static AWSCredentialsProvider getCredentialsProvider() { return new AWSStaticCredentialsProvider(TEST_CREDENTIALS); } protected static AwsClientBuilder.EndpointConfiguration getEndpointConfiguration(String endpointURL) { - return new AwsClientBuilder.EndpointConfiguration(endpointURL, DEFAULT_REGION); + return new AwsClientBuilder.EndpointConfiguration(endpointURL, Constants.DEFAULT_REGION); } } diff --git a/src/main/java/cloud/localstack/awssdkv2/TestUtils.java b/src/main/java/cloud/localstack/awssdkv2/TestUtils.java new file mode 100644 index 0000000..a932527 --- /dev/null +++ b/src/main/java/cloud/localstack/awssdkv2/TestUtils.java @@ -0,0 +1,53 @@ +package cloud.localstack.awssdkv2; + +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.utils.*; +import software.amazon.awssdk.http.*; +import software.amazon.awssdk.services.kinesis.*; +import software.amazon.awssdk.services.sns.*; +import software.amazon.awssdk.services.sqs.*; +import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; + +import cloud.localstack.Localstack; + +import java.net.*; + +@SuppressWarnings("all") +public class TestUtils { + + /** + * AWS SDK V2 METHODS + */ + + public static KinesisAsyncClient getClientKinesisAsyncV2() { + return wrapApiClientV2(KinesisAsyncClient.builder(), Localstack.INSTANCE.getEndpointKinesis()).build(); + } + + public static SqsAsyncClient getClientSQSAsyncV2() { + return wrapApiClientV2(SqsAsyncClient.builder(), Localstack.INSTANCE.getEndpointSQS()).build(); + } + + public static SnsAsyncClient getClientSNSAsyncV2() { + return wrapApiClientV2(SnsAsyncClient.builder(), Localstack.INSTANCE.getEndpointSNS()).build(); + } + + public static T wrapApiClientV2(T builder, String endpointURL) { + try { + return (T) ((software.amazon.awssdk.awscore.client.builder.AwsClientBuilder)builder + .httpClient(NettyNioAsyncHttpClient.builder().buildWithDefaults( + AttributeMap.builder().put( + SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES, java.lang.Boolean.TRUE).build()))) + .credentialsProvider(getCredentialsV2()) + .region(Region.of(Localstack.INSTANCE.getDefaultRegion())) + .endpointOverride(new URI(endpointURL)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private static software.amazon.awssdk.auth.credentials.AwsCredentialsProvider getCredentialsV2() throws Exception { + return software.amazon.awssdk.auth.credentials.StaticCredentialsProvider.create( + software.amazon.awssdk.auth.credentials.AwsBasicCredentials.create("access", "secret")); + } + +} diff --git a/src/main/java/cloud/localstack/deprecated/Localstack.java b/src/main/java/cloud/localstack/deprecated/Localstack.java index 76d9e79..d145b99 100644 --- a/src/main/java/cloud/localstack/deprecated/Localstack.java +++ b/src/main/java/cloud/localstack/deprecated/Localstack.java @@ -21,6 +21,7 @@ import cloud.localstack.Constants; import cloud.localstack.ServiceName; +import cloud.localstack.CommonUtils; /** * Singleton class that automatically downloads, installs, starts, @@ -385,7 +386,7 @@ public void setupInfrastructure() { ensureInstallation(true); // make sure we avoid any errors related to locally generated SSL certificates - TestUtils.disableSslCertChecking(); + CommonUtils.disableSslCertChecking(); if (INFRA_STARTED.get() != null) return; String[] cmd = new String[]{"make", "-C", TMP_INSTALL_DIR, "infra"}; diff --git a/src/main/java/cloud/localstack/deprecated/TestUtils.java b/src/main/java/cloud/localstack/deprecated/TestUtils.java index 3139763..51d79ab 100644 --- a/src/main/java/cloud/localstack/deprecated/TestUtils.java +++ b/src/main/java/cloud/localstack/deprecated/TestUtils.java @@ -38,7 +38,7 @@ import java.util.Map; import java.util.stream.Stream; -import static cloud.localstack.TestUtils.getCredentialsProvider; +import static cloud.localstack.awssdkv1.TestUtils.getCredentialsProvider; @Deprecated @SuppressWarnings("all") diff --git a/src/test/java/cloud/localstack/S3FeaturesTest.java b/src/test/java/cloud/localstack/S3FeaturesTest.java index 19b36d1..e166be9 100644 --- a/src/test/java/cloud/localstack/S3FeaturesTest.java +++ b/src/test/java/cloud/localstack/S3FeaturesTest.java @@ -3,6 +3,9 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import cloud.localstack.docker.annotation.LocalstackDockerProperties; +import cloud.localstack.awssdkv1.TestUtils; + import java.io.*; import java.nio.charset.StandardCharsets; import java.util.*; @@ -27,8 +30,6 @@ import com.amazonaws.services.s3.model.*; import com.amazonaws.services.s3.model.lifecycle.*; -import cloud.localstack.docker.annotation.LocalstackDockerProperties; - @RunWith(LocalstackTestRunner.class) @LocalstackDockerProperties(services = {"s3"}, ignoreDockerRunErrors=true) public class S3FeaturesTest { @@ -71,7 +72,7 @@ public void testHttpsConnection() { return; } - TestUtils.disableSslCertChecking(); + CommonUtils.disableSslCertChecking(); String bucketName = "test-bucket-https"; diff --git a/src/test/java/cloud/localstack/S3UploadTest.java b/src/test/java/cloud/localstack/S3UploadTest.java index 2a0d743..036f8ca 100644 --- a/src/test/java/cloud/localstack/S3UploadTest.java +++ b/src/test/java/cloud/localstack/S3UploadTest.java @@ -1,5 +1,7 @@ package cloud.localstack; +import cloud.localstack.awssdkv1.TestUtils; + import static org.junit.Assert.assertEquals; import java.io.ByteArrayInputStream; diff --git a/src/test/java/cloud/localstack/SNSMessagingTest.java b/src/test/java/cloud/localstack/SNSMessagingTest.java index 0a5c222..cd51e6e 100644 --- a/src/test/java/cloud/localstack/SNSMessagingTest.java +++ b/src/test/java/cloud/localstack/SNSMessagingTest.java @@ -1,6 +1,8 @@ package cloud.localstack; import cloud.localstack.utils.PromiseAsyncHandler; +import cloud.localstack.awssdkv1.TestUtils; + import com.amazonaws.services.sns.AmazonSNS; import com.amazonaws.services.sns.AmazonSNSAsync; import com.amazonaws.services.sns.model.CreateTopicRequest; @@ -46,4 +48,4 @@ public void testSendMessageAsync() throws Exception { Assert.assertNotNull(result); } -} \ No newline at end of file +} diff --git a/src/test/java/cloud/localstack/SQSMessagingTest.java b/src/test/java/cloud/localstack/SQSMessagingTest.java index 2c7cfe2..a55774c 100644 --- a/src/test/java/cloud/localstack/SQSMessagingTest.java +++ b/src/test/java/cloud/localstack/SQSMessagingTest.java @@ -1,7 +1,10 @@ package cloud.localstack; +import cloud.localstack.CommonUtils; import cloud.localstack.utils.PromiseAsyncHandler; import cloud.localstack.docker.annotation.LocalstackDockerProperties; +import cloud.localstack.awssdkv1.TestUtils; + import com.amazon.sqs.javamessaging.SQSConnection; import com.amazon.sqs.javamessaging.SQSConnectionFactory; import com.amazonaws.auth.AWSStaticCredentialsProvider; @@ -51,7 +54,7 @@ public static void setup() { /* Disable SSL certificate checks for local testing */ if (Localstack.useSSL()) { - TestUtils.disableSslCertChecking(); + CommonUtils.disableSslCertChecking(); } } diff --git a/src/test/java/cloud/localstack/awssdkv2/BasicFeaturesSDKV2Test.java b/src/test/java/cloud/localstack/awssdkv2/BasicFeaturesSDKV2Test.java new file mode 100644 index 0000000..7b5742f --- /dev/null +++ b/src/test/java/cloud/localstack/awssdkv2/BasicFeaturesSDKV2Test.java @@ -0,0 +1,50 @@ +package cloud.localstack.awssdkv2; + +import cloud.localstack.awssdkv2.TestUtils; +import cloud.localstack.LocalstackTestRunner; + +import software.amazon.awssdk.core.SdkSystemSetting; +import software.amazon.awssdk.services.sqs.*; +import software.amazon.awssdk.services.sqs.model.*; +import software.amazon.awssdk.services.kinesis.*; +import software.amazon.awssdk.services.kinesis.model.*; +import software.amazon.awssdk.auth.credentials.*; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.utils.Logger; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.*; +import java.net.*; + +@RunWith(LocalstackTestRunner.class) +public class BasicFeaturesSDKV2Test { + + static { + System.setProperty(SdkSystemSetting.CBOR_ENABLED.property(), "false"); + } + + @Test + public void testCreateSqsQueueV2() throws Exception { + String queueName = "test-q-2159"; + CreateQueueRequest request = CreateQueueRequest.builder().queueName(queueName).build(); + SqsAsyncClient sqsClient = TestUtils.getClientSQSAsyncV2(); + CreateQueueResponse queue = sqsClient.createQueue(request).get(); + // TODO fix classpath for v2 and finalize test + System.out.println(queue); + } + + @Test + public void testCreateKinesisStreamV2() throws Exception { + String streamName = "test-s-3198"; + KinesisAsyncClient kinesisClient = TestUtils.getClientKinesisAsyncV2(); + CreateStreamRequest request = CreateStreamRequest.builder() + .streamName(streamName).shardCount(1).build(); + CreateStreamResponse response = kinesisClient.createStream(request).get(); + // TODO fix classpath for v2 and finalize test + System.out.println(response); + } + +} diff --git a/src/test/java/cloud/localstack/awssdkv2/SNSMessagingTest.java b/src/test/java/cloud/localstack/awssdkv2/SNSMessagingTest.java new file mode 100644 index 0000000..7eb0101 --- /dev/null +++ b/src/test/java/cloud/localstack/awssdkv2/SNSMessagingTest.java @@ -0,0 +1,34 @@ +package cloud.localstack.awssdkv2; + +import cloud.localstack.LocalstackTestRunner; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import software.amazon.awssdk.services.sns.SnsAsyncClient; +import software.amazon.awssdk.services.sns.model.CreateTopicRequest; +import software.amazon.awssdk.services.sns.model.CreateTopicResponse; +import software.amazon.awssdk.services.sns.model.PublishRequest; +import software.amazon.awssdk.services.sns.model.PublishResponse; + +import java.util.concurrent.ExecutionException; + +/** + * Test integration of SNS messaging with LocalStack using SDK v2 + */ +@RunWith(LocalstackTestRunner.class) +public class SNSMessagingTest { + private static final String TOPIC = "topic"; + + @Test + public void testSendMessage() throws ExecutionException, InterruptedException { + final SnsAsyncClient clientSNS = TestUtils.getClientSNSAsyncV2(); + CreateTopicResponse createTopicResponse = clientSNS.createTopic(CreateTopicRequest.builder().name(TOPIC).build()).get(); + + String topicArn = createTopicResponse.topicArn(); + Assert.assertNotNull(topicArn); + PublishRequest publishRequest = PublishRequest.builder().topicArn(topicArn).subject("test subject").message("message test.").build(); + + PublishResponse publishResponse = clientSNS.publish(publishRequest).get(); + Assert.assertNotNull(publishResponse.messageId()); + } +} diff --git a/src/test/java/cloud/localstack/deprecated/BasicFunctionalityTest.java b/src/test/java/cloud/localstack/deprecated/BasicFunctionalityTest.java index a9631e8..a0b3353 100644 --- a/src/test/java/cloud/localstack/deprecated/BasicFunctionalityTest.java +++ b/src/test/java/cloud/localstack/deprecated/BasicFunctionalityTest.java @@ -1,5 +1,7 @@ package cloud.localstack.deprecated; +import cloud.localstack.CommonUtils; +import cloud.localstack.awssdkv1.TestUtils; import cloud.localstack.utils.LocalTestUtil; import cloud.localstack.sample.KinesisLambdaHandler; import cloud.localstack.sample.S3Sample; @@ -48,7 +50,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import static cloud.localstack.TestUtils.TEST_CREDENTIALS; +import static cloud.localstack.awssdkv1.TestUtils.TEST_CREDENTIALS; /** * Simple class to test basic functionality and interaction with LocalStack. @@ -66,10 +68,10 @@ public class BasicFunctionalityTest { * Need to disable CBOR protocol, see: * https://github.com/mhart/kinesalite/blob/master/README.md#cbor-protocol-issues-with-the-java-sdk */ - TestUtils.setEnv("AWS_CBOR_DISABLE", "1"); + CommonUtils.setEnv("AWS_CBOR_DISABLE", "1"); /* Disable SSL certificate checks for local testing */ if (Localstack.useSSL()) { - TestUtils.disableSslCertChecking(); + CommonUtils.disableSslCertChecking(); } } @@ -195,16 +197,7 @@ public void run() { public void testSQSQueueAttributes() { // Based on https://github.com/localstack/localstack/issues/1551 - AwsClientBuilder.EndpointConfiguration endpoint = TestUtils.getEndpointConfigurationSQS(); - - ClientConfiguration cc = new ClientConfiguration(); - cc.setProtocol(Protocol.HTTP); - - AmazonSQSAsync sqsAsync = AmazonSQSAsyncClientBuilder.standard() - .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("foo", "foo"))) - .withEndpointConfiguration(endpoint) - .withClientConfiguration(cc) - .build(); + AmazonSQSAsync sqsAsync = TestUtils.getClientSQSAsync(); CreateQueueResult result1 = sqsAsync.createQueue("1551-test"); CreateQueueResult result2 = sqsAsync.createQueue("1551-test-dlq"); diff --git a/src/test/java/cloud/localstack/docker/BasicDockerFunctionalityTest.java b/src/test/java/cloud/localstack/docker/BasicDockerFunctionalityTest.java index 819f615..fbee251 100644 --- a/src/test/java/cloud/localstack/docker/BasicDockerFunctionalityTest.java +++ b/src/test/java/cloud/localstack/docker/BasicDockerFunctionalityTest.java @@ -2,8 +2,10 @@ import cloud.localstack.Localstack; import cloud.localstack.LocalstackTestRunner; -import cloud.localstack.TestUtils; import cloud.localstack.docker.annotation.LocalstackDockerProperties; +import cloud.localstack.CommonUtils; +import cloud.localstack.awssdkv1.TestUtils; + import com.amazon.sqs.javamessaging.SQSConnection; import com.amazon.sqs.javamessaging.SQSConnectionFactory; import com.amazonaws.auth.AWSStaticCredentialsProvider; @@ -57,7 +59,7 @@ public class BasicDockerFunctionalityTest { static { - TestUtils.setEnv("AWS_CBOR_DISABLE", "1"); + CommonUtils.setEnv("AWS_CBOR_DISABLE", "1"); } @org.junit.Test diff --git a/src/test/java/cloud/localstack/docker/DockerOnlySQSFunctionalityTest.java b/src/test/java/cloud/localstack/docker/DockerOnlySQSFunctionalityTest.java index 2224788..6fad618 100644 --- a/src/test/java/cloud/localstack/docker/DockerOnlySQSFunctionalityTest.java +++ b/src/test/java/cloud/localstack/docker/DockerOnlySQSFunctionalityTest.java @@ -1,7 +1,8 @@ package cloud.localstack.docker; -import cloud.localstack.TestUtils; import cloud.localstack.Localstack; +import cloud.localstack.CommonUtils; +import cloud.localstack.awssdkv1.TestUtils; import cloud.localstack.docker.LocalstackDockerExtension; import cloud.localstack.LocalstackTestRunner; import cloud.localstack.docker.annotation.LocalstackDockerProperties; @@ -30,7 +31,7 @@ public class DockerOnlySQSFunctionalityTest { static { - TestUtils.setEnv("AWS_CBOR_DISABLE", "1"); + CommonUtils.setEnv("AWS_CBOR_DISABLE", "1"); } @org.junit.Test diff --git a/src/test/java/cloud/localstack/docker/LocalstackDockerTest.java b/src/test/java/cloud/localstack/docker/LocalstackDockerTest.java index 03d6bb7..763ef83 100644 --- a/src/test/java/cloud/localstack/docker/LocalstackDockerTest.java +++ b/src/test/java/cloud/localstack/docker/LocalstackDockerTest.java @@ -1,7 +1,7 @@ package cloud.localstack.docker; import cloud.localstack.Localstack; -import cloud.localstack.TestUtils; +import cloud.localstack.awssdkv1.TestUtils; import cloud.localstack.docker.annotation.LocalstackDockerConfiguration; import com.amazonaws.SdkClientException; import com.amazonaws.services.sqs.AmazonSQS; @@ -58,4 +58,4 @@ public void stop() { public void tearDown() { Localstack.INSTANCE.stop(); } -} \ No newline at end of file +} diff --git a/src/test/java/cloud/localstack/docker/PortBindingTest.java b/src/test/java/cloud/localstack/docker/PortBindingTest.java index b6c5b87..d31de89 100644 --- a/src/test/java/cloud/localstack/docker/PortBindingTest.java +++ b/src/test/java/cloud/localstack/docker/PortBindingTest.java @@ -2,7 +2,7 @@ import cloud.localstack.Localstack; import cloud.localstack.LocalstackTestRunner; -import cloud.localstack.TestUtils; +import cloud.localstack.awssdkv1.TestUtils; import cloud.localstack.docker.annotation.LocalstackDockerProperties; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/src/test/java/cloud/localstack/docker/SingleContainerTest.java b/src/test/java/cloud/localstack/docker/SingleContainerTest.java index 5f97e6a..85a7ca3 100644 --- a/src/test/java/cloud/localstack/docker/SingleContainerTest.java +++ b/src/test/java/cloud/localstack/docker/SingleContainerTest.java @@ -2,7 +2,7 @@ import cloud.localstack.Localstack; import cloud.localstack.LocalstackTestRunner; -import cloud.localstack.TestUtils; +import cloud.localstack.awssdkv1.TestUtils; import cloud.localstack.docker.annotation.LocalstackDockerProperties; import org.junit.jupiter.api.extension.ExtendWith; diff --git a/src/test/java/cloud/localstack/sample/SQSLambdaHandler.java b/src/test/java/cloud/localstack/sample/SQSLambdaHandler.java index 7026da5..88327a7 100644 --- a/src/test/java/cloud/localstack/sample/SQSLambdaHandler.java +++ b/src/test/java/cloud/localstack/sample/SQSLambdaHandler.java @@ -1,6 +1,6 @@ package cloud.localstack.sample; -import cloud.localstack.TestUtils; +import cloud.localstack.awssdkv1.TestUtils; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.SQSEvent; diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml new file mode 100644 index 0000000..7fdc595 --- /dev/null +++ b/src/test/resources/log4j2.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/test/resources/logback.xml b/src/test/resources/logback.xml index 85f1443..8ed0a3f 100644 --- a/src/test/resources/logback.xml +++ b/src/test/resources/logback.xml @@ -2,4 +2,5 @@ - \ No newline at end of file + +