This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


The following commit(s) were added to refs/heads/main by this push:
     new 9d0942ee88 Fix #2398: Add AWS2 EKS integration test
9d0942ee88 is described below

commit 9d0942ee886792ade7bcc879079887d557a35269
Author: Ramu <[email protected]>
AuthorDate: Fri Aug 21 15:53:20 2026 +0530

    Fix #2398: Add AWS2 EKS integration test
---
 integration-test-groups/aws2/aws2-eks/README.adoc  |  37 ++++++
 integration-test-groups/aws2/aws2-eks/pom.xml      | 146 +++++++++++++++++++++
 .../component/aws2/eks/it/Aws2EksResource.java     | 132 +++++++++++++++++++
 .../src/main/resources/application.properties      |  24 ++++
 .../quarkus/component/aws2/eks/it/Aws2EksIT.java   |  37 +-----
 .../quarkus/component/aws2/eks/it/Aws2EksTest.java | 129 ++++++++++++++++++
 .../aws2/eks/it/Aws2EksTestEnvCustomizer.java      |  39 ++----
 ...quarkus.test.support.aws2.Aws2TestEnvCustomizer |   1 +
 integration-test-groups/aws2/pom.xml               |   1 +
 .../test/support/aws2/Aws2TestResource.java        |  10 ++
 .../camel/quarkus/test/support/aws2/Service.java   |   1 +
 integration-tests/aws2-grouped/pom.xml             |  27 ++++
 12 files changed, 522 insertions(+), 62 deletions(-)

diff --git a/integration-test-groups/aws2/aws2-eks/README.adoc 
b/integration-test-groups/aws2/aws2-eks/README.adoc
new file mode 100644
index 0000000000..2410f93279
--- /dev/null
+++ b/integration-test-groups/aws2/aws2-eks/README.adoc
@@ -0,0 +1,37 @@
+= AWS EKS tests
+
+By default, the integration tests run against a Floci container.
+
+== Running against real AWS
+
+Refer to the xref:../README.adoc[AWS 2 integration tests README] for general 
instructions on how to set up AWS credentials.
+
+The AWS credentials must have the following IAM permissions:
+
+* `eks:ListClusters`
+* `eks:DescribeCluster`
+* `eks:CreateCluster`
+* `eks:DeleteCluster`
+* `iam:PassRole`
+
+== Prerequisites for real AWS environment
+
+The following environment variables are required when running against a real 
AWS account. They are not needed for the default Floci run, which uses 
mock-friendly values.
+
+`AWS_EKS_ROLE_ARN`::
+Must point to an EKS cluster IAM role in the caller's AWS account. The role 
must have `AmazonEKSClusterPolicy` attached, and a trust relationship that 
allows the EKS service (`eks.amazonaws.com`) to assume it. The caller needs 
`iam:PassRole` for this specific role.
+
+`AWS_EKS_SUBNETS`::
+Must contain at least two suitable subnet IDs, in different Availability Zones.
+
+=== Running tests directly against real AWS
+
+[source,shell]
+----
+export AWS_ACCESS_KEY=<your-access-key-id>
+export AWS_SECRET_KEY=<your-secret-access-key>
+export AWS_REGION=us-east-1
+export CAMEL_QUARKUS_START_MOCK_BACKEND=false
+export AWS_EKS_ROLE_ARN=arn:aws:iam::<account-id>:role/<eks-cluster-role>
+export AWS_EKS_SUBNETS=<subnet-id-1>,<subnet-id-2>
+----
diff --git a/integration-test-groups/aws2/aws2-eks/pom.xml 
b/integration-test-groups/aws2/aws2-eks/pom.xml
new file mode 100644
index 0000000000..b61b43948d
--- /dev/null
+++ b/integration-test-groups/aws2/aws2-eks/pom.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://www.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.camel.quarkus</groupId>
+        <artifactId>camel-quarkus-build-parent-it</artifactId>
+        <version>3.40.0-SNAPSHOT</version>
+        <relativePath>../../../poms/build-parent-it/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>camel-quarkus-integration-test-aws2-eks</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: AWS 2 EKS</name>
+    <description>Integration tests for Camel Quarkus AWS 2 EKS 
extension</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-aws2-eks</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy-jackson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>software.amazon.awssdk</groupId>
+            <artifactId>eks</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- test dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.rest-assured</groupId>
+            <artifactId>rest-assured</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            
<artifactId>camel-quarkus-integration-tests-support-aws2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            
<artifactId>camel-quarkus-integration-tests-support-aws2</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.awaitility</groupId>
+            <artifactId>awaitility</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <profiles>
+        <profile>
+            <id>native</id>
+            <activation>
+                <property>
+                    <name>native</name>
+                </property>
+            </activation>
+            <properties>
+                <quarkus.native.enabled>true</quarkus.native.enabled>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-failsafe-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>integration-test</goal>
+                                    <goal>verify</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>virtualDependencies</id>
+            <activation>
+                <property>
+                    <name>!noVirtualDependencies</name>
+                </property>
+            </activation>
+            <dependencies>
+                <!-- The following dependencies guarantee that this module is 
built after them. You can update them by running `mvn process-resources 
-Pformat -N` from the source tree root directory -->
+                <dependency>
+                    <groupId>org.apache.camel.quarkus</groupId>
+                    <artifactId>camel-quarkus-aws2-eks-deployment</artifactId>
+                    <version>${project.version}</version>
+                    <type>pom</type>
+                    <scope>test</scope>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>*</groupId>
+                            <artifactId>*</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
+            </dependencies>
+        </profile>
+        <profile>
+            <id>skip-testcontainers-tests</id>
+            <activation>
+                <property>
+                    <name>skip-testcontainers-tests</name>
+                </property>
+            </activation>
+            <properties>
+                <skipTests>true</skipTests>
+            </properties>
+        </profile>
+    </profiles>
+
+</project>
diff --git 
a/integration-test-groups/aws2/aws2-eks/src/main/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksResource.java
 
