Skip to content

Commit a4d4762

Browse files
authored
Introduce aws-fixture-utils (#119319)
Extracts some common utils for creating AWS service test fixtures out of the `s3-fixture` module and into a separate library independent of S3.
1 parent f333a79 commit a4d4762

File tree

19 files changed

+197
-107
lines changed

19 files changed

+197
-107
lines changed

modules/repository-s3/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,14 @@ dependencies {
4444
internalClusterTestRuntimeOnly "org.slf4j:slf4j-simple:${versions.slf4j}"
4545

4646
yamlRestTestImplementation project(':modules:repository-s3')
47+
yamlRestTestImplementation project(':test:fixtures:aws-fixture-utils')
4748
yamlRestTestImplementation project(':test:fixtures:s3-fixture')
4849
yamlRestTestImplementation project(':test:fixtures:testcontainer-utils')
4950
yamlRestTestImplementation project(':test:framework')
5051
yamlRestTestRuntimeOnly "org.slf4j:slf4j-simple:${versions.slf4j}"
5152

5253
javaRestTestImplementation project(':modules:repository-s3')
54+
javaRestTestImplementation project(':test:fixtures:aws-fixture-utils')
5355
javaRestTestImplementation project(':test:fixtures:aws-sts-fixture')
5456
javaRestTestImplementation project(':test:fixtures:ec2-imds-fixture')
5557
javaRestTestImplementation project(':test:fixtures:minio-fixture')

modules/repository-s3/src/javaRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3BasicCredentialsRestIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.junit.rules.RuleChain;
2121
import org.junit.rules.TestRule;
2222

23+
import static fixture.aws.AwsCredentialsUtils.fixedAccessKey;
24+
2325
@ThreadLeakFilters(filters = { TestContainersThreadFilter.class })
2426
@ThreadLeakScope(ThreadLeakScope.Scope.NONE) // https://github.com/elastic/elasticsearch/issues/102482
2527
public class RepositoryS3BasicCredentialsRestIT extends AbstractRepositoryS3RestTestCase {
@@ -31,7 +33,7 @@ public class RepositoryS3BasicCredentialsRestIT extends AbstractRepositoryS3Rest
3133
private static final String SECRET_KEY = PREFIX + "secret-key";
3234
private static final String CLIENT = "basic_credentials_client";
3335

34-
private static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, S3HttpFixture.fixedAccessKey(ACCESS_KEY));
36+
private static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, fixedAccessKey(ACCESS_KEY));
3537

3638
public static ElasticsearchCluster cluster = ElasticsearchCluster.local()
3739
.module("repository-s3")

modules/repository-s3/src/javaRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3EcsCredentialsRestIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99

1010
package org.elasticsearch.repositories.s3;
1111

12+
import fixture.aws.DynamicAwsCredentials;
1213
import fixture.aws.imds.Ec2ImdsHttpFixture;
1314
import fixture.aws.imds.Ec2ImdsServiceBuilder;
1415
import fixture.aws.imds.Ec2ImdsVersion;
15-
import fixture.s3.DynamicS3Credentials;
1616
import fixture.s3.S3HttpFixture;
1717

1818
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
@@ -35,14 +35,14 @@ public class RepositoryS3EcsCredentialsRestIT extends AbstractRepositoryS3RestTe
3535
private static final String BASE_PATH = PREFIX + "base_path";
3636
private static final String CLIENT = "ecs_credentials_client";
3737

38-
private static final DynamicS3Credentials dynamicS3Credentials = new DynamicS3Credentials();
38+
private static final DynamicAwsCredentials dynamicCredentials = new DynamicAwsCredentials();
3939

4040
private static final Ec2ImdsHttpFixture ec2ImdsHttpFixture = new Ec2ImdsHttpFixture(
41-
new Ec2ImdsServiceBuilder(Ec2ImdsVersion.V1).newCredentialsConsumer(dynamicS3Credentials::addValidCredentials)
41+
new Ec2ImdsServiceBuilder(Ec2ImdsVersion.V1).newCredentialsConsumer(dynamicCredentials::addValidCredentials)
4242
.alternativeCredentialsEndpoints(Set.of("/ecs_credentials_endpoint"))
4343
);
4444

45-
private static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, dynamicS3Credentials::isAuthorized);
45+
private static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, dynamicCredentials::isAuthorized);
4646

4747
public static ElasticsearchCluster cluster = ElasticsearchCluster.local()
4848
.module("repository-s3")

modules/repository-s3/src/javaRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3ImdsV1CredentialsRestIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99

1010
package org.elasticsearch.repositories.s3;
1111

