Skip to content

Commit d2edc8f

Browse files
author
Serkan ÖZAL
authored
fix failing tests with Jexter rules/extensions (#71)
1 parent 7d62332 commit d2edc8f

File tree

9 files changed

+216
-115
lines changed

9 files changed

+216
-115
lines changed

pom.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
<aws.sdkv2.version>2.15.79</aws.sdkv2.version>
3535
<commons.lang3.version>3.5</commons.lang3.version>
3636
<lambda.core.version>1.2.0</lambda.core.version>
37+
<jexter.version>1.0.1</jexter.version>
3738
</properties>
3839

3940
<dependencies>
@@ -166,6 +167,24 @@
166167
<version>2.12.1</version>
167168
<scope>test</scope>
168169
</dependency>
170+
<dependency>
171+
<groupId>com.fasterxml.jackson.dataformat</groupId>
172+
<artifactId>jackson-dataformat-cbor</artifactId>
173+
<version>2.12.1</version>
174+
<scope>test</scope>
175+
</dependency>
176+
<dependency>
177+
<groupId>io.thundra</groupId>
178+
<artifactId>jexter-junit4-core</artifactId>
179+
<version>${jexter.version}</version>
180+
<scope>test</scope>
181+
</dependency>
182+
<dependency>
183+
<groupId>io.thundra</groupId>
184+
<artifactId>jexter-junit5-core</artifactId>
185+
<version>${jexter.version}</version>
186+
<scope>test</scope>
187+
</dependency>
169188
</dependencies>
170189

171190
<profiles>

src/test/java/cloud/localstack/awssdkv1/KinesisConsumerTest.java

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,45 @@
11
package cloud.localstack.awssdkv1;
22

33
import cloud.localstack.LocalstackTestRunner;
4-
import cloud.localstack.docker.annotation.*;
5-
4+
import cloud.localstack.docker.annotation.LocalstackDockerProperties;
5+
import com.amazonaws.SDKGlobalConfiguration;
66
import com.amazonaws.services.kinesis.AmazonKinesisAsync;
77
import com.amazonaws.services.kinesis.model.CreateStreamRequest;
8-
import com.amazonaws.services.kinesis.model.PutRecordRequest;
98
import com.amazonaws.services.kinesis.model.GetRecordsRequest;
109
import com.amazonaws.services.kinesis.model.GetRecordsResult;
1110
import com.amazonaws.services.kinesis.model.GetShardIteratorRequest;
12-
import com.amazonaws.SDKGlobalConfiguration;
11+
import com.amazonaws.services.kinesis.model.PutRecordRequest;
1312
import com.amazonaws.services.kinesis.model.ResourceInUseException;
14-
13+
import io.thundra.jexter.junit4.core.sysprop.SystemPropertySandboxRule;
1514
import org.junit.Assert;
15+
import org.junit.Rule;
1616
import org.junit.Test;
1717
import org.junit.runner.RunWith;
1818

19-
import java.util.*;
19+
import java.nio.ByteBuffer;
20+
import java.util.List;
21+
import java.util.UUID;
2022
import java.util.concurrent.TimeUnit;
2123
import java.util.stream.Collectors;
22-
import java.nio.ByteBuffer;
2324

2425
@RunWith(LocalstackTestRunner.class)
2526
@LocalstackDockerProperties(ignoreDockerRunErrors=true)
2627
public class KinesisConsumerTest {
2728

29+
// Revert system properties to the back after the test
30+
@Rule
31+
public SystemPropertySandboxRule systemPropertySandboxRule = new SystemPropertySandboxRule();
32+
2833
@Test
2934
public void testGetRecordCBOR() throws Exception {
30-
String valueBefore = this.getCborDisableConfig();
3135
System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, "false");
32-
try {
33-
this.runGetRecord();
34-
} finally {
35-
System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, valueBefore);
36-
}
36+
runGetRecord();
3737
}
3838

3939
@Test
4040
public void testGetRecordJSON() throws Exception {
41-
String valueBefore = this.getCborDisableConfig();
4241
System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, "true");
43-
try {
44-
this.runGetRecord();
45-
} finally {
46-
System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, valueBefore);
47-
}
48-
}
49-
50-
private String getCborDisableConfig() {
51-
String valueBefore = System.getProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY);
52-
valueBefore = valueBefore == null ? "" : valueBefore;
53-
return valueBefore;
42+
runGetRecord();
5443
}
5544