b/integration-test-groups/aws2/aws2-eks/src/main/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksResource.java
new file mode 100644
index 0000000000..d14e71f026
--- /dev/null
+++ 
b/integration-test-groups/aws2/aws2-eks/src/main/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksResource.java
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.aws2.eks.it;
+
+import java.util.List;
+import java.util.Map;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.aws2.eks.EKS2Constants;
+import org.apache.camel.component.aws2.eks.EKS2Operations;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+import software.amazon.awssdk.services.eks.model.Cluster;
+import software.amazon.awssdk.services.eks.model.CreateClusterResponse;
+import software.amazon.awssdk.services.eks.model.DeleteClusterResponse;
+import software.amazon.awssdk.services.eks.model.DescribeClusterResponse;
+import software.amazon.awssdk.services.eks.model.ListClustersResponse;
+import software.amazon.awssdk.services.eks.model.VpcConfigRequest;
+
+@Path("/aws2-eks")
+@ApplicationScoped
+public class Aws2EksResource {
+
+    @Inject
+    ProducerTemplate producerTemplate;
+
+    @ConfigProperty(name = "aws.eks.role.arn")
+    String roleArn;
+
+    @ConfigProperty(name = "aws.eks.subnets")
+    List<String> subnets;
+
+    @Path("/clusters")
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response listClusters(@QueryParam("maxResults") Integer maxResults) 
{
+        Map<String, Object> headers = maxResults != null
+                ? Map.of(EKS2Constants.MAX_RESULTS, maxResults)
+                : Map.of();
+
+        ListClustersResponse response = producerTemplate.requestBodyAndHeaders(
+                componentUri(EKS2Operations.listClusters),
+                null,
+                headers,
+                ListClustersResponse.class);
+
+        return Response.ok(response.clusters()).build();
+    }
+
+    @Path("/clusters/{clusterName}")
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response describeCluster(@PathParam("clusterName") String 
clusterName) {
+        DescribeClusterResponse response = 
producerTemplate.requestBodyAndHeader(
+                componentUri(EKS2Operations.describeCluster),
+                null,
+                EKS2Constants.CLUSTER_NAME,
+                clusterName,
+                DescribeClusterResponse.class);
+
+        if (response.cluster() == null) {
+            return Response.status(Response.Status.NOT_FOUND).build();
+        }
+
+        Cluster cluster = response.cluster();
+        Map<String, String> result = Map.of(
+                "clusterName", cluster.name(),
+                "clusterArn", cluster.arn(),
+                "clusterStatus", cluster.statusAsString());
+        return Response.ok(result).build();
+    }
+
+    @Path("/clusters")
+    @POST
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response createCluster(@QueryParam("clusterName") String 
clusterName) {
+        Map<String, Object> headers = Map.of(
+                EKS2Constants.CLUSTER_NAME, clusterName,
+                EKS2Constants.ROLE_ARN, roleArn,
+                EKS2Constants.VPC_CONFIG, 
VpcConfigRequest.builder().subnetIds(subnets).build());
+
+        CreateClusterResponse response = 
producerTemplate.requestBodyAndHeaders(
+                componentUri(EKS2Operations.createCluster),
+                null,
+                headers,
+                CreateClusterResponse.class);
+
+        return Response.ok(response.cluster().arn()).build();
+    }
+
+    @Path("/clusters/{clusterName}")
+    @DELETE
+    @Produces(MediaType.TEXT_PLAIN)
+    public Response deleteCluster(@PathParam("clusterName") String 
clusterName) {
+        DeleteClusterResponse response = producerTemplate.requestBodyAndHeader(
+                componentUri(EKS2Operations.deleteCluster),
+                null,
+                EKS2Constants.CLUSTER_NAME,
+                clusterName,
+                DeleteClusterResponse.class);
+
+        return Response.ok(response.cluster().arn()).build();
+    }
+
+    private String componentUri(EKS2Operations operation) {
+        return "aws2-eks://test?operation=" + operation;
+    }
+}
diff --git 
a/integration-test-groups/aws2/aws2-eks/src/main/resources/application.properties
 