12+
import fixture.aws.DynamicAwsCredentials;
1213
import fixture.aws.imds.Ec2ImdsHttpFixture;
1314
import fixture.aws.imds.Ec2ImdsServiceBuilder;
1415
import fixture.aws.imds.Ec2ImdsVersion;
15-
import fixture.s3.DynamicS3Credentials;
1616
import fixture.s3.S3HttpFixture;
1717

1818
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
@@ -33,13 +33,13 @@ public class RepositoryS3ImdsV1CredentialsRestIT extends AbstractRepositoryS3Res
3333
private static final String BASE_PATH = PREFIX + "base_path";
3434
private static final String CLIENT = "imdsv1_credentials_client";
3535

36-
private static final DynamicS3Credentials dynamicS3Credentials = new DynamicS3Credentials();
36+
private static final DynamicAwsCredentials dynamicCredentials = new DynamicAwsCredentials();
3737

3838
private static final Ec2ImdsHttpFixture ec2ImdsHttpFixture = new Ec2ImdsHttpFixture(
39-
new Ec2ImdsServiceBuilder(Ec2ImdsVersion.V1).newCredentialsConsumer(dynamicS3Credentials::addValidCredentials)
39+
new Ec2ImdsServiceBuilder(Ec2ImdsVersion.V1).newCredentialsConsumer(dynamicCredentials::addValidCredentials)
4040
);
4141

42-
private static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, dynamicS3Credentials::isAuthorized);
42+
private static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, dynamicCredentials::isAuthorized);
4343

4444
public static ElasticsearchCluster cluster = ElasticsearchCluster.local()
4545
.module("repository-s3")

modules/repository-s3/src/javaRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3ImdsV2CredentialsRestIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99

1010
package org.elasticsearch.repositories.s3;
1111

12+
import fixture.aws.DynamicAwsCredentials;
1213
import fixture.aws.imds.Ec2ImdsHttpFixture;
1314
import fixture.aws.imds.Ec2ImdsServiceBuilder;
1415
import fixture.aws.imds.Ec2ImdsVersion;
15-
import fixture.s3.DynamicS3Credentials;
1616
import fixture.s3.S3HttpFixture;
1717

1818
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
@@ -33,13 +33,13 @@ public class RepositoryS3ImdsV2CredentialsRestIT extends AbstractRepositoryS3Res
3333
private static final String BASE_PATH = PREFIX + "base_path";
3434
private static final String CLIENT = "imdsv2_credentials_client";
3535

36-
private static final DynamicS3Credentials dynamicS3Credentials = new DynamicS3Credentials();
36+
private static final DynamicAwsCredentials dynamicCredentials = new DynamicAwsCredentials();
3737

3838
private static final Ec2ImdsHttpFixture ec2ImdsHttpFixture = new Ec2ImdsHttpFixture(
39-
new Ec2ImdsServiceBuilder(Ec2ImdsVersion.V2).newCredentialsConsumer(dynamicS3Credentials::addValidCredentials)
39+
new Ec2ImdsServiceBuilder(Ec2ImdsVersion.V2).newCredentialsConsumer(dynamicCredentials::addValidCredentials)
4040
);
4141

42-
private static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, dynamicS3Credentials::isAuthorized);
42+
private static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, dynamicCredentials::isAuthorized);
4343

4444
public static ElasticsearchCluster cluster = ElasticsearchCluster.local()
4545
.module("repository-s3")

modules/repository-s3/src/javaRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3RestReloadCredentialsIT.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import java.io.IOException;
2828

