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

Amar3tto pushed a commit to branch icerbergio-benchmark
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/icerbergio-benchmark by this 
push:
     new 02b61154238 Add IcebergIOLT
02b61154238 is described below

commit 02b61154238fcd559b07104eea224ee99ff7ef1e
Author: Vitaly Terentyev <[email protected]>
AuthorDate: Tue Jul 7 17:04:31 2026 +0400

    Add IcebergIOLT
---
 it/common/build.gradle                             |   3 +-
 .../apache/beam/it/common}/artifacts/Artifact.java |   2 +-
 .../beam/it/common}/artifacts/ArtifactClient.java  |   2 +-
 .../beam/it/common}/artifacts/GcsArtifact.java     |   2 +-
 .../artifacts/matchers/ArtifactAsserts.java        |  13 +-
 .../artifacts/matchers/ArtifactsSubject.java       |  15 +-
 .../common}/artifacts/matchers/package-info.java   |   2 +-
 .../beam/it/common}/artifacts/package-info.java    |   2 +-
 .../it/common}/artifacts/utils/ArtifactUtils.java  |   2 +-
 .../it/common}/artifacts/utils/AvroTestUtil.java   |   2 +-
 .../it/common}/artifacts/utils/JsonTestUtil.java   |   2 +-
 .../common}/artifacts/utils/ParquetTestUtil.java   |   2 +-
 .../it/common}/artifacts/utils/package-info.java   |   2 +-
 .../common/dataflow/DefaultPipelineLauncher.java   |  23 +-
 .../it/common}/storage/GcsResourceManager.java     |  10 +-
 .../beam/it/common}/storage/package-info.java      |   2 +-
 .../beam/it/common}/artifacts/GcsArtifactTest.java |   4 +-
 .../common}/artifacts/utils/ArtifactUtilsTest.java |   4 +-
 .../bigquery/BigQueryResourceManagerUtilsTest.java |   1 -
 .../dataflow/DefaultPipelineLauncherTest.java      |   2 +-
 .../beam/it/common/dataflow/IOLoadTestBase.java    |   5 +-
 .../beam/it/common/dataflow/LoadTestBase.java      |   3 +-
 .../it/common}/storage/GcsResourceManagerTest.java |  19 +-
 .../gcp/bigquery/conditions/BigQueryRowsCheck.java |   2 +-
 .../it/gcp/dataflow/ClassicTemplateClient.java     |   1 -
 .../beam/it/gcp/dataflow/FlexTemplateClient.java   |   1 -
 .../it/gcp/spanner/matchers/SpannerAsserts.java    |   2 +-
 .../java/org/apache/beam/it/gcp/WordCountIT.java   |   3 +-
 .../apache/beam/it/gcp/bigquery/BigQueryIOLT.java  |   3 +-
 .../apache/beam/it/gcp/bigquery/BigQueryIOST.java  |   3 +-
 .../apache/beam/it/gcp/bigtable/BigTableIOLT.java  |   3 +-
 .../apache/beam/it/gcp/bigtable/BigTableIOST.java  |   3 +-
 .../org/apache/beam/it/gcp/pubsub/PubSubIOST.java  |   3 +-
 .../org/apache/beam/it/gcp/pubsub/PubsubIOLT.java  |   3 +-
 .../apache/beam/it/gcp/spanner/SpannerIOLT.java    |   3 +-
 .../apache/beam/it/gcp/spanner/SpannerIOST.java    |   3 +-
 .../apache/beam/it/gcp/storage/FileBasedIOLT.java  |   4 +-
 it/iceberg/build.gradle                            |   1 +
 .../org/apache/beam/it/iceberg/IcebergIOLT.java    | 353 ++++++++++++++++++++-
 .../java/org/apache/beam/it/kafka/KafkaIOLT.java   |   4 +-
 .../java/org/apache/beam/it/kafka/KafkaIOST.java   |   2 +-
 41 files changed, 436 insertions(+), 85 deletions(-)