b/integration-test-groups/aws2/aws2-eks/src/main/resources/application.properties
new file mode 100644
index 0000000000..11d80f4da6
--- /dev/null
+++ 
b/integration-test-groups/aws2/aws2-eks/src/main/resources/application.properties
@@ -0,0 +1,24 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+camel.component.aws2-eks.access-key=${AWS_ACCESS_KEY}
+camel.component.aws2-eks.secret-key=${AWS_SECRET_KEY}
+camel.component.aws2-eks.region=${AWS_REGION:us-east-1}
+camel.component.aws2-eks.override-endpoint=false
+
+aws.eks.role.arn=${AWS_EKS_ROLE_ARN:arn:aws:iam::123456789012:role/cq-eks-test-role}
+aws.eks.subnets=${AWS_EKS_SUBNETS:subnet-1,subnet-2}
diff --git 
a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
 
b/integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksIT.java
similarity index 50%
copy from 
integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
copy to 
integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksIT.java
index 422b684295..cfd3205e4f 100644
--- 
a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
+++ 
b/integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksIT.java
@@ -14,39 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.test.support.aws2;
+package org.apache.camel.quarkus.component.aws2.eks.it;
 
-public enum Service {
-    API_GATEWAY("apigateway"),
-    EC2("ec2"),
-    KINESIS("kinesis"),
-    DYNAMODB("dynamodb"),
-    DYNAMODB_STREAMS("dynamodbstreams"),
-    S3("s3"),
-    FIREHOSE("firehose"),
-    LAMBDA("lambda"),
-    SNS("sns"),
-    SQS("sqs"),
-    REDSHIFT("redshift"),
-    SES("ses"),
-    ROUTE53("route53"),
-    CLOUDFORMATION("cloudformation"),
-    CLOUDWATCH("cloudwatch"),
-    SSM("ssm"),
-    SECRETSMANAGER("secretsmanager"),
-    STEPFUNCTIONS("stepfunctions"),
-    CLOUDWATCHLOGS("logs"),
-    STS("sts"),
-    IAM("iam"),
-    KMS("kms");
+import io.quarkus.test.junit.QuarkusIntegrationTest;
 
-    private final String serviceName;
-
-    Service(String serviceName) {
-        this.serviceName = serviceName;
-    }
-
-    public String getName() {
-        return serviceName;
-    }
+@QuarkusIntegrationTest
+class Aws2EksIT extends Aws2EksTest {
 }
diff --git 
a/integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksTest.java
 
b/integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksTest.java
new file mode 100644
index 0000000000..168c114e6e
--- /dev/null
+++ 
b/integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksTest.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.aws2.eks.it;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.apache.camel.quarkus.test.support.aws2.Aws2TestResource;
+import org.awaitility.Awaitility;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+
+import static org.hamcrest.Matchers.hasItem;
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.lessThanOrEqualTo;
+import static org.hamcrest.Matchers.notNullValue;
+
+@QuarkusTest
+@QuarkusTestResource(Aws2TestResource.class)
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+class Aws2EksTest {
+
+    static final String CLUSTER_NAME = "cq-test-cluster";
+
+    static String clusterArn;
+
+    @Test
+    @Order(1)
+    public void testCreateCluster() {
+        clusterArn = RestAssured.given()
+                .queryParam("clusterName", CLUSTER_NAME)
+                .post("/aws2-eks/clusters")
+                .then()
+                .statusCode(200)
+                .body(notNullValue())
+                .extract().body().asString();
+
+        // Wait for the cluster to become ACTIVE before running further tests
+        Awaitility.await()
+                .atMost(30, TimeUnit.MINUTES)
+                .pollDelay(0, TimeUnit.SECONDS)
+                .pollInterval(1, TimeUnit.MINUTES)
+                .until(() -> "ACTIVE".equals(clusterStatus(CLUSTER_NAME)));
+    }
+
+    @Test
+    @Order(2)
+    public void testClusterOperations() {
+        // List all clusters (EKS returns cluster names, not ARNs)
+        RestAssured.given()
+                .get("/aws2-eks/clusters")
+                .then()
+                .statusCode(200)
+                .body("$", hasItem(CLUSTER_NAME));
+
+        // List clusters with max results: assert limit behavior only (order 
is not guaranteed)
+        RestAssured.given()
+                .queryParam("maxResults", 10)
+                .get("/aws2-eks/clusters")
+                .then()
+                .statusCode(200)
+                .body("$", hasSize(lessThanOrEqualTo(10)));
+
+        // Describe cluster
+        RestAssured.given()
+                .get("/aws2-eks/clusters/" + CLUSTER_NAME)
+                .then()
+                .statusCode(200)
+                .body("clusterName", is(CLUSTER_NAME))
+                .body("clusterArn", is(clusterArn))
+                .body("clusterStatus", is("ACTIVE"));
+    }
+
+    @Test
+    @Order(3)
+    public void testDeleteCluster() {
+        RestAssured.given()
+                .delete("/aws2-eks/clusters/" + CLUSTER_NAME)
+                .then()
+                .statusCode(200)
+                .body(is(clusterArn));
+    }
+
+    @Test
+    @Order(4)
+    public void cleanUpVerification() {
+        // Wait until the cluster is no longer listed as deletion is 
asynchronous in AWS
+        Awaitility.await()
+                .atMost(30, TimeUnit.MINUTES)
+                .pollDelay(0, TimeUnit.SECONDS)
+                .pollInterval(1, TimeUnit.MINUTES)
+                .until(() -> {
+                    List<?> clusters = RestAssured.given()
+                            .get("/aws2-eks/clusters")
+                            .then()
+                            .statusCode(200)
+                            .extract().jsonPath().getList("$");
+                    return !clusters.contains(CLUSTER_NAME);
+                });
+    }
+
+    private static String clusterStatus(String clusterName) {
+        return RestAssured.given()
+                .get("/aws2-eks/clusters/" + clusterName)
+                .then()
+                .statusCode(200)
+                .extract().jsonPath().getString("clusterStatus");
+    }
+}
diff --git 
a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
 