29+
import static fixture.aws.AwsCredentialsUtils.mutableAccessKey;
2930
import static org.hamcrest.CoreMatchers.containsString;
3031
import static org.hamcrest.Matchers.allOf;
3132
import static org.hamcrest.Matchers.equalTo;
@@ -38,12 +39,7 @@ public class RepositoryS3RestReloadCredentialsIT extends ESRestTestCase {
3839

3940
private static volatile String repositoryAccessKey;
4041

41-
public static final S3HttpFixture s3Fixture = new S3HttpFixture(
42-
true,
43-
BUCKET,
44-
BASE_PATH,
45-
S3HttpFixture.mutableAccessKey(() -> repositoryAccessKey)
46-
);
42+
public static final S3HttpFixture s3Fixture = new S3HttpFixture(true, BUCKET, BASE_PATH, mutableAccessKey(() -> repositoryAccessKey));
4743

4844
private static final MutableSettingsProvider keystoreSettings = new MutableSettingsProvider();
4945

modules/repository-s3/src/javaRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3SessionCredentialsRestIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import org.junit.rules.RuleChain;
2121
import org.junit.rules.TestRule;
2222

23+
import static fixture.aws.AwsCredentialsUtils.fixedAccessKeyAndToken;
24+
2325
@ThreadLeakFilters(filters = { TestContainersThreadFilter.class })
2426
@ThreadLeakScope(ThreadLeakScope.Scope.NONE) // https://github.com/elastic/elasticsearch/issues/102482
2527
public class RepositoryS3SessionCredentialsRestIT extends AbstractRepositoryS3RestTestCase {
@@ -36,7 +38,7 @@ public class RepositoryS3SessionCredentialsRestIT extends AbstractRepositoryS3Re
3638
true,
3739
BUCKET,
3840
BASE_PATH,
39-
S3HttpFixture.fixedAccessKeyAndToken(ACCESS_KEY, SESSION_TOKEN)
41+
fixedAccessKeyAndToken(ACCESS_KEY, SESSION_TOKEN)
4042
);
4143

4244
public static ElasticsearchCluster cluster = ElasticsearchCluster.local()

modules/repository-s3/src/javaRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3StsCredentialsRestIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
package org.elasticsearch.repositories.s3;
1111

12+
import fixture.aws.DynamicAwsCredentials;
1213
import fixture.aws.sts.AwsStsHttpFixture;
13-
import fixture.s3.DynamicS3Credentials;
1414
import fixture.s3.S3HttpFixture;
1515

1616
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
@@ -32,17 +32,17 @@ public class RepositoryS3StsCredentialsRestIT extends AbstractRepositoryS3RestTe
3232
private static final String BASE_PATH = PREFIX + "base_path";
3333
private static final String CLIENT = "sts_credentials_client";
3434

35-
private static final DynamicS3Credentials dynamicS3Credentials = new DynamicS3Credentials();
35+
private static final DynamicAwsCredentials dynamicCredentials = new DynamicAwsCredentials();
3636

37-
private static final S3HttpFixture s3HttpFixture = new S3HttpFixture(true, BUCKET, BASE_PATH, dynamicS3Credentials::isAuthorized);
37+
private static final S3HttpFixture s3HttpFixture = new S3HttpFixture(true, BUCKET, BASE_PATH, dynamicCredentials::isAuthorized);
3838

3939
private static final String WEB_IDENTITY_TOKEN_FILE_CONTENTS = """
4040
Atza|IQEBLjAsAhRFiXuWpUXuRvQ9PZL3GMFcYevydwIUFAHZwXZXXXXXXXXJnrulxKDHwy87oGKPznh0D6bEQZTSCzyoCtL_8S07pLpr0zMbn6w1lfVZKNTBdDans\
4141
FBmtGnIsIapjI6xKR02Yc_2bQ8LZbUXSGm6Ry6_BG7PrtLZtj_dfCTj92xNGed-CrKqjG7nPBjNIL016GGvuS5gSvPRUxWES3VYfm1wl7WTI7jn-Pcb6M-buCgHhFO\
4242
zTQxod27L9CqnOLio7N3gZAGpsp6n1-AJBOCJckcyXe2c6uD0srOJeZlKUm2eTDVMf8IehDVI0r1QOnTV6KzzAI3OY87Vd_cVMQ""";
4343

4444
private static final AwsStsHttpFixture stsHttpFixture = new AwsStsHttpFixture(
45-
dynamicS3Credentials::addValidCredentials,
45+
dynamicCredentials::addValidCredentials,
4646
WEB_IDENTITY_TOKEN_FILE_CONTENTS
4747
);
4848

modules/repository-s3/src/yamlRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3ClientYamlTestSuiteIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import org.junit.rules.RuleChain;
2424
import org.junit.rules.TestRule;
2525

26+
import static fixture.aws.AwsCredentialsUtils.fixedAccessKey;
27+
2628
@ThreadLeakFilters(filters = { TestContainersThreadFilter.class })
2729
@ThreadLeakScope(ThreadLeakScope.Scope.NONE) // https://github.com/elastic/elasticsearch/issues/102482
2830
public class RepositoryS3ClientYamlTestSuiteIT extends AbstractRepositoryS3ClientYamlTestSuiteIT {
@@ -34,7 +36,7 @@ public class RepositoryS3ClientYamlTestSuiteIT extends AbstractRepositoryS3Clien
3436
true,
3537
"bucket",
3638
"base_path_integration_tests",
37-
S3HttpFixture.fixedAccessKey(ACCESS_KEY)
39+
fixedAccessKey(ACCESS_KEY)
3840
);
3941

4042
public static ElasticsearchCluster cluster = ElasticsearchCluster.local()

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ List projects = [
8787
'distribution:tools:ansi-console',
8888
'server',
8989
'test:framework',
90+
'test:fixtures:aws-fixture-utils',
9091
'test:fixtures:aws-sts-fixture',
9192
'test:fixtures:azure-fixture',
9293
'test:fixtures:ec2-imds-fixture',

0 commit comments

Comments
 (0)