Skip to content

Commit d4d9bea

Browse files
Fix localstack cloudwatchlogs service (#2316)
1 parent a299547 commit d4d9bea

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

modules/localstack/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ dependencies {
66
compileOnly 'com.amazonaws:aws-java-sdk-s3:1.11.683'
77
testCompile 'com.amazonaws:aws-java-sdk-s3:1.11.683'
88
testCompile 'com.amazonaws:aws-java-sdk-sqs:1.11.636'
9+
testCompile 'com.amazonaws:aws-java-sdk-logs:1.11.636'
910
}

modules/localstack/src/main/java/org/testcontainers/containers/localstack/LocalStackContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public enum Service {
154154
SSM("ssm", 4583),
155155
SECRETSMANAGER("secretsmanager", 4584),
156156
STEPFUNCTIONS("stepfunctions", 4585),
157-
CLOUDWATCHLOGS("cloudwatchlogs", 4586),
157+
CLOUDWATCHLOGS("logs", 4586),
158158
STS("sts", 4592),
159159
IAM("iam", 4593);
160160

modules/localstack/src/test/java/org/testcontainers/containers/localstack/LocalstackContainerTest.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package org.testcontainers.containers.localstack;
22

33

4+
import com.amazonaws.services.logs.AWSLogs;
5+
import com.amazonaws.services.logs.AWSLogsClientBuilder;
6+
import com.amazonaws.services.logs.model.CreateLogGroupRequest;
7+
import com.amazonaws.services.logs.model.CreateLogGroupResult;
8+
import com.amazonaws.services.logs.model.DescribeLogGroupsRequest;
9+
import com.amazonaws.services.logs.model.LogGroup;
410
import com.amazonaws.services.s3.AmazonS3;
511
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
612
import com.amazonaws.services.s3.model.Bucket;
@@ -13,6 +19,7 @@
1319
import org.apache.commons.io.IOUtils;
1420
import org.junit.Assert;
1521
import org.junit.ClassRule;
22+
import org.junit.Ignore;
1623
import org.junit.Test;
1724
import org.junit.experimental.runners.Enclosed;
1825
import org.junit.runner.RunWith;
@@ -31,6 +38,7 @@
3138
import static org.rnorth.visibleassertions.VisibleAssertions.assertTrue;
3239
import static org.testcontainers.containers.localstack.LocalStackContainer.Service.S3;
3340
import static org.testcontainers.containers.localstack.LocalStackContainer.Service.SQS;
41+
import static org.testcontainers.containers.localstack.LocalStackContainer.Service.CLOUDWATCHLOGS;
3442

3543
/**
3644
* Tests for Localstack Container, used both in bridge network (exposed to host) and docker network modes.
@@ -48,7 +56,7 @@ public static class WithoutNetwork {
4856
// without_network {
4957
@ClassRule
5058
public static LocalStackContainer localstack = new LocalStackContainer()
51-
.withServices(S3, SQS);
59+
.withServices(S3, SQS, CLOUDWATCHLOGS);
5260
// }
5361

5462
@Test
@@ -95,6 +103,20 @@ public void sqsTestOverBridgeNetwork() {
95103
.count();
96104
assertEquals("the sent message can be received", 1L, messageCount);
97105
}
106+
107+
@Test
108+
@Ignore("Fails due to https://github.com/localstack/localstack/issues/1434")
109+
public void cloudWatchLogsTestOverBridgeNetwork() {
110+
AWSLogs logs = AWSLogsClientBuilder.standard()
111+
.withEndpointConfiguration(localstack.getEndpointConfiguration(CLOUDWATCHLOGS))
112+
.withCredentials(localstack.getDefaultCredentialsProvider()).build();
113+
114+
logs.createLogGroup(new CreateLogGroupRequest("foo"));
115+
116+
List<LogGroup> groups = logs.describeLogGroups().getLogGroups();
117+
assertEquals("One log group should be created", 1, groups.size());
118+
assertEquals("Name of created log group is [foo]", "foo", groups.get(0).getLogGroupName());
119+
}
98120
}
99121

100122
public static class WithNetwork {
@@ -105,7 +127,7 @@ public static class WithNetwork {
105127
public static LocalStackContainer localstackInDockerNetwork = new LocalStackContainer()
106128
.withNetwork(network)
107129
.withNetworkAliases("notthis", "localstack") // the last alias is used for HOSTNAME_EXTERNAL
108-
.withServices(S3, SQS);
130+
.withServices(S3, SQS, CLOUDWATCHLOGS);
109131
// }
110132

111133
@ClassRule
@@ -139,6 +161,11 @@ public void sqsTestOverDockerNetwork() throws Exception {
139161
assertTrue("the sent message can be received", message.contains("\"Body\": \"test\""));
140162
}
141163

164+
@Test
165+
public void cloudWatchLogsTestOverDockerNetwork() throws Exception {
166+
runAwsCliAgainstDockerNetworkContainer("logs create-log-group --log-group-name foo", CLOUDWATCHLOGS.getPort());
167+
}
168+
142169
private String runAwsCliAgainstDockerNetworkContainer(String command, final int port) throws Exception {
143170
final String[] commandParts = String.format("/usr/bin/aws --region eu-west-1 %s --endpoint-url http://localstack:%d --no-verify-ssl", command, port).split(" ");
144171
final Container.ExecResult execResult = awsCliInDockerNetwork.execInContainer(commandParts);

0 commit comments

Comments
 (0)