b/integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksTestEnvCustomizer.java
similarity index 51%
copy from 
integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
copy to 
integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksTestEnvCustomizer.java
index 422b684295..1f2f8a015b 100644
--- 
a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
+++ 
b/integration-test-groups/aws2/aws2-eks/src/test/java/org/apache/camel/quarkus/component/aws2/eks/it/Aws2EksTestEnvCustomizer.java
@@ -14,39 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.test.support.aws2;
+package org.apache.camel.quarkus.component.aws2.eks.it;
 
-public enum Service {
-    API_GATEWAY("apigateway"),
-    EC2("ec2"),
-    KINESIS("kinesis"),
-    DYNAMODB("dynamodb"),
-    DYNAMODB_STREAMS("dynamodbstreams"),
-    S3("s3"),
-    FIREHOSE("firehose"),
-    LAMBDA("lambda"),
-    SNS("sns"),
-    SQS("sqs"),
-    REDSHIFT("redshift"),
-    SES("ses"),
-    ROUTE53("route53"),
-    CLOUDFORMATION("cloudformation"),
-    CLOUDWATCH("cloudwatch"),
-    SSM("ssm"),
-    SECRETSMANAGER("secretsmanager"),
-    STEPFUNCTIONS("stepfunctions"),
-    CLOUDWATCHLOGS("logs"),
-    STS("sts"),
-    IAM("iam"),
-    KMS("kms");
+import org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvContext;
+import org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer;
+import org.apache.camel.quarkus.test.support.aws2.Service;
 
-    private final String serviceName;
+public class Aws2EksTestEnvCustomizer implements Aws2TestEnvCustomizer {
 
-    Service(String serviceName) {
-        this.serviceName = serviceName;
+    @Override
+    public Service[] awsServices() {
+        return new Service[] { Service.EKS };
     }
 
-    public String getName() {
-        return serviceName;
+    @Override
+    public void customize(Aws2TestEnvContext envContext) {
     }
 }
diff --git 
a/integration-test-groups/aws2/aws2-eks/src/test/resources/META-INF/services/org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer
 
b/integration-test-groups/aws2/aws2-eks/src/test/resources/META-INF/services/org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer
new file mode 100644
index 0000000000..edeeb48799
--- /dev/null
+++ 
b/integration-test-groups/aws2/aws2-eks/src/test/resources/META-INF/services/org.apache.camel.quarkus.test.support.aws2.Aws2TestEnvCustomizer
@@ -0,0 +1 @@
+org.apache.camel.quarkus.component.aws2.eks.it.Aws2EksTestEnvCustomizer
diff --git a/integration-test-groups/aws2/pom.xml 
b/integration-test-groups/aws2/pom.xml
index b1d63729d4..d3e8a4ed29 100644
--- a/integration-test-groups/aws2/pom.xml
+++ b/integration-test-groups/aws2/pom.xml
@@ -43,6 +43,7 @@
         <module>aws2-ddb</module>
         <module>aws2-ec2</module>
         <module>aws2-ecs</module>
+        <module>aws2-eks</module>
         <module>aws2-iam</module>
         <module>aws2-kinesis</module>
         <module>aws2-kms</module>
diff --git 
a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestResource.java
 
b/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestResource.java
index ba4efa8952..70171414bb 100644
--- 
a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestResource.java
+++ 
b/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Aws2TestResource.java
@@ -79,6 +79,11 @@ public final class Aws2TestResource implements 
QuarkusTestResourceLifecycleManag
                     .flatMap(Stream::of)
                     .anyMatch(s -> s == Service.LAMBDA);
 
+            boolean needsEksMock = customizers.stream()
+                    .map(Aws2TestEnvCustomizer::awsServices)
+                    .flatMap(Stream::of)
+                    .anyMatch(s -> s == Service.EKS);
+
             DockerImageName imageName = DockerImageName
                     
.parse(ConfigProvider.getConfig().getValue("floci.container.image", 
String.class));
 
@@ -89,6 +94,11 @@ public final class Aws2TestResource implements 
QuarkusTestResourceLifecycleManag
                     .withEnv("AWS_SECRET_ACCESS_KEY", "testSecretKeyId")
                     .withLogConsumer(new Slf4jLogConsumer(LOG));
 
+            if (needsEksMock) {
+                // Camel EKS tests cover the control-plane API only; avoid 
starting a k3s cluster per CreateCluster
+                floci.withEnv("FLOCI_SERVICES_EKS_MOCK", "true");
+            }
+
             if (needsDockerSocket) {
                 Path dockerSocket = Path.of("/var/run/docker.sock");
                 if (Files.exists(dockerSocket)) {
diff --git 
a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
 
b/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
index 422b684295..4bd3f51392 100644
--- 
a/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
+++ 
b/integration-tests-support/aws2/src/test/java/org/apache/camel/quarkus/test/support/aws2/Service.java
@@ -19,6 +19,7 @@ package org.apache.camel.quarkus.test.support.aws2;
 public enum Service {
     API_GATEWAY("apigateway"),
     EC2("ec2"),
+    EKS("eks"),
     KINESIS("kinesis"),
     DYNAMODB("dynamodb"),
     DYNAMODB_STREAMS("dynamodbstreams"),
diff --git a/integration-tests/aws2-grouped/pom.xml 
b/integration-tests/aws2-grouped/pom.xml
index 279b53d66d..4d04105496 100644
--- a/integration-tests/aws2-grouped/pom.xml
+++ b/integration-tests/aws2-grouped/pom.xml
@@ -80,6 +80,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-aws2-ecs</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-aws2-eks</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-aws2-iam</artifactId>
@@ -158,6 +162,16 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>software.amazon.awssdk</groupId>
+            <artifactId>eks</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-logging</groupId>
+                    <artifactId>commons-logging</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
         <dependency>
             <groupId>software.amazon.awssdk</groupId>
             <artifactId>iam</artifactId>
@@ -365,6 +379,19 @@
                         </exclusion>
                     </exclusions>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.camel.quarkus</groupId>
+                    <artifactId>camel-quarkus-aws2-eks-deployment</artifactId>
+                    <version>${project.version}</version>
+                    <type>pom</type>
+                    <scope>test</scope>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>*</groupId>
+                            <artifactId>*</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.camel.quarkus</groupId>
                     <artifactId>camel-quarkus-aws2-iam-deployment</artifactId>

Reply via email to