From 37fbe692cfb35b3c8548ec89069d7cda01fd5a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Serkan=20=C3=96ZAL?= Date: Fri, 20 Aug 2021 15:53:36 +0300 Subject: [PATCH] Fixed failing tests with Jexter rules/extensions --- pom.xml | 19 ++++ .../awssdkv1/KinesisConsumerTest.java | 39 +++----- .../docker/BasicDockerFunctionalityTest.java | 36 ++++++-- .../DockerOnlySQSFunctionalityTest.java | 14 ++- .../awssdkv1/docker/SingleContainerTest.java | 53 +++++------ .../awssdkv2/BasicFeaturesSDKV2Test.java | 92 +++++++++++++------ .../awssdkv2/KinesisSchedulerTest.java | 29 ++++-- .../awssdkv2/KinesisV2ConsumerTest.java | 29 ++++-- .../deprecated/BasicFunctionalityTest.java | 20 +++- 9 files changed, 216 insertions(+), 115 deletions(-) diff --git a/pom.xml b/pom.xml index 4d9f6e5..3cc2978 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,7 @@ 2.15.79 3.5 1.2.0 + 1.0.1 @@ -166,6 +167,24 @@ 2.12.1 test + + com.fasterxml.jackson.dataformat + jackson-dataformat-cbor + 2.12.1 + test + + + io.thundra + jexter-junit4-core + ${jexter.version} + test + + + io.thundra + jexter-junit5-core + ${jexter.version} + test + diff --git a/src/test/java/cloud/localstack/awssdkv1/KinesisConsumerTest.java b/src/test/java/cloud/localstack/awssdkv1/KinesisConsumerTest.java index f6a77db..af41487 100644 --- a/src/test/java/cloud/localstack/awssdkv1/KinesisConsumerTest.java +++ b/src/test/java/cloud/localstack/awssdkv1/KinesisConsumerTest.java @@ -1,56 +1,45 @@ package cloud.localstack.awssdkv1; import cloud.localstack.LocalstackTestRunner; -import cloud.localstack.docker.annotation.*; - +import cloud.localstack.docker.annotation.LocalstackDockerProperties; +import com.amazonaws.SDKGlobalConfiguration; import com.amazonaws.services.kinesis.AmazonKinesisAsync; import com.amazonaws.services.kinesis.model.CreateStreamRequest; -import com.amazonaws.services.kinesis.model.PutRecordRequest; import com.amazonaws.services.kinesis.model.GetRecordsRequest; import com.amazonaws.services.kinesis.model.GetRecordsResult; import com.amazonaws.services.kinesis.model.GetShardIteratorRequest; -import com.amazonaws.SDKGlobalConfiguration; +import com.amazonaws.services.kinesis.model.PutRecordRequest; import com.amazonaws.services.kinesis.model.ResourceInUseException; - +import io.thundra.jexter.junit4.core.sysprop.SystemPropertySandboxRule; import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; -import java.util.*; +import java.nio.ByteBuffer; +import java.util.List; +import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import java.nio.ByteBuffer; @RunWith(LocalstackTestRunner.class) @LocalstackDockerProperties(ignoreDockerRunErrors=true) public class KinesisConsumerTest { + // Revert system properties to the back after the test + @Rule + public SystemPropertySandboxRule systemPropertySandboxRule = new SystemPropertySandboxRule(); + @Test public void testGetRecordCBOR() throws Exception { - String valueBefore = this.getCborDisableConfig(); System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, "false"); - try { - this.runGetRecord(); - } finally { - System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, valueBefore); - } + runGetRecord(); } @Test public void testGetRecordJSON() throws Exception { - String valueBefore = this.getCborDisableConfig(); System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, "true"); - try { - this.runGetRecord(); - } finally { - System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, valueBefore); - } - } - - private String getCborDisableConfig() { - String valueBefore = System.getProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY); - valueBefore = valueBefore == null ? "" : valueBefore; - return valueBefore; + runGetRecord(); } private void runGetRecord() throws Exception { diff --git a/src/test/java/cloud/localstack/awssdkv1/docker/BasicDockerFunctionalityTest.java b/src/test/java/cloud/localstack/awssdkv1/docker/BasicDockerFunctionalityTest.java index fbee251..616641c 100644 --- a/src/test/java/cloud/localstack/awssdkv1/docker/BasicDockerFunctionalityTest.java +++ b/src/test/java/cloud/localstack/awssdkv1/docker/BasicDockerFunctionalityTest.java @@ -1,19 +1,19 @@ package cloud.localstack.docker; +import cloud.localstack.CommonUtils; import cloud.localstack.Localstack; import cloud.localstack.LocalstackTestRunner; -import cloud.localstack.docker.annotation.LocalstackDockerProperties; -import cloud.localstack.CommonUtils; import cloud.localstack.awssdkv1.TestUtils; - +import cloud.localstack.docker.annotation.LocalstackDockerProperties; import com.amazon.sqs.javamessaging.SQSConnection; import com.amazon.sqs.javamessaging.SQSConnectionFactory; import com.amazonaws.auth.AWSStaticCredentialsProvider; -import com.amazonaws.services.cloudwatch.*; -import com.amazonaws.services.cloudwatch.model.*; -import com.amazonaws.services.identitymanagement.AmazonIdentityManagement; -import com.amazonaws.services.identitymanagement.model.CreateRoleRequest; -import com.amazonaws.services.identitymanagement.model.EntityAlreadyExistsException; +import com.amazonaws.services.cloudwatch.AmazonCloudWatch; +import com.amazonaws.services.cloudwatch.model.Dimension; +import com.amazonaws.services.cloudwatch.model.MetricDatum; +import com.amazonaws.services.cloudwatch.model.PutMetricDataRequest; +import com.amazonaws.services.cloudwatch.model.PutMetricDataResult; +import com.amazonaws.services.cloudwatch.model.StandardUnit; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.model.AttributeDefinition; import com.amazonaws.services.dynamodbv2.model.CreateTableRequest; @@ -22,6 +22,9 @@ import com.amazonaws.services.dynamodbv2.model.ListTablesResult; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; +import com.amazonaws.services.identitymanagement.AmazonIdentityManagement; +import com.amazonaws.services.identitymanagement.model.CreateRoleRequest; +import com.amazonaws.services.identitymanagement.model.EntityAlreadyExistsException; import com.amazonaws.services.kinesis.AmazonKinesis; import com.amazonaws.services.kinesis.model.CreateStreamRequest; import com.amazonaws.services.kinesis.model.ListStreamsResult; @@ -37,10 +40,14 @@ import com.amazonaws.services.sqs.model.CreateQueueRequest; import com.amazonaws.services.sqs.model.ListQueuesResult; import com.amazonaws.util.IOUtils; +import io.thundra.jexter.junit4.core.envvar.EnvironmentVariableSandboxRule; +import io.thundra.jexter.junit4.core.sysprop.SystemPropertySandboxRule; +import io.thundra.jexter.junit5.core.envvar.EnvironmentVariableSandbox; import org.assertj.core.api.Assertions; +import org.junit.Assert; +import org.junit.ClassRule; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; -import org.junit.Assert; import javax.jms.MessageConsumer; import javax.jms.MessageProducer; @@ -56,9 +63,17 @@ @RunWith(LocalstackTestRunner.class) @ExtendWith(LocalstackDockerExtension.class) @LocalstackDockerProperties(randomizePorts = true) +// [JUnit5] Revert environment variables to the back after the test suite (class) +@EnvironmentVariableSandbox public class BasicDockerFunctionalityTest { - static { + // [JUnit4] Revert environment variables to the back after the test suite (class) + @ClassRule + public static EnvironmentVariableSandboxRule environmentVariableSandboxRule = new EnvironmentVariableSandboxRule(); + + @org.junit.BeforeClass + @org.junit.jupiter.api.BeforeAll + public static void beforeAll() { CommonUtils.setEnv("AWS_CBOR_DISABLE", "1"); } @@ -228,4 +243,5 @@ private SQSConnection createSQSConnection() throws Exception { new AWSStaticCredentialsProvider(TestUtils.TEST_CREDENTIALS)).build(); return connectionFactory.createConnection(); } + } diff --git a/src/test/java/cloud/localstack/awssdkv1/docker/DockerOnlySQSFunctionalityTest.java b/src/test/java/cloud/localstack/awssdkv1/docker/DockerOnlySQSFunctionalityTest.java index d9d4dfc..c3e721c 100644 --- a/src/test/java/cloud/localstack/awssdkv1/docker/DockerOnlySQSFunctionalityTest.java +++ b/src/test/java/cloud/localstack/awssdkv1/docker/DockerOnlySQSFunctionalityTest.java @@ -12,7 +12,10 @@ import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.model.CreateQueueRequest; import com.amazonaws.services.sqs.model.ListQueuesResult; +import io.thundra.jexter.junit4.core.envvar.EnvironmentVariableSandboxRule; +import io.thundra.jexter.junit5.core.envvar.EnvironmentVariableSandbox; import org.assertj.core.api.Assertions; +import org.junit.ClassRule; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; @@ -27,9 +30,17 @@ @RunWith(LocalstackTestRunner.class) @ExtendWith(LocalstackDockerExtension.class) @LocalstackDockerProperties(randomizePorts = true, services = "sqs") +// [JUnit5] Revert environment variables to the back after the test suite (class) +@EnvironmentVariableSandbox public class DockerOnlySQSFunctionalityTest { - static { + // [JUnit4] Revert environment variables to the back after the test suite (class) + @ClassRule + public static EnvironmentVariableSandboxRule environmentVariableSandboxRule = new EnvironmentVariableSandboxRule(); + + @org.junit.BeforeClass + @org.junit.jupiter.api.BeforeAll + public static void beforeAll() { CommonUtils.setEnv("AWS_CBOR_DISABLE", "1"); } @@ -105,4 +116,5 @@ private SQSConnection createSQSConnection() throws Exception { new AWSStaticCredentialsProvider(TestUtils.TEST_CREDENTIALS)).build(); return connectionFactory.createConnection(); } + } diff --git a/src/test/java/cloud/localstack/awssdkv1/docker/SingleContainerTest.java b/src/test/java/cloud/localstack/awssdkv1/docker/SingleContainerTest.java index b3bbdf2..6d2639c 100644 --- a/src/test/java/cloud/localstack/awssdkv1/docker/SingleContainerTest.java +++ b/src/test/java/cloud/localstack/awssdkv1/docker/SingleContainerTest.java @@ -2,13 +2,16 @@ import cloud.localstack.Localstack; import cloud.localstack.docker.annotation.LocalstackDockerProperties; - -import org.junit.jupiter.api.*; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; -import org.junit.Assert; import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.extension.ExtendWith; +@ExtendWith(LocalstackDockerExtension.class) +@LocalstackDockerProperties(randomizePorts=true, services={"sns"}, useSingleDockerContainer=true) @TestMethodOrder(OrderAnnotation.class) public class SingleContainerTest { @@ -21,32 +24,24 @@ static void checkAndSetEndpoint(String endpoint) { SNS_ENDPOINT = endpoint; } - @ExtendWith(LocalstackDockerExtension.class) - @LocalstackDockerProperties(randomizePorts=true, services={"sns"}, useSingleDockerContainer=true) - public static class ContainerTest1 { - @org.junit.jupiter.api.Test - @Order(1) - public void testCheckPort() { - String endpoint = Localstack.INSTANCE.getEndpointSNS(); - checkAndSetEndpoint(endpoint); - } + @AfterClass + @AfterAll + public static void tearDown() { + Localstack.INSTANCE.stop(); } - @ExtendWith(LocalstackDockerExtension.class) - @LocalstackDockerProperties(randomizePorts=true, services={"sns"}, useSingleDockerContainer=true) - public static class ContainerTest2 { - - @AfterClass - @AfterAll - public static void tearDown() { - Localstack.INSTANCE.stop(); - } + @org.junit.jupiter.api.Test + @Order(1) + public void testCheckPort() { + String endpoint = Localstack.INSTANCE.getEndpointSNS(); + checkAndSetEndpoint(endpoint); + } - @org.junit.jupiter.api.Test - @Order(2) - public void testCheckPort() { - String endpoint = Localstack.INSTANCE.getEndpointSNS(); - checkAndSetEndpoint(endpoint); - } + @org.junit.jupiter.api.Test + @Order(2) + public void testCheckPort2() { + String endpoint = Localstack.INSTANCE.getEndpointSNS(); + checkAndSetEndpoint(endpoint); } + } diff --git a/src/test/java/cloud/localstack/awssdkv2/BasicFeaturesSDKV2Test.java b/src/test/java/cloud/localstack/awssdkv2/BasicFeaturesSDKV2Test.java index 6f131f0..1f85a84 100644 --- a/src/test/java/cloud/localstack/awssdkv2/BasicFeaturesSDKV2Test.java +++ b/src/test/java/cloud/localstack/awssdkv2/BasicFeaturesSDKV2Test.java @@ -4,45 +4,71 @@ import cloud.localstack.LocalstackTestRunner; import cloud.localstack.docker.annotation.LocalstackDockerProperties; import cloud.localstack.sample.LambdaHandler; -import cloud.localstack.awssdkv2.LocalTestUtilSDKV2; - +import io.thundra.jexter.junit4.core.sysprop.SystemPropertySandboxRule; import lombok.val; - +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.runner.RunWith; +import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.core.SdkSystemSetting; -import software.amazon.awssdk.services.cloudwatch.*; -import software.amazon.awssdk.services.cloudwatch.model.*; +import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; +import software.amazon.awssdk.services.cloudwatch.model.Dimension; +import software.amazon.awssdk.services.cloudwatch.model.MetricDatum; +import software.amazon.awssdk.services.cloudwatch.model.PutMetricDataRequest; +import software.amazon.awssdk.services.cloudwatch.model.PutMetricDataResponse; +import software.amazon.awssdk.services.cloudwatch.model.StandardUnit; import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; -import software.amazon.awssdk.services.dynamodb.model.*; -import software.amazon.awssdk.services.iam.*; -import software.amazon.awssdk.services.iam.model.*; -import software.amazon.awssdk.services.iam.paginators.ListUsersPublisher; -import software.amazon.awssdk.services.kinesis.*; -import software.amazon.awssdk.services.kinesis.model.*; +import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition; +import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest; +import software.amazon.awssdk.services.dynamodb.model.CreateTableResponse; +import software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest; +import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement; +import software.amazon.awssdk.services.dynamodb.model.KeyType; +import software.amazon.awssdk.services.dynamodb.model.ProvisionedThroughput; +import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; +import software.amazon.awssdk.services.iam.IamAsyncClient; +import software.amazon.awssdk.services.iam.model.CreateUserRequest; +import software.amazon.awssdk.services.iam.model.User; +import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; +import software.amazon.awssdk.services.kinesis.model.CreateStreamRequest; +import software.amazon.awssdk.services.kinesis.model.CreateStreamResponse; +import software.amazon.awssdk.services.kinesis.model.PutRecordRequest; import software.amazon.awssdk.services.lambda.model.CreateFunctionRequest; import software.amazon.awssdk.services.lambda.model.Runtime; -import software.amazon.awssdk.services.s3.*; -import software.amazon.awssdk.services.s3.model.*; +import software.amazon.awssdk.services.s3.S3AsyncClient; +import software.amazon.awssdk.services.s3.model.Bucket; +import software.amazon.awssdk.services.s3.model.CreateBucketRequest; +import software.amazon.awssdk.services.s3.model.CreateBucketResponse; +import software.amazon.awssdk.services.s3.model.ListBucketsRequest; +import software.amazon.awssdk.services.s3.model.ListBucketsResponse; import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClient; -import software.amazon.awssdk.services.secretsmanager.model.*; -import software.amazon.awssdk.services.sns.*; -import software.amazon.awssdk.services.sns.model.*; -import software.amazon.awssdk.services.sqs.*; -import software.amazon.awssdk.services.sqs.model.*; -import software.amazon.awssdk.services.ssm.*; -import software.amazon.awssdk.services.ssm.model.*; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; +import software.amazon.awssdk.services.secretsmanager.model.CreateSecretRequest; +import software.amazon.awssdk.services.secretsmanager.model.DeleteSecretRequest; +import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest; +import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse; +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 software.amazon.awssdk.services.sqs.SqsAsyncClient; +import software.amazon.awssdk.services.sqs.model.CreateQueueRequest; +import software.amazon.awssdk.services.sqs.model.CreateQueueResponse; +import software.amazon.awssdk.services.ssm.SsmAsyncClient; +import software.amazon.awssdk.services.ssm.model.GetParameterRequest; +import software.amazon.awssdk.services.ssm.model.GetParameterResponse; +import software.amazon.awssdk.services.ssm.model.PutParameterRequest; -import java.util.*; import java.nio.ByteBuffer; +import java.time.Instant; +import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; -import java.time.ZoneOffset; -import java.time.Instant; - -import software.amazon.awssdk.core.SdkBytes; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -51,7 +77,12 @@ @LocalstackDockerProperties(ignoreDockerRunErrors=true) public class BasicFeaturesSDKV2Test { - static { + // Revert system properties to the back after the test suite (class) + @ClassRule + public static SystemPropertySandboxRule systemPropertySandboxRule = new SystemPropertySandboxRule(); + + @BeforeClass + public static void beforeAll() { System.setProperty(SdkSystemSetting.CBOR_ENABLED.property(), "false"); } @@ -318,4 +349,5 @@ public void testIAMListUserPagination() throws Exception { TimeUnit.SECONDS.sleep(2); Assert.assertTrue(userFound.get()); } + } diff --git a/src/test/java/cloud/localstack/awssdkv2/KinesisSchedulerTest.java b/src/test/java/cloud/localstack/awssdkv2/KinesisSchedulerTest.java index b9502e1..4d9d397 100644 --- a/src/test/java/cloud/localstack/awssdkv2/KinesisSchedulerTest.java +++ b/src/test/java/cloud/localstack/awssdkv2/KinesisSchedulerTest.java @@ -3,6 +3,11 @@ import cloud.localstack.awssdkv2.consumer.DeliveryStatusRecordProcessorFactory; import cloud.localstack.awssdkv2.consumer.EventProcessor; import cloud.localstack.docker.annotation.LocalstackDockerProperties; +import io.thundra.jexter.junit4.core.sysprop.SystemPropertySandboxRule; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.core.SdkSystemSetting; import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient; @@ -15,24 +20,27 @@ import software.amazon.kinesis.common.ConfigsBuilder; import software.amazon.kinesis.coordinator.Scheduler; import software.amazon.kinesis.metrics.NullMetricsFactory; +import software.amazon.kinesis.retrieval.RetrievalConfig; +import software.amazon.kinesis.retrieval.polling.PollingConfig; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.*; +import java.util.UUID; import java.util.concurrent.TimeUnit; @LocalstackDockerProperties(ignoreDockerRunErrors = true) public class KinesisSchedulerTest extends PowerMockLocalStack { + String streamName = "test" + UUID.randomUUID().toString(); String workerId = UUID.randomUUID().toString(); String testMessage = "hello, world"; Integer consumerCreationTime = 15; //35 for real AWS + // Revert system properties to the back after the test + @Rule + public SystemPropertySandboxRule systemPropertySandboxRule = new SystemPropertySandboxRule(); + @Before public void mockServicesForScheduler() { - // System.setProperty(SdkSystemSetting.CBOR_ENABLED.property(), "false"); + System.setProperty(SdkSystemSetting.CBOR_ENABLED.property(), "false"); PowerMockLocalStack.mockCloudWatchAsyncClient(); PowerMockLocalStack.mockDynamoDBAsync(); PowerMockLocalStack.mockKinesisAsync(); @@ -51,7 +59,14 @@ public void schedulerTest() throws Exception { DeliveryStatusRecordProcessorFactory processorFactory = new DeliveryStatusRecordProcessorFactory(eventProcessor); ConfigsBuilder configsBuilder = new ConfigsBuilder(streamName, streamName, kinesisAsyncClient, dynamoAsyncClient, - cloudWatchAsyncClient, workerId, processorFactory); + cloudWatchAsyncClient, workerId, processorFactory) { + @Override + public RetrievalConfig retrievalConfig() { + RetrievalConfig retrievalConfig = super.retrievalConfig(); + retrievalConfig.retrievalSpecificConfig(new PollingConfig(streamName(), kinesisClient())); + return retrievalConfig; + } + }; Scheduler scheduler = createScheduler(configsBuilder); new Thread(scheduler).start(); diff --git a/src/test/java/cloud/localstack/awssdkv2/KinesisV2ConsumerTest.java b/src/test/java/cloud/localstack/awssdkv2/KinesisV2ConsumerTest.java index 93a9aa7..ee9c28a 100644 --- a/src/test/java/cloud/localstack/awssdkv2/KinesisV2ConsumerTest.java +++ b/src/test/java/cloud/localstack/awssdkv2/KinesisV2ConsumerTest.java @@ -2,17 +2,24 @@ import cloud.localstack.LocalstackTestRunner; import cloud.localstack.docker.annotation.LocalstackDockerProperties; - +import io.thundra.jexter.junit4.core.sysprop.SystemPropertySandboxRule; import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; - -import software.amazon.awssdk.services.kinesis.model.CreateStreamRequest; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.core.SdkSystemSetting; import software.amazon.awssdk.services.kinesis.KinesisAsyncClient; -import software.amazon.awssdk.core.*; -import software.amazon.awssdk.services.kinesis.model.*; +import software.amazon.awssdk.services.kinesis.model.CreateStreamRequest; +import software.amazon.awssdk.services.kinesis.model.CreateStreamResponse; +import software.amazon.awssdk.services.kinesis.model.GetRecordsRequest; +import software.amazon.awssdk.services.kinesis.model.GetRecordsResponse; +import software.amazon.awssdk.services.kinesis.model.GetShardIteratorRequest; +import software.amazon.awssdk.services.kinesis.model.PutRecordRequest; +import software.amazon.awssdk.services.kinesis.model.ShardIteratorType; -import java.util.*; +import java.util.List; +import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -20,8 +27,14 @@ @LocalstackDockerProperties(ignoreDockerRunErrors = true) public class KinesisV2ConsumerTest { + // Revert system properties to the back after the test suite (class) + @Rule + public SystemPropertySandboxRule systemPropertySandboxRule = new SystemPropertySandboxRule(); + @Test public void testGetRecordCBOR() throws Exception { + System.setProperty(SdkSystemSetting.CBOR_ENABLED.property(), "true"); + String streamName = "test-s-" + UUID.randomUUID().toString(); KinesisAsyncClient kinesisClient = TestUtils.getClientKinesisAsyncV2(); @@ -50,7 +63,7 @@ public void testGetRecordCBOR() throws Exception { @Test public void testGetRecordJSON() throws Exception { System.setProperty(SdkSystemSetting.CBOR_ENABLED.property(), "false"); - this.testGetRecordCBOR(); - System.setProperty(SdkSystemSetting.CBOR_ENABLED.property(), "true"); + testGetRecordCBOR(); } + } \ No newline at end of file diff --git a/src/test/java/cloud/localstack/deprecated/BasicFunctionalityTest.java b/src/test/java/cloud/localstack/deprecated/BasicFunctionalityTest.java index 78d5e19..be1afee 100644 --- a/src/test/java/cloud/localstack/deprecated/BasicFunctionalityTest.java +++ b/src/test/java/cloud/localstack/deprecated/BasicFunctionalityTest.java @@ -32,8 +32,11 @@ import com.amazonaws.services.sqs.model.ReceiveMessageResult; import com.amazonaws.services.sqs.model.SendMessageRequest; import com.amazonaws.services.sqs.model.SendMessageResult; +import io.thundra.jexter.junit4.core.envvar.EnvironmentVariableSandboxRule; +import io.thundra.jexter.junit5.core.envvar.EnvironmentVariableSandbox; import org.assertj.core.api.Assertions; import org.junit.Assert; +import org.junit.ClassRule; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; @@ -56,20 +59,27 @@ @ExtendWith(LocalstackExtension.class) @org.junit.Ignore @org.junit.jupiter.api.Disabled +// [JUnit5] Revert environment variables to the back after the test suite (class) +@EnvironmentVariableSandbox public class BasicFunctionalityTest { static { - /* - * Need to disable CBOR protocol, see: - * https://github.com/mhart/kinesalite/blob/master/README.md#cbor-protocol-issues-with-the-java-sdk - */ - CommonUtils.setEnv("AWS_CBOR_DISABLE", "1"); /* Disable SSL certificate checks for local testing */ if (Localstack.useSSL()) { CommonUtils.disableSslCertChecking(); } } + // [JUnit4] Revert environment variables to the back after the test suite (class) + @ClassRule + public static EnvironmentVariableSandboxRule environmentVariableSandboxRule = new EnvironmentVariableSandboxRule(); + + @org.junit.BeforeClass + @org.junit.jupiter.api.BeforeAll + public static void beforeAll() { + CommonUtils.setEnv("AWS_CBOR_DISABLE", "1"); + } + @org.junit.Test @org.junit.jupiter.api.Test public void testDevEnvironmentSetup() {