diff --git a/it/common/build.gradle b/it/common/build.gradle
index 7b8559aa6e1..dc789c08fd3 100644
--- a/it/common/build.gradle
+++ b/it/common/build.gradle
@@ -32,6 +32,7 @@ dependencies {
     implementation project(path: ":sdks:java:testing:test-utils")
     implementation 'com.google.cloud:google-cloud-bigquery'
     implementation 'com.google.cloud:google-cloud-monitoring'
+    implementation 'com.google.cloud:google-cloud-storage'
     provided 'com.google.api.grpc:proto-google-cloud-monitoring-v3'
     implementation library.java.gax
     implementation library.java.google_api_services_dataflow
@@ -47,12 +48,12 @@ dependencies {
     implementation library.java.guava
     implementation library.java.protobuf_java_util
     implementation library.java.protobuf_java
+    implementation library.java.junit
 
     // TODO: excluding Guava until Truth updates it to >32.1.x
     testImplementation(library.java.truth) {
         exclude group: 'com.google.guava', module: 'guava'
     }
-    testImplementation library.java.junit
     testImplementation library.java.mockito_inline
     testRuntimeOnly library.java.slf4j_simple
     testImplementation project(path: ":sdks:java:extensions:protobuf", 
configuration: "testRuntimeMigration")
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/Artifact.java
 b/it/common/src/main/java/org/apache/beam/it/common/artifacts/Artifact.java
similarity index 97%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/Artifact.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/Artifact.java
index 830f44598be..6371d6eedb1 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/Artifact.java
+++ b/it/common/src/main/java/org/apache/beam/it/common/artifacts/Artifact.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts;
+package org.apache.beam.it.common.artifacts;
 
 /**
  * Represents a single artifact.
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/ArtifactClient.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/ArtifactClient.java
similarity index 99%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/ArtifactClient.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/ArtifactClient.java
index e463baffeaf..b275d35703e 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/ArtifactClient.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/ArtifactClient.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts;
+package org.apache.beam.it.common.artifacts;
 
 import java.io.IOException;
 import java.nio.file.Path;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/GcsArtifact.java
 b/it/common/src/main/java/org/apache/beam/it/common/artifacts/GcsArtifact.java
similarity index 96%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/GcsArtifact.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/GcsArtifact.java
index c60e3a0fe53..5f4360ddbb2 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/GcsArtifact.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/GcsArtifact.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts;
+package org.apache.beam.it.common.artifacts;
 
 import com.google.cloud.storage.Blob;
 
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/ArtifactAsserts.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/ArtifactAsserts.java
similarity index 81%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/ArtifactAsserts.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/ArtifactAsserts.java
index 3b1251307d0..48d04edadc7 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/ArtifactAsserts.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/ArtifactAsserts.java
@@ -15,14 +15,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts.matchers;
-
-import static com.google.common.truth.Truth.assertAbout;
-import static 
org.apache.beam.it.truthmatchers.PipelineAsserts.assertThatRecords;
+package org.apache.beam.it.common.artifacts.matchers;
 
 import java.util.List;
 import org.apache.avro.generic.GenericRecord;
-import org.apache.beam.it.gcp.artifacts.Artifact;
+import org.apache.beam.it.common.artifacts.Artifact;
 import org.apache.beam.it.truthmatchers.RecordsSubject;
 import 
org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.ImmutableList;
 
@@ -36,7 +33,7 @@ public class ArtifactAsserts {
    * @return Truth Subject to chain assertions.
    */
   public static ArtifactsSubject assertThatArtifacts(List<Artifact> artifacts) 
{
-    return assertAbout(ArtifactsSubject.records()).that(artifacts);
+    return Truth.assertAbout(ArtifactsSubject.records()).that(artifacts);
   }
 
   /**
@@ -47,7 +44,7 @@ public class ArtifactAsserts {
    * @return Truth Subject to chain assertions.
    */
   public static ArtifactsSubject assertThatArtifact(Artifact artifact) {
-    return 
assertAbout(ArtifactsSubject.records()).that(ImmutableList.of(artifact));
+    return 
Truth.assertAbout(ArtifactsSubject.records()).that(ImmutableList.of(artifact));
   }
 
   /**
@@ -57,6 +54,6 @@ public class ArtifactAsserts {
    * @return Truth Subject to chain assertions.
    */
   public static RecordsSubject assertThatGenericRecords(List<GenericRecord> 
records) {
-    return assertThatRecords(ArtifactsSubject.genericRecordToRecords(records));
+    return 
PipelineAsserts.assertThatRecords(ArtifactsSubject.genericRecordToRecords(records));
   }
 }
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/ArtifactsSubject.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/ArtifactsSubject.java
similarity index 91%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/ArtifactsSubject.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/ArtifactsSubject.java
index ab5b4969948..7a49bd22ff9 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/ArtifactsSubject.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/ArtifactsSubject.java
@@ -15,10 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts.matchers;
+package org.apache.beam.it.common.artifacts.matchers;
 
-import static 
org.apache.beam.it.gcp.artifacts.matchers.ArtifactAsserts.assertThatGenericRecords;
-import static 
org.apache.beam.it.truthmatchers.PipelineAsserts.assertThatRecords;
+import static 
org.apache.beam.it.common.artifacts.matchers.ArtifactAsserts.assertThatGenericRecords;
 import static 
org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.hash.Hashing.sha256;
 
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -31,10 +30,10 @@ import java.util.List;
 import java.util.Map;
 import org.apache.avro.Schema;
 import org.apache.avro.generic.GenericRecord;
-import org.apache.beam.it.gcp.artifacts.Artifact;
-import org.apache.beam.it.gcp.artifacts.utils.AvroTestUtil;
-import org.apache.beam.it.gcp.artifacts.utils.JsonTestUtil;
-import org.apache.beam.it.gcp.artifacts.utils.ParquetTestUtil;
+import org.apache.beam.it.common.artifacts.Artifact;
+import org.apache.beam.it.common.artifacts.utils.AvroTestUtil;
+import org.apache.beam.it.common.artifacts.utils.JsonTestUtil;
+import org.apache.beam.it.common.artifacts.utils.ParquetTestUtil;
 import org.apache.beam.it.truthmatchers.RecordsSubject;
 
 /**
@@ -167,6 +166,6 @@ public final class ArtifactsSubject extends Subject {
         throw new RuntimeException("Error reading " + artifact.name() + " as 
JSON.", e);
       }
     }
-    return assertThatRecords(allRecords);
+    return PipelineAsserts.assertThatRecords(allRecords);
   }
 }
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/package-info.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/package-info.java
similarity index 94%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/package-info.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/package-info.java
index 9759071b397..1167e1b6cc2 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/matchers/package-info.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/matchers/package-info.java
@@ -17,4 +17,4 @@
  */
 
 /** Package for Artifact Truth matchers / subjects to have reusable 
assertions. */
-package org.apache.beam.it.gcp.artifacts.matchers;
+package org.apache.beam.it.common.artifacts.matchers;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/package-info.java
 b/it/common/src/main/java/org/apache/beam/it/common/artifacts/package-info.java
similarity index 95%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/package-info.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/package-info.java
index de2a2541d55..44b54f82aeb 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/package-info.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/package-info.java
@@ -17,4 +17,4 @@
  */
 
 /** Package for working with test artifacts. */
-package org.apache.beam.it.gcp.artifacts;
+package org.apache.beam.it.common.artifacts;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/ArtifactUtils.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/ArtifactUtils.java
similarity index 98%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/ArtifactUtils.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/ArtifactUtils.java
index 854651ae1f1..3a3bcb2d7ec 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/ArtifactUtils.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/ArtifactUtils.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts.utils;
+package org.apache.beam.it.common.artifacts.utils;
 
 import static java.util.Arrays.stream;
 import static 
org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Preconditions.checkArgument;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/AvroTestUtil.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/AvroTestUtil.java
similarity index 98%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/AvroTestUtil.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/AvroTestUtil.java
index 5cfe4c137e3..58241f9a1db 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/AvroTestUtil.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/AvroTestUtil.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts.utils;
+package org.apache.beam.it.common.artifacts.utils;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/JsonTestUtil.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/JsonTestUtil.java
similarity index 99%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/JsonTestUtil.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/JsonTestUtil.java
index 9a83558f7bf..08c3cdfb0c5 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/JsonTestUtil.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/JsonTestUtil.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts.utils;
+package org.apache.beam.it.common.artifacts.utils;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/ParquetTestUtil.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/ParquetTestUtil.java
similarity index 98%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/ParquetTestUtil.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/ParquetTestUtil.java
index d6ebf825e2c..fb4326e1b4a 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/ParquetTestUtil.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/ParquetTestUtil.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts.utils;
+package org.apache.beam.it.common.artifacts.utils;
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/package-info.java
 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/package-info.java
similarity index 94%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/package-info.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/package-info.java
index 53cb4ed1d3a..aaf820b2510 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/artifacts/utils/package-info.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/artifacts/utils/package-info.java
@@ -17,4 +17,4 @@
  */
 
 /** Package for artifact utilities. */
-package org.apache.beam.it.gcp.artifacts.utils;
+package org.apache.beam.it.common.artifacts.utils;
diff --git 
a/it/common/src/main/java/org/apache/beam/it/common/dataflow/DefaultPipelineLauncher.java
 
b/it/common/src/main/java/org/apache/beam/it/common/dataflow/DefaultPipelineLauncher.java
index 32a4eb6eb1b..af6438a561a 100644
--- 
a/it/common/src/main/java/org/apache/beam/it/common/dataflow/DefaultPipelineLauncher.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/dataflow/DefaultPipelineLauncher.java
@@ -192,15 +192,13 @@ public class DefaultPipelineLauncher extends 
AbstractPipelineLauncher {
             .metrics()
             .queryMetrics(
                 MetricsFilter.builder()
-                    .addNameFilter(
-                        MetricNameFilter.named(BEAM_METRICS_NAMESPACE, 
metricName))
+                    
.addNameFilter(MetricNameFilter.named(BEAM_METRICS_NAMESPACE, metricName))
                     .build());
     return metrics.getDistributions();
   }
 
   /** Pull Beam pipeline defined metrics given the jobId. */
-  public Long getBeamMetric(
-      String jobId, PipelineMetricsType metricType, String metricName) {
+  public Long getBeamMetric(String jobId, PipelineMetricsType metricType, 
String metricName) {
     PipelineResult pipelineResult =
         MANAGED_JOBS.getOrDefault(jobId, UNMANAGED_JOBS.getOrDefault(jobId, 
null));
     if (pipelineResult != null) {
@@ -209,8 +207,7 @@ public class DefaultPipelineLauncher extends 
AbstractPipelineLauncher {
               .metrics()
               .queryMetrics(
                   MetricsFilter.builder()
-                      .addNameFilter(
-                          MetricNameFilter.named(BEAM_METRICS_NAMESPACE, 
metricName))
+                      
.addNameFilter(MetricNameFilter.named(BEAM_METRICS_NAMESPACE, metricName))
                       .build());
 
       switch (metricType) {
@@ -222,9 +219,7 @@ public class DefaultPipelineLauncher extends 
AbstractPipelineLauncher {
             return metricResult.getAttempted();
           } catch (NoSuchElementException e) {
             LOG.error(
-                "Failed to get metric {}, from namespace {}",
-                metricName,
-                BEAM_METRICS_NAMESPACE);
+                "Failed to get metric {}, from namespace {}", metricName, 
BEAM_METRICS_NAMESPACE);
           }
           return UNKNOWN_METRIC_VALUE;
         case STARTTIME:
@@ -273,8 +268,7 @@ public class DefaultPipelineLauncher extends 
AbstractPipelineLauncher {
           String.format(
               "Invalid Beam metrics name: %s, expected: 
'%s:metric_type:metric_name'",
               metricName, BEAM_METRICS_NAMESPACE));
-      PipelineMetricsType metricType =
-          PipelineMetricsType.valueOf(nameSpacedMetrics[1]);
+      PipelineMetricsType metricType = 
PipelineMetricsType.valueOf(nameSpacedMetrics[1]);
 
       // Pipeline defined metrics are long values. Have to cast to double that 
is what the base
       // class defined.
@@ -449,7 +443,9 @@ public class DefaultPipelineLauncher extends 
AbstractPipelineLauncher {
     // add pipeline options from beamTestPipelineOptions system property to 
preserve the
     // pipeline options already set in TestPipeline.
     @Nullable
-    String beamTestPipelineOptions = 
System.getProperty(org.apache.beam.sdk.testing.TestPipeline.PROPERTY_BEAM_TEST_PIPELINE_OPTIONS);
+    String beamTestPipelineOptions =
+        System.getProperty(
+            
org.apache.beam.sdk.testing.TestPipeline.PROPERTY_BEAM_TEST_PIPELINE_OPTIONS);
     if (!Strings.isNullOrEmpty(beamTestPipelineOptions)) {
       try {
         additionalOptions.addAll(MAPPER.readValue(beamTestPipelineOptions, 
List.class));
@@ -457,7 +453,8 @@ public class DefaultPipelineLauncher extends 
AbstractPipelineLauncher {
         throw new RuntimeException(
             "Unable to instantiate test options from system property "
                 + 
org.apache.beam.sdk.testing.TestPipeline.PROPERTY_BEAM_TEST_PIPELINE_OPTIONS
-                + ":" + beamTestPipelineOptions,
+                + ":"
+                + beamTestPipelineOptions,
             e);
       }
     }
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/storage/GcsResourceManager.java
 
b/it/common/src/main/java/org/apache/beam/it/common/storage/GcsResourceManager.java
similarity index 97%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/storage/GcsResourceManager.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/storage/GcsResourceManager.java
index 730ca23ee54..85f2c8b0b01 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/storage/GcsResourceManager.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/storage/GcsResourceManager.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.storage;
+package org.apache.beam.it.common.storage;
 
 import static 
org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Preconditions.checkArgument;
 
@@ -39,10 +39,10 @@ import java.util.List;
 import java.util.function.Consumer;
 import java.util.regex.Pattern;
 import org.apache.beam.it.common.ResourceManager;
-import org.apache.beam.it.gcp.artifacts.Artifact;
-import org.apache.beam.it.gcp.artifacts.ArtifactClient;
-import org.apache.beam.it.gcp.artifacts.GcsArtifact;
-import org.apache.beam.it.gcp.artifacts.utils.ArtifactUtils;
+import org.apache.beam.it.common.artifacts.Artifact;
+import org.apache.beam.it.common.artifacts.ArtifactClient;
+import org.apache.beam.it.common.artifacts.GcsArtifact;
+import org.apache.beam.it.common.artifacts.utils.ArtifactUtils;
 import 
org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.annotations.VisibleForTesting;
 import org.junit.rules.TestName;
 import org.slf4j.Logger;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/storage/package-info.java
 b/it/common/src/main/java/org/apache/beam/it/common/storage/package-info.java
similarity index 95%
rename from 
it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/storage/package-info.java
rename to 
it/common/src/main/java/org/apache/beam/it/common/storage/package-info.java
index efcea3aba26..1c5b3b3ce21 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/storage/package-info.java
+++ 
b/it/common/src/main/java/org/apache/beam/it/common/storage/package-info.java
@@ -17,4 +17,4 @@
  */
 
 /** Package for managing Google Cloud Storage resources within integration 
tests. */
-package org.apache.beam.it.gcp.storage;
+package org.apache.beam.it.common.storage;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/artifacts/GcsArtifactTest.java
 
b/it/common/src/test/java/org/apache/beam/it/common/artifacts/GcsArtifactTest.java
similarity index 94%
rename from 
it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/artifacts/GcsArtifactTest.java
rename to 
it/common/src/test/java/org/apache/beam/it/common/artifacts/GcsArtifactTest.java
index 59b7931b603..470741b399a 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/artifacts/GcsArtifactTest.java
+++ 
b/it/common/src/test/java/org/apache/beam/it/common/artifacts/GcsArtifactTest.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts;
+package org.apache.beam.it.common.artifacts;
 
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Mockito.when;
@@ -30,7 +30,7 @@ import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 
-/** Unit tests for {@link GcsArtifact}. */
+/** Unit tests for {@link org.apache.beam.it.common.artifacts.GcsArtifact}. */
 @RunWith(JUnit4.class)
 public class GcsArtifactTest {
   @Rule public final MockitoRule mockito = MockitoJUnit.rule();
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/artifacts/utils/ArtifactUtilsTest.java
 
b/it/common/src/test/java/org/apache/beam/it/common/artifacts/utils/ArtifactUtilsTest.java
similarity index 94%
rename from 
it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/artifacts/utils/ArtifactUtilsTest.java
rename to 
it/common/src/test/java/org/apache/beam/it/common/artifacts/utils/ArtifactUtilsTest.java
index 491d32d0ce6..137c35aaf4b 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/artifacts/utils/ArtifactUtilsTest.java
+++ 
b/it/common/src/test/java/org/apache/beam/it/common/artifacts/utils/ArtifactUtilsTest.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.artifacts.utils;
+package org.apache.beam.it.common.artifacts.utils;
 
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.assertThrows;
@@ -24,7 +24,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
-/** Artifacts for {@link ArtifactUtils}. */
+/** Artifacts for {@link 
org.apache.beam.it.common.artifacts.utils.ArtifactUtils}. */
 @RunWith(JUnit4.class)
 public final class ArtifactUtilsTest {
 
diff --git 
a/it/common/src/test/java/org/apache/beam/it/common/bigquery/BigQueryResourceManagerUtilsTest.java
 
b/it/common/src/test/java/org/apache/beam/it/common/bigquery/BigQueryResourceManagerUtilsTest.java
index eaff8074072..7fc848b4529 100644
--- 
a/it/common/src/test/java/org/apache/beam/it/common/bigquery/BigQueryResourceManagerUtilsTest.java
+++ 
b/it/common/src/test/java/org/apache/beam/it/common/bigquery/BigQueryResourceManagerUtilsTest.java
@@ -21,7 +21,6 @@ import static 
org.apache.beam.it.common.bigquery.BigQueryResourceManagerUtils.ch
 import static org.junit.Assert.assertThrows;
 
 import java.util.Arrays;
-
 import org.junit.Test;
 
 /** Unit tests for {@link BigQueryResourceManagerUtils}. */
diff --git 
a/it/common/src/test/java/org/apache/beam/it/common/dataflow/DefaultPipelineLauncherTest.java
 
b/it/common/src/test/java/org/apache/beam/it/common/dataflow/DefaultPipelineLauncherTest.java
index 333549c621b..35510a0f1d1 100644
--- 
a/it/common/src/test/java/org/apache/beam/it/common/dataflow/DefaultPipelineLauncherTest.java
+++ 
b/it/common/src/test/java/org/apache/beam/it/common/dataflow/DefaultPipelineLauncherTest.java
@@ -23,8 +23,8 @@ import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import java.time.Instant;
-import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.PipelineLauncher;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.sdk.io.GenerateSequence;
 import org.apache.beam.sdk.testing.TestPipeline;
 import org.apache.beam.sdk.testutils.metrics.TimeMonitor;
diff --git 
a/it/common/src/test/java/org/apache/beam/it/common/dataflow/IOLoadTestBase.java
 
b/it/common/src/test/java/org/apache/beam/it/common/dataflow/IOLoadTestBase.java
index 8a1a94df1ae..c35f402bd8a 100644
--- 
a/it/common/src/test/java/org/apache/beam/it/common/dataflow/IOLoadTestBase.java
+++ 
b/it/common/src/test/java/org/apache/beam/it/common/dataflow/IOLoadTestBase.java
@@ -17,13 +17,14 @@
  */
 package org.apache.beam.it.common.dataflow;
 
+import static 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.BEAM_METRICS_NAMESPACE;
+
 import com.google.cloud.Timestamp;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
 import java.util.UUID;
-
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.TestProperties;
 import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
@@ -40,8 +41,6 @@ import org.junit.runners.JUnit4;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.BEAM_METRICS_NAMESPACE;
-
 /** Base class for IO Load tests. */
 @RunWith(JUnit4.class)
 @SuppressWarnings({
diff --git 
a/it/common/src/test/java/org/apache/beam/it/common/dataflow/LoadTestBase.java 
b/it/common/src/test/java/org/apache/beam/it/common/dataflow/LoadTestBase.java
index 36071283506..cd1b71dc755 100644
--- 
a/it/common/src/test/java/org/apache/beam/it/common/dataflow/LoadTestBase.java
+++ 
b/it/common/src/test/java/org/apache/beam/it/common/dataflow/LoadTestBase.java
@@ -17,8 +17,8 @@
  */
 package org.apache.beam.it.common.dataflow;
 
-import static org.apache.beam.it.common.logging.LogStrings.formatForLogging;
 import static 
org.apache.beam.it.common.dataflow.AbstractPipelineLauncher.RUNNER_V2;
+import static org.apache.beam.it.common.logging.LogStrings.formatForLogging;
 
 import com.google.api.gax.core.CredentialsProvider;
 import com.google.api.gax.core.FixedCredentialsProvider;
@@ -40,7 +40,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.regex.Pattern;
-
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineLauncher.LaunchInfo;
 import org.apache.beam.it.common.PipelineOperator;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/storage/GcsResourceManagerTest.java
 
b/it/common/src/test/java/org/apache/beam/it/common/storage/GcsResourceManagerTest.java
similarity index 95%
rename from 
it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/storage/GcsResourceManagerTest.java
rename to 
it/common/src/test/java/org/apache/beam/it/common/storage/GcsResourceManagerTest.java
index 0153573feae..70dc6dcbc9c 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/storage/GcsResourceManagerTest.java
+++ 
b/it/common/src/test/java/org/apache/beam/it/common/storage/GcsResourceManagerTest.java
@@ -15,7 +15,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.beam.it.gcp.storage;
+package org.apache.beam.it.common.storage;
 
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.assertThrows;
@@ -35,6 +35,7 @@ import com.google.cloud.storage.BlobInfo;
 import com.google.cloud.storage.Storage;
 import com.google.cloud.storage.Storage.BlobListOption;
 import com.google.cloud.storage.Storage.BucketListOption;
+import com.google.common.truth.Truth;
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.nio.file.Files;
@@ -43,8 +44,8 @@ import java.nio.file.Paths;
 import java.util.List;
 import java.util.UUID;
 import java.util.regex.Pattern;
-import org.apache.beam.it.gcp.artifacts.Artifact;
-import org.apache.beam.it.gcp.artifacts.GcsArtifact;
+import org.apache.beam.it.common.artifacts.Artifact;
+import org.apache.beam.it.common.artifacts.GcsArtifact;
 import 
org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.ImmutableList;
 import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.io.Resources;
 import org.junit.After;
@@ -128,7 +129,7 @@ public final class GcsResourceManagerTest {
     verify(client).create(blobInfoCaptor.capture(), contentsCaptor.capture());
     BlobInfo actualInfo = blobInfoCaptor.getValue();
 
-    assertThat(actual.blob).isSameInstanceAs(blob);
+    Truth.assertThat(actual.blob).isSameInstanceAs(blob);
     assertThat(actualInfo.getBucket()).isEqualTo(BUCKET);
     assertThat(actualInfo.getName())
         .isEqualTo(String.format("%s/%s/%s", TEST_CLASS, gcsClient.runId(), 
artifactName));
@@ -144,7 +145,7 @@ public final class GcsResourceManagerTest {
     verify(client).create(blobInfoCaptor.capture(), contentsCaptor.capture());
     BlobInfo actualInfo = blobInfoCaptor.getValue();
 
-    assertThat(actual.blob).isSameInstanceAs(blob);
+    Truth.assertThat(actual.blob).isSameInstanceAs(blob);
     assertThat(actualInfo.getBucket()).isEqualTo(BUCKET);
     assertThat(actualInfo.getName())
         .isEqualTo(String.format("%s/%s/%s", TEST_CLASS, gcsClient.runId(), 
ARTIFACT_NAME));
@@ -185,8 +186,8 @@ public final class GcsResourceManagerTest {
     BlobListOption actualOptions = listOptionsCaptor.getValue();
 
     assertThat(actual).hasSize(2);
-    assertThat(actual.get(0).name()).isEqualTo(name1);
-    assertThat(actual.get(1).name()).isEqualTo(name3);
+    Truth.assertThat(actual.get(0).name()).isEqualTo(name1);
+    Truth.assertThat(actual.get(1).name()).isEqualTo(name3);
     assertThat(actualBucket).isEqualTo(BUCKET);
     assertThat(actualOptions)
         .isEqualTo(
@@ -221,8 +222,8 @@ public final class GcsResourceManagerTest {
     BlobListOption actualOptions = listOptionsCaptor.getValue();
 
     assertThat(actual).hasSize(2);
-    assertThat(actual.get(0).name()).isEqualTo(name1);
-    assertThat(actual.get(1).name()).isEqualTo(name3);
+    Truth.assertThat(actual.get(0).name()).isEqualTo(name1);
+    Truth.assertThat(actual.get(1).name()).isEqualTo(name3);
     assertThat(actualBucket).isEqualTo(BUCKET);
     assertThat(actualOptions)
         .isEqualTo(
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/bigquery/conditions/BigQueryRowsCheck.java
 
b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/bigquery/conditions/BigQueryRowsCheck.java
index 57b7d5ac99c..da0cf5e55db 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/bigquery/conditions/BigQueryRowsCheck.java
+++ 
b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/bigquery/conditions/BigQueryRowsCheck.java
@@ -19,8 +19,8 @@ package org.apache.beam.it.gcp.bigquery.conditions;
 
 import com.google.auto.value.AutoValue;
 import com.google.cloud.bigquery.TableId;
-import org.apache.beam.it.conditions.ConditionCheck;
 import org.apache.beam.it.common.bigquery.BigQueryResourceManager;
+import org.apache.beam.it.conditions.ConditionCheck;
 import org.checkerframework.checker.nullness.qual.Nullable;
 
 /** ConditionCheck to validate if BigQuery has received a certain number of 
rows. */
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/dataflow/ClassicTemplateClient.java
 
b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/dataflow/ClassicTemplateClient.java
index 296f7092cfa..7908246dce1 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/dataflow/ClassicTemplateClient.java
+++ 
b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/dataflow/ClassicTemplateClient.java
@@ -30,7 +30,6 @@ import com.google.auth.Credentials;
 import com.google.auth.http.HttpCredentialsAdapter;
 import dev.failsafe.Failsafe;
 import java.io.IOException;
-
 import org.apache.beam.it.common.dataflow.AbstractPipelineLauncher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/dataflow/FlexTemplateClient.java
 
b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/dataflow/FlexTemplateClient.java
index 3e7270dbd34..496c4b0e980 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/dataflow/FlexTemplateClient.java
+++ 
b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/dataflow/FlexTemplateClient.java
@@ -32,7 +32,6 @@ import com.google.auth.Credentials;
 import com.google.auth.http.HttpCredentialsAdapter;
 import dev.failsafe.Failsafe;
 import java.io.IOException;
-
 import org.apache.beam.it.common.dataflow.AbstractPipelineLauncher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/spanner/matchers/SpannerAsserts.java
 
b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/spanner/matchers/SpannerAsserts.java
index 5a101e08d37..1778d70cf60 100644
--- 
a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/spanner/matchers/SpannerAsserts.java
+++ 
b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/spanner/matchers/SpannerAsserts.java
@@ -17,7 +17,7 @@
  */
 package org.apache.beam.it.gcp.spanner.matchers;
 
-import static 
org.apache.beam.it.gcp.artifacts.utils.JsonTestUtil.parseJsonString;
+import static 
org.apache.beam.it.common.artifacts.utils.JsonTestUtil.parseJsonString;
 import static 
org.apache.beam.it.truthmatchers.PipelineAsserts.assertThatRecords;
 
 import com.google.cloud.spanner.Mutation;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/WordCountIT.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/WordCountIT.java
index 9719caa59f1..16cf2b8f4d3 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/WordCountIT.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/WordCountIT.java
@@ -25,12 +25,11 @@ import java.io.IOException;
 import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
-
-import org.apache.beam.it.common.dataflow.IOLoadTestBase;
 import org.apache.beam.it.common.PipelineLauncher.LaunchConfig;
 import org.apache.beam.it.common.PipelineLauncher.LaunchInfo;
 import org.apache.beam.it.common.PipelineLauncher.Sdk;
 import org.apache.beam.it.common.PipelineOperator.Result;
+import org.apache.beam.it.common.dataflow.IOLoadTestBase;
 import org.apache.beam.runners.dataflow.DataflowRunner;
 import org.apache.beam.sdk.io.TextIO;
 import org.apache.beam.sdk.options.PipelineOptions;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryIOLT.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryIOLT.java
index b734f93478e..9ac03db1c74 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryIOLT.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryIOLT.java
@@ -44,8 +44,9 @@ import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
 import org.apache.beam.it.common.bigquery.BigQueryResourceManager;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOLoadTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import org.apache.beam.sdk.io.Read;
 import org.apache.beam.sdk.io.gcp.bigquery.AvroWriteRequest;
 import org.apache.beam.sdk.io.gcp.bigquery.BigQueryIO;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryIOST.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryIOST.java
index 4c86eb139bf..495a4d4485d 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryIOST.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigquery/BigQueryIOST.java
@@ -42,8 +42,9 @@ import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
 import org.apache.beam.it.common.bigquery.BigQueryResourceManager;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOStressTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import 
org.apache.beam.runners.dataflow.options.DataflowPipelineWorkerPoolOptions;
 import org.apache.beam.sdk.io.Read;
 import org.apache.beam.sdk.io.gcp.bigquery.AvroWriteRequest;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigtable/BigTableIOLT.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigtable/BigTableIOLT.java
index 03efb42dafb..27773121e79 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigtable/BigTableIOLT.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigtable/BigTableIOLT.java
@@ -34,8 +34,9 @@ import java.util.Random;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOLoadTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import org.apache.beam.sdk.io.GenerateSequence;
 import org.apache.beam.sdk.io.gcp.bigtable.BigtableIO;
 import org.apache.beam.sdk.testing.TestPipeline;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigtable/BigTableIOST.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigtable/BigTableIOST.java
index 5e70a0e2d58..b86f13a0de1 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigtable/BigTableIOST.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/bigtable/BigTableIOST.java
@@ -37,8 +37,9 @@ import java.util.UUID;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOStressTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import 
org.apache.beam.runners.dataflow.options.DataflowPipelineWorkerPoolOptions;
 import org.apache.beam.sdk.io.Read;
 import org.apache.beam.sdk.io.gcp.bigtable.BigtableIO;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/pubsub/PubSubIOST.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/pubsub/PubSubIOST.java
index 98092152ad2..47058c75e39 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/pubsub/PubSubIOST.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/pubsub/PubSubIOST.java
@@ -37,8 +37,9 @@ import java.util.Objects;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOStressTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import 
org.apache.beam.runners.dataflow.options.DataflowPipelineWorkerPoolOptions;
 import org.apache.beam.sdk.extensions.protobuf.Proto3SchemaMessages.Primitive;
 import org.apache.beam.sdk.io.Read;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/pubsub/PubsubIOLT.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/pubsub/PubsubIOLT.java
index 360073ac0e9..da43fca2eaa 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/pubsub/PubsubIOLT.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/pubsub/PubsubIOLT.java
@@ -37,8 +37,9 @@ import java.util.Objects;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOLoadTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import org.apache.beam.runners.direct.DirectOptions;
 import org.apache.beam.sdk.extensions.protobuf.Proto3SchemaMessages.Primitive;
 import org.apache.beam.sdk.io.Read;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/spanner/SpannerIOLT.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/spanner/SpannerIOLT.java
index 99682746d2b..4441b8dcd6b 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/spanner/SpannerIOLT.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/spanner/SpannerIOLT.java
@@ -37,8 +37,9 @@ import java.util.UUID;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOLoadTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import org.apache.beam.sdk.io.GenerateSequence;
 import org.apache.beam.sdk.io.gcp.spanner.SpannerIO;
 import org.apache.beam.sdk.io.synthetic.SyntheticSourceOptions;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/spanner/SpannerIOST.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/spanner/SpannerIOST.java
index 01d8deef177..4eb7030c23c 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/spanner/SpannerIOST.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/spanner/SpannerIOST.java
@@ -37,8 +37,9 @@ import java.util.UUID;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOStressTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import 
org.apache.beam.runners.dataflow.options.DataflowPipelineWorkerPoolOptions;
 import org.apache.beam.sdk.io.Read;
 import org.apache.beam.sdk.io.gcp.spanner.SpannerIO;
diff --git 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/storage/FileBasedIOLT.java
 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/storage/FileBasedIOLT.java
index abec875981f..ac1a7fc103c 100644
--- 
a/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/storage/FileBasedIOLT.java
+++ 
b/it/google-cloud-platform/src/test/java/org/apache/beam/it/gcp/storage/FileBasedIOLT.java
@@ -33,8 +33,10 @@ import java.util.UUID;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOLoadTestBase;
+import org.apache.beam.it.common.storage.GcsResourceManager;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import org.apache.beam.sdk.io.Compression;
 import org.apache.beam.sdk.io.Read;
 import org.apache.beam.sdk.io.TextIO;
diff --git a/it/iceberg/build.gradle b/it/iceberg/build.gradle
index 1a61f86367b..0d4e648151b 100644
--- a/it/iceberg/build.gradle
+++ b/it/iceberg/build.gradle
@@ -135,6 +135,7 @@ dependencies {
 
   testImplementation project(path: ":sdks:java:extensions:protobuf", 
configuration: "testRuntimeMigration")
   testImplementation project(path: ":sdks:java:io:synthetic")
+  testImplementation project(path: ":sdks:java:io:iceberg")
   testImplementation project(path: ":it:common", configuration: 
"testRuntimeMigration")
   testImplementation library.java.mockito_inline
   testImplementation project(path: 
":sdks:java:extensions:google-cloud-platform-core", configuration: 
"testRuntimeMigration")
diff --git 
a/it/iceberg/src/test/java/org/apache/beam/it/iceberg/IcebergIOLT.java 
b/it/iceberg/src/test/java/org/apache/beam/it/iceberg/IcebergIOLT.java
index 3f486ec3f5d..b4e477f8ec0 100644
--- a/it/iceberg/src/test/java/org/apache/beam/it/iceberg/IcebergIOLT.java
+++ b/it/iceberg/src/test/java/org/apache/beam/it/iceberg/IcebergIOLT.java
@@ -1,7 +1,358 @@
+/*
+ * 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.beam.it.iceberg;
 
+import static 
org.apache.beam.it.truthmatchers.PipelineAsserts.assertThatResult;
+import static org.junit.Assert.assertEquals;
+
+import com.google.auto.value.AutoValue;
+import java.io.IOException;
+import java.text.ParseException;
+import java.time.Duration;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
+import java.util.Random;
+import java.util.UUID;
+import org.apache.beam.it.common.PipelineLauncher;
+import org.apache.beam.it.common.PipelineOperator;
+import org.apache.beam.it.common.TestProperties;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOLoadTestBase;
+import org.apache.beam.it.common.storage.GcsResourceManager;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import org.apache.beam.sdk.io.GenerateSequence;
+import org.apache.beam.sdk.io.iceberg.IcebergCatalogConfig;
+import org.apache.beam.sdk.io.iceberg.IcebergIO;
+import org.apache.beam.sdk.schemas.Schema;
+import org.apache.beam.sdk.testing.TestPipeline;
+import org.apache.beam.sdk.testing.TestPipelineOptions;
+import org.apache.beam.sdk.transforms.DoFn;
+import org.apache.beam.sdk.transforms.ParDo;
+import org.apache.beam.sdk.values.Row;
+import org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Strings;
+import 
org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.collect.ImmutableMap;
+import org.apache.iceberg.CatalogUtil;
+import org.apache.iceberg.catalog.TableIdentifier;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+
+/**
+ * IcebergIO performance tests using a Hadoop catalog backed by GCS.
+ *
+ * <p>The test writes generated rows to an Iceberg table, reads the table 
back, validates the number
+ * of rows, and exports write and read performance metrics.
+ *
+ * <p>Example trigger command:
+ *
+ * <pre>
+ * ./gradlew :it:iceberg:integrationTest \
+ *   --tests "org.apache.beam.it.iceberg.IcebergIOLT" \
+ *   -Dconfiguration=local \
+ *   -Dproject=[gcpProject] \
+ *   -DartifactBucket=[artifactBucket]
+ * </pre>
+ */
+public final class IcebergIOLT extends IOLoadTestBase {
+
+  private static final String READ_ELEMENT_METRIC_NAME = "read_count";
+  private static final String NAMESPACE = "default";
+
+  private static final Schema ROW_SCHEMA =
+      Schema.builder().addInt64Field("id").addByteArrayField("data").build();
+
+  private static final Map<String, Configuration> TEST_CONFIGS =
+      ImmutableMap.of(
+          "local",
+          Configuration.of(1_000L, 5, "DirectRunner", 1_000), // approximately 
1 MB
+          "small",
+          Configuration.of(1_000_000L, 20, "DataflowRunner", 1_000), // 
approximately 1 GB
+          "medium",
+          Configuration.of(10_000_000L, 40, "DataflowRunner", 1_000), // 
approximately 10 GB
+          "large",
+          Configuration.of(100_000_000L, 100, "DataflowRunner", 1_000) // 
approximately 100 GB
+          );
+
+  private static GcsResourceManager resourceManager;
+
+  private Configuration configuration;
+  private IcebergCatalogConfig catalogConfig;
+  private TableIdentifier tableIdentifier;
+
+  @Rule public TestPipeline writePipeline = TestPipeline.create();
+
+  @Rule public TestPipeline readPipeline = TestPipeline.create();
+
+  @BeforeClass
+  public static void beforeClass() {
+    resourceManager =
+        GcsResourceManager.builder(TestProperties.artifactBucket(), 
"icebergiolt", CREDENTIALS)
+            .build();
+  }
+
+  @AfterClass
+  public static void tearDownClass() {
+    ResourceManagerUtils.cleanResources(resourceManager);
+  }
+
+  @Before
+  public void setup() {
+    configuration = getTestConfiguration();
+
+    String uniqueSuffix =
+        DateTimeFormatter.ofPattern("MMddHHmmssSSS")
+                .withZone(ZoneOffset.UTC)
+                .format(java.time.Instant.now())
+            + "-"
+            + UUID.randomUUID().toString().substring(0, 10);
+
+    String warehouseDirectory = "icebergiolt-" + uniqueSuffix;
+    resourceManager.registerTempDir(warehouseDirectory);
+
+    String warehouseLocation =
+        String.format("gs://%s/%s", TestProperties.artifactBucket(), 
warehouseDirectory);
+
+    tableIdentifier = TableIdentifier.of(NAMESPACE, "table_" + 
uniqueSuffix.replace("-", "_"));
+
+    Map<String, String> catalogProperties =
+        ImmutableMap.of(
+            "type", CatalogUtil.ICEBERG_CATALOG_TYPE_HADOOP, "warehouse", 
warehouseLocation);
+
+    catalogConfig =
+        IcebergCatalogConfig.builder()
+            .setCatalogName("iceberg-load-test")
+            .setCatalogProperties(catalogProperties)
+            .build();
+
+    setTempLocation(writePipeline);
+    setTempLocation(readPipeline);
+  }
+
+  /** Writes generated rows to Iceberg and verifies that all rows can be read 
back. */
+  @Test
+  public void testIcebergWriteAndRead() throws IOException {
+    PipelineLauncher.LaunchInfo writeInfo = testWrite();
+
+    PipelineOperator.Result writeResult =
+        pipelineOperator.waitUntilDone(
+            createConfig(writeInfo, 
Duration.ofMinutes(configuration.getPipelineTimeout())));
+
+    assertThatResult(writeResult).isLaunchFinished();
+    assertEquals(
+        PipelineLauncher.JobState.DONE,
+        pipelineLauncher.getJobStatus(project, region, writeInfo.jobId()));
+
+    PipelineLauncher.LaunchInfo readInfo = testRead();
+
+    PipelineOperator.Result readResult =
+        pipelineOperator.waitUntilDone(
+            createConfig(readInfo, 
Duration.ofMinutes(configuration.getPipelineTimeout())));
+
+    assertThatResult(readResult).isLaunchFinished();
+    assertEquals(
+        PipelineLauncher.JobState.DONE,
+        pipelineLauncher.getJobStatus(project, region, readInfo.jobId()));
+
+    double numRecords =
+        pipelineLauncher.getMetric(
+            project,
+            region,
+            readInfo.jobId(),
+            getBeamMetricsName(PipelineMetricsType.COUNTER, 
READ_ELEMENT_METRIC_NAME));
+
+    assertEquals((double) configuration.getNumRows(), numRecords, 0.5);
+
+    exportMetrics(writeInfo, readInfo);
+  }
+
+  private PipelineLauncher.LaunchInfo testWrite() throws IOException {
+    writePipeline
+        .apply("Generate records", 
GenerateSequence.from(0).to(configuration.getNumRows()))
+        .apply("Map records", ParDo.of(new 
MapToIcebergFormat(configuration.getValueSizeBytes())))
+        .setRowSchema(ROW_SCHEMA)
+        .apply("Write to Iceberg", 
IcebergIO.writeRows(catalogConfig).to(tableIdentifier));
+
+    PipelineLauncher.LaunchConfig options =
+        PipelineLauncher.LaunchConfig.builder("write-iceberg")
+            .setSdk(PipelineLauncher.Sdk.JAVA)
+            .setPipeline(writePipeline)
+            .addParameter("runner", configuration.getRunner())
+            .addParameter(
+                "maxNumWorkers",
+                TestProperties.getProperty("maxNumWorkers", "10", 
TestProperties.Type.PROPERTY))
+            .build();
+
+    return pipelineLauncher.launch(project, region, options);
+  }
+
+  private PipelineLauncher.LaunchInfo testRead() throws IOException {
+    readPipeline
+        .apply("Read from Iceberg", 
IcebergIO.readRows(catalogConfig).from(tableIdentifier))
+        .apply("Counting element", ParDo.of(new 
CountingFn<>(READ_ELEMENT_METRIC_NAME)));
+
+    PipelineLauncher.LaunchConfig options =
+        PipelineLauncher.LaunchConfig.builder("read-iceberg")
+            .setSdk(PipelineLauncher.Sdk.JAVA)
+            .setPipeline(readPipeline)
+            .addParameter("runner", configuration.getRunner())
+            .addParameter(
+                "maxNumWorkers",
+                TestProperties.getProperty("maxNumWorkers", "10", 
TestProperties.Type.PROPERTY))
+            .build();
+
+    return pipelineLauncher.launch(project, region, options);
+  }
+
+  private void exportMetrics(
+      PipelineLauncher.LaunchInfo writeInfo, PipelineLauncher.LaunchInfo 
readInfo) {
+
+    /*
+     * Only use PCollection names belonging to transforms defined directly in 
this test.
+     * Internal IcebergIO transform names may change when the implementation 
changes.
+     */
+    MetricsConfiguration writeMetricsConfig =
+        MetricsConfiguration.builder()
+            .setInputPCollection("Map records.out0")
+            .setInputPCollectionV2("Map 
records/ParMultiDo(MapToIcebergFormat).out0")
+            .build();
+
+    MetricsConfiguration readMetricsConfig =
+        MetricsConfiguration.builder()
+            .setOutputPCollection("Counting element.out0")
+            .setOutputPCollectionV2("Counting 
element/ParMultiDo(Counting).out0")
+            .build();
+
+    try {
+      exportMetricsToBigQuery(writeInfo, getMetrics(writeInfo, 
writeMetricsConfig));
+
+      exportMetricsToBigQuery(readInfo, getMetrics(readInfo, 
readMetricsConfig));
+    } catch (IOException | ParseException | InterruptedException e) {
+      throw new RuntimeException("Unable to collect or export IcebergIO 
load-test metrics.", e);
+    }
+  }
+
+  private Configuration getTestConfiguration() {
+    String testConfig =
+        TestProperties.getProperty("configuration", "local", 
TestProperties.Type.PROPERTY);
+
+    Configuration selectedConfiguration = TEST_CONFIGS.get(testConfig);
+
+    if (selectedConfiguration == null) {
+      throw new IllegalArgumentException(
+          String.format(
+              "Unknown test configuration: [%s]. Known configurations: %s",
+              testConfig, TEST_CONFIGS.keySet()));
+    }
+
+    return selectedConfiguration;
+  }
+
+  private static void setTempLocation(TestPipeline pipeline) {
+    String tempBucketName = TestProperties.artifactBucket();
+
+    if (Strings.isNullOrEmpty(tempBucketName)) {
+      return;
+    }
+
+    String tempLocation = String.format("gs://%s/temp/", tempBucketName);
+
+    
pipeline.getOptions().as(TestPipelineOptions.class).setTempRoot(tempLocation);
+
+    pipeline.getOptions().setTempLocation(tempLocation);
+  }
+
+  /** Maps a generated sequence value to a deterministic Iceberg-compatible 
Beam row. */
+  private static class MapToIcebergFormat extends DoFn<Long, Row> {
+
+    private final int valueSizeBytes;
+
+    private MapToIcebergFormat(int valueSizeBytes) {
+      if (valueSizeBytes <= 0) {
+        throw new IllegalArgumentException("valueSizeBytes must be positive.");
+      }
+
+      this.valueSizeBytes = valueSizeBytes;
+    }
+
+    @ProcessElement
+    public void processElement(@Element Long index, OutputReceiver<Row> 
output) {
+
+      byte[] value = new byte[valueSizeBytes];
+
+      /*
+       * Using the row index as the seed makes retries deterministic. Random 
data also prevents
+       * compression from making the generated payload significantly smaller 
than configured.
+       */
+      new Random(index).nextBytes(value);
+
+      output.output(Row.withSchema(ROW_SCHEMA).addValues(index, 
value).build());
+    }
+  }
+
+  /** Options for the IcebergIO load test. */
+  @AutoValue
+  abstract static class Configuration {
+
+    abstract long getNumRows();
+
+    abstract int getPipelineTimeout();
+
+    abstract String getRunner();
+
+    abstract int getValueSizeBytes();
+
+    static Configuration of(long numRows, int pipelineTimeout, String runner, 
int valueSizeBytes) {
+
+      if (numRows <= 0) {
+        throw new IllegalArgumentException("numRows must be positive.");
+      }
+
+      if (pipelineTimeout <= 0) {
+        throw new IllegalArgumentException("pipelineTimeout must be 
positive.");
+      }
+
+      if (valueSizeBytes <= 0) {
+        throw new IllegalArgumentException("valueSizeBytes must be positive.");
+      }
+
+      return new AutoValue_IcebergIOLT_Configuration.Builder()
+          .setNumRows(numRows)
+          .setPipelineTimeout(pipelineTimeout)
+          .setRunner(runner)
+          .setValueSizeBytes(valueSizeBytes)
+          .build();
+    }
+
+    @AutoValue.Builder
+    abstract static class Builder {
+
+      abstract Builder setNumRows(long numRows);
+
+      abstract Builder setPipelineTimeout(int pipelineTimeout);
+
+      abstract Builder setRunner(String runner);
 
-public class IcebergIOLT extends IOLoadTestBase {
+      abstract Builder setValueSizeBytes(int valueSizeBytes);
 
+      abstract Configuration build();
+    }
+  }
 }
diff --git a/it/kafka/src/test/java/org/apache/beam/it/kafka/KafkaIOLT.java 
b/it/kafka/src/test/java/org/apache/beam/it/kafka/KafkaIOLT.java
index 4b0ecbfd343..1607ca1cd67 100644
--- a/it/kafka/src/test/java/org/apache/beam/it/kafka/KafkaIOLT.java
+++ b/it/kafka/src/test/java/org/apache/beam/it/kafka/KafkaIOLT.java
@@ -27,12 +27,12 @@ import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 import java.util.Map;
 import java.util.UUID;
-import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
-import org.apache.beam.it.common.utils.ResourceManagerUtils;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOLoadTestBase;
+import org.apache.beam.it.common.utils.ResourceManagerUtils;
 import org.apache.beam.runners.direct.DirectOptions;
 import org.apache.beam.sdk.io.kafka.KafkaIO;
 import org.apache.beam.sdk.io.synthetic.SyntheticOptions;
diff --git a/it/kafka/src/test/java/org/apache/beam/it/kafka/KafkaIOST.java 
b/it/kafka/src/test/java/org/apache/beam/it/kafka/KafkaIOST.java
index cfc11127c34..d6231a69f1e 100644
--- a/it/kafka/src/test/java/org/apache/beam/it/kafka/KafkaIOST.java
+++ b/it/kafka/src/test/java/org/apache/beam/it/kafka/KafkaIOST.java
@@ -31,10 +31,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.UUID;
-import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.PipelineLauncher;
 import org.apache.beam.it.common.PipelineOperator;
 import org.apache.beam.it.common.TestProperties;
+import 
org.apache.beam.it.common.dataflow.DefaultPipelineLauncher.PipelineMetricsType;
 import org.apache.beam.it.common.dataflow.IOStressTestBase;
 import 
org.apache.beam.runners.dataflow.options.DataflowPipelineWorkerPoolOptions;
 import org.apache.beam.sdk.io.Read;

Reply via email to