5645
private void runGetRecord() throws Exception {

src/test/java/cloud/localstack/awssdkv1/docker/BasicDockerFunctionalityTest.java

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
package cloud.localstack.docker;
22

3+
import cloud.localstack.CommonUtils;
34
import cloud.localstack.Localstack;
45
import cloud.localstack.LocalstackTestRunner;
5-
import cloud.localstack.docker.annotation.LocalstackDockerProperties;
6-
import cloud.localstack.CommonUtils;
76
import cloud.localstack.awssdkv1.TestUtils;
8-
7+
import cloud.localstack.docker.annotation.LocalstackDockerProperties;
98
import com.amazon.sqs.javamessaging.SQSConnection;
109
import com.amazon.sqs.javamessaging.SQSConnectionFactory;
1110
import com.amazonaws.auth.AWSStaticCredentialsProvider;
12-
import com.amazonaws.services.cloudwatch.*;
13-
import com.amazonaws.services.cloudwatch.model.*;
14-
import com.amazonaws.services.identitymanagement.AmazonIdentityManagement;
15-
import com.amazonaws.services.identitymanagement.model.CreateRoleRequest;
16-
import com.amazonaws.services.identitymanagement.model.EntityAlreadyExistsException;
11+
import com.amazonaws.services.cloudwatch.AmazonCloudWatch;
12+
import com.amazonaws.services.cloudwatch.model.Dimension;
13+
import com.amazonaws.services.cloudwatch.model.MetricDatum;
14+
import com.amazonaws.services.cloudwatch.model.PutMetricDataRequest;
15+
import com.amazonaws.services.cloudwatch.model.PutMetricDataResult;
16+
import com.amazonaws.services.cloudwatch.model.StandardUnit;
1717
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
1818
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
1919
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
@@ -22,6 +22,9 @@
2222
import com.amazonaws.services.dynamodbv2.model.ListTablesResult;
2323
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
2424
import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType;
25+
import com.amazonaws.services.identitymanagement.AmazonIdentityManagement;
26+
import com.amazonaws.services.identitymanagement.model.CreateRoleRequest;
27+
import com.amazonaws.services.identitymanagement.model.EntityAlreadyExistsException;
2528
import com.amazonaws.services.kinesis.AmazonKinesis;
2629
import com.amazonaws.services.kinesis.model.CreateStreamRequest;
2730
import com.amazonaws.services.kinesis.model.ListStreamsResult;
@@ -37,10 +40,14 @@
3740
import com.amazonaws.services.sqs.model.CreateQueueRequest;
3841
import com.amazonaws.services.sqs.model.ListQueuesResult;
3942
import com.amazonaws.util.IOUtils;
43+
import io.thundra.jexter.junit4.core.envvar.EnvironmentVariableSandboxRule;
44+
import io.thundra.jexter.junit4.core.sysprop.SystemPropertySandboxRule;
45+
import io.thundra.jexter.junit5.core.envvar.EnvironmentVariableSandbox;
4046
import org.assertj.core.api.Assertions;
47+
import org.junit.Assert;
48+
import org.junit.ClassRule;
4149
import org.junit.jupiter.api.extension.ExtendWith;
4250
import org.junit.runner.RunWith;
43-
import org.junit.Assert;
4451

4552
import javax.jms.MessageConsumer;
4653
import javax.jms.MessageProducer;
@@ -56,9 +63,17 @@
5663
@RunWith(LocalstackTestRunner.class)
5764
@ExtendWith(LocalstackDockerExtension.class)
5865
@LocalstackDockerProperties(randomizePorts = true)
66+
// [JUnit5] Revert environment variables to the back after the test suite (class)
67+
@EnvironmentVariableSandbox
5968
public class BasicDockerFunctionalityTest {
6069

61-
static {
70+
// [JUnit4] Revert environment variables to the back after the test suite (class)
71+
@ClassRule
72+
public static EnvironmentVariableSandboxRule environmentVariableSandboxRule = new EnvironmentVariableSandboxRule();
73+
74+
@org.junit.BeforeClass
75+
@org.junit.jupiter.api.BeforeAll
76+
public static void beforeAll() {
6277
CommonUtils.setEnv("AWS_CBOR_DISABLE", "1");
6378
}
6479

@@ -228,4 +243,5 @@ private SQSConnection createSQSConnection() throws Exception {
228243
new AWSStaticCredentialsProvider(TestUtils.TEST_CREDENTIALS)).build();
229244
return connectionFactory.createConnection();
230245
}
246+
231247
}

src/test/java/cloud/localstack/awssdkv1/docker/DockerOnlySQSFunctionalityTest.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
import com.amazonaws.services.sqs.AmazonSQS;
1313
import com.amazonaws.services.sqs.model.CreateQueueRequest;
1414
import com.amazonaws.services.sqs.model.ListQueuesResult;
15+
import io.thundra.jexter.junit4.core.envvar.EnvironmentVariableSandboxRule;
16+
import io.thundra.jexter.junit5.core.envvar.EnvironmentVariableSandbox;
1517
import org.assertj.core.api.Assertions;
18+
import org.junit.ClassRule;
1619
import org.junit.jupiter.api.extension.ExtendWith;
1720
import org.junit.runner.RunWith;
1821

@@ -27,9 +30,17 @@
2730
@RunWith(LocalstackTestRunner.class)
2831
@ExtendWith(LocalstackDockerExtension.class)
2932
@LocalstackDockerProperties(randomizePorts = true, services = "sqs")
33+
// [JUnit5] Revert environment variables to the back after the test suite (class)
34+
@EnvironmentVariableSandbox
3035
public class DockerOnlySQSFunctionalityTest {
3136

32-
static {
37+
// [JUnit4] Revert environment variables to the back after the test suite (class)
38+
@ClassRule
39+
public static EnvironmentVariableSandboxRule environmentVariableSandboxRule = new EnvironmentVariableSandboxRule();
40+
41+
@org.junit.BeforeClass
42+
@org.junit.jupiter.api.BeforeAll
43+
public static void beforeAll() {
3344
CommonUtils.setEnv("AWS_CBOR_DISABLE", "1");
3445
}
3546

@@ -105,4 +116,5 @@ private SQSConnection createSQSConnection() throws Exception {
105116
new AWSStaticCredentialsProvider(TestUtils.TEST_CREDENTIALS)).build();
106117
return connectionFactory.createConnection();
107118
}
119+
108120
}

src/test/java/cloud/localstack/awssdkv1/docker/SingleContainerTest.java

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import cloud.localstack.Localstack;
44
import cloud.localstack.docker.annotation.LocalstackDockerProperties;
5-
6-
import org.junit.jupiter.api.*;
7-
import org.junit.jupiter.api.extension.ExtendWith;
8-
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
9-
import org.junit.Assert;
105
import org.junit.AfterClass;
6+
import org.junit.Assert;
7+
import org.junit.jupiter.api.AfterAll;
8+
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
9+
import org.junit.jupiter.api.Order;
10+
import org.junit.jupiter.api.TestMethodOrder;
11+
import org.junit.jupiter.api.extension.ExtendWith;
1112

13+
@ExtendWith(LocalstackDockerExtension.class)
14+
@LocalstackDockerProperties(randomizePorts=true, services={"sns"}, useSingleDockerContainer=true)
1215
@TestMethodOrder(OrderAnnotation.class)
1316
public class SingleContainerTest {
1417

@@ -21,32 +24,24 @@ static void checkAndSetEndpoint(String endpoint) {
2124
SNS_ENDPOINT = endpoint;
2225
}
2326

24-
@ExtendWith(LocalstackDockerExtension.class)
25-
@LocalstackDockerProperties(randomizePorts=true, services={"sns"}, useSingleDockerContainer=true)
26-
public static class ContainerTest1 {
27-
@org.junit.jupiter.api.Test
28-
@Order(1)
29-
public void testCheckPort() {
30-
String endpoint = Localstack.INSTANCE.getEndpointSNS();
31-
checkAndSetEndpoint(endpoint);
32-
}
27+
@AfterClass
28+
@AfterAll
29+
public static void tearDown() {
30+
Localstack.INSTANCE.stop();
3331
}
3432

35-
@ExtendWith(LocalstackDockerExtension.class)
36-
@LocalstackDockerProperties(randomizePorts=true, services={"sns"}, useSingleDockerContainer=true)
37-
public static class ContainerTest2 {
38-
39-
@AfterClass
40-
@AfterAll
41-
public static void tearDown() {
42-
Localstack.INSTANCE.stop();
43-
}
33+
@org.junit.jupiter.api.Test
34+
@Order(1)
35+
public void testCheckPort() {
36+
String endpoint = Localstack.INSTANCE.getEndpointSNS();
37+
checkAndSetEndpoint(endpoint);
38+
}
4439

45-
@org.junit.jupiter.api.Test
46-
@Order(2)
47-
public void testCheckPort() {
48-
String endpoint = Localstack.INSTANCE.getEndpointSNS();
49-
checkAndSetEndpoint(endpoint);
50-
}
40+
@org.junit.jupiter.api.Test
41+
@Order(2)
42+
public void testCheckPort2() {
43+
String endpoint = Localstack.INSTANCE.getEndpointSNS();
44+
checkAndSetEndpoint(endpoint);
5145
}
46+
5247
}

0 commit comments

Comments
 (0)