This is an automated email from the ASF dual-hosted git repository.
blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/master by this push:
new 7c97976 Apply table import test suites to Spark 3 (#1166)
7c97976 is described below
commit 7c97976ce56057e2c9512aaab73bf01a0b8dc0f5
Author: Ryan Blue <[email protected]>
AuthorDate: Wed Jul 8 16:22:55 2020 -0700
Apply table import test suites to Spark 3 (#1166)
---
.../actions/TestRemoveOrphanFilesAction.java | 22 +--------
.../actions/TestRewriteDataFilesAction.java | 22 +--------
.../actions/TestRewriteManifestsAction.java | 26 ++---------
.../source/TestIcebergSourceHadoopTables.java | 23 +--------
.../spark/source/TestIcebergSourceHiveTables.java | 54 ++++------------------
.../spark/source/TestIcebergSourceTablesBase.java | 38 ++++++++++-----
.../actions/TestRemoveOrphanFilesAction24.java | 23 +++++++++
.../actions/TestRewriteDataFilesAction24.java | 23 +++++++++
.../actions/TestRewriteManifestsAction24.java | 26 +++++++++++
.../source/TestIcebergSourceHadoopTables24.java | 23 +++++++++
.../source/TestIcebergSourceHiveTables24.java | 23 +++++++++
.../actions/TestRemoveOrphanFilesAction3.java | 25 ++++++++++
.../spark/actions/TestRewriteDataFilesAction3.java | 25 ++++++++++
.../spark/actions/TestRewriteManifestsAction3.java | 28 +++++++++++
.../source/TestIcebergSourceHadoopTables3.java | 23 +++++++++
.../spark/source/TestIcebergSourceHiveTables3.java | 23 +++++++++
16 files changed, 285 insertions(+), 142 deletions(-)
diff --git
a/spark2/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
b/spark/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
similarity index 97%
rename from
spark2/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
rename to
spark/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
index c7f43b1..0cc05b0 100644
---
a/spark2/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
+++
b/spark/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction.java
@@ -41,23 +41,21 @@ import org.apache.iceberg.hadoop.HadoopTables;
import org.apache.iceberg.hadoop.HiddenPathFilter;
import org.apache.iceberg.relocated.com.google.common.collect.Lists;
import org.apache.iceberg.relocated.com.google.common.collect.Maps;
+import org.apache.iceberg.spark.SparkTestBase;
import org.apache.iceberg.spark.source.ThreeColumnRecord;
import org.apache.iceberg.types.Types;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
-import org.apache.spark.sql.SparkSession;
-import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import static org.apache.iceberg.types.Types.NestedField.optional;
-public class TestRemoveOrphanFilesAction {
+public abstract class TestRemoveOrphanFilesAction extends SparkTestBase {
private static final HadoopTables TABLES = new HadoopTables(new
Configuration());
private static final Schema SCHEMA = new Schema(
@@ -70,22 +68,6 @@ public class TestRemoveOrphanFilesAction {
.identity("c3")
.build();
- private static SparkSession spark;
-
- @BeforeClass
- public static void startSpark() {
- TestRemoveOrphanFilesAction.spark = SparkSession.builder()
- .master("local[2]")
- .getOrCreate();
- }
-
- @AfterClass
- public static void stopSpark() {
- SparkSession currentSpark = TestRemoveOrphanFilesAction.spark;
- TestRemoveOrphanFilesAction.spark = null;
- currentSpark.stop();
- }
-
@Rule
public TemporaryFolder temp = new TemporaryFolder();
private File tableDir = null;
diff --git
a/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
b/spark/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
similarity index 95%
rename from
spark2/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
rename to
spark/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
index 75a88fa..5c6ae59 100644
---
a/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
+++
b/spark/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction.java
@@ -34,23 +34,21 @@ import org.apache.iceberg.hadoop.HadoopTables;
import org.apache.iceberg.io.CloseableIterable;
import org.apache.iceberg.relocated.com.google.common.collect.Lists;
import org.apache.iceberg.relocated.com.google.common.collect.Maps;
+import org.apache.iceberg.spark.SparkTestBase;
import org.apache.iceberg.spark.source.ThreeColumnRecord;
import org.apache.iceberg.types.Types;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
-import org.apache.spark.sql.SparkSession;
-import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import static org.apache.iceberg.types.Types.NestedField.optional;
-public class TestRewriteDataFilesAction {
+public abstract class TestRewriteDataFilesAction extends SparkTestBase {
private static final HadoopTables TABLES = new HadoopTables(new
Configuration());
private static final Schema SCHEMA = new Schema(
@@ -59,22 +57,6 @@ public class TestRewriteDataFilesAction {
optional(3, "c3", Types.StringType.get())
);
- private static SparkSession spark;
-
- @BeforeClass
- public static void startSpark() {
- TestRewriteDataFilesAction.spark = SparkSession.builder()
- .master("local[2]")
- .getOrCreate();
- }
-
- @AfterClass
- public static void stopSpark() {
- SparkSession currentSpark = TestRewriteDataFilesAction.spark;
- TestRewriteDataFilesAction.spark = null;
- currentSpark.stop();
- }
-
@Rule
public TemporaryFolder temp = new TemporaryFolder();
diff --git
a/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
b/spark/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
similarity index 95%
rename from
spark2/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
rename to
spark/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
index b3877dd..718f12f 100644
---
a/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
+++
b/spark/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction.java
@@ -34,17 +34,15 @@ import org.apache.iceberg.hadoop.HadoopTables;
import org.apache.iceberg.relocated.com.google.common.collect.Lists;
import org.apache.iceberg.relocated.com.google.common.collect.Maps;
import org.apache.iceberg.spark.SparkTableUtil;
+import org.apache.iceberg.spark.SparkTestBase;
import org.apache.iceberg.spark.source.ThreeColumnRecord;
import org.apache.iceberg.types.Types;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
-import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.catalyst.TableIdentifier;
-import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -54,7 +52,7 @@ import org.junit.runners.Parameterized;
import static org.apache.iceberg.types.Types.NestedField.optional;
@RunWith(Parameterized.class)
-public class TestRewriteManifestsAction {
+public abstract class TestRewriteManifestsAction extends SparkTestBase {
private static final HadoopTables TABLES = new HadoopTables(new
Configuration());
private static final Schema SCHEMA = new Schema(
@@ -63,8 +61,6 @@ public class TestRewriteManifestsAction {
optional(3, "c3", Types.StringType.get())
);
- private static SparkSession spark;
-
@Parameterized.Parameters
public static Object[][] parameters() {
return new Object[][] {
@@ -73,20 +69,6 @@ public class TestRewriteManifestsAction {
};
}
- @BeforeClass
- public static void startSpark() {
- TestRewriteManifestsAction.spark = SparkSession.builder()
- .master("local[2]")
- .getOrCreate();
- }
-
- @AfterClass
- public static void stopSpark() {
- SparkSession currentSpark = TestRewriteManifestsAction.spark;
- TestRewriteManifestsAction.spark = null;
- currentSpark.stop();
- }
-
@Rule
public TemporaryFolder temp = new TemporaryFolder();
@@ -123,7 +105,7 @@ public class TestRewriteManifestsAction {
}
@Test
- public void testRewriteSmallManifestsNonPartitionedTable() throws
IOException {
+ public void testRewriteSmallManifestsNonPartitionedTable() {
PartitionSpec spec = PartitionSpec.unpartitioned();
Map<String, String> options = Maps.newHashMap();
options.put(TableProperties.SNAPSHOT_ID_INHERITANCE_ENABLED,
snapshotIdInheritanceEnabled);
@@ -177,7 +159,7 @@ public class TestRewriteManifestsAction {
}
@Test
- public void testRewriteSmallManifestsPartitionedTable() throws IOException {
+ public void testRewriteSmallManifestsPartitionedTable() {
PartitionSpec spec = PartitionSpec.builderFor(SCHEMA)
.identity("c1")
.truncate("c2", 2)
diff --git
a/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
b/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
similarity index 77%
rename from
spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
rename to
spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
index e1674a1..b869d7f 100644
---
a/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
+++
b/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables.java
@@ -26,33 +26,12 @@ import org.apache.iceberg.Schema;
import org.apache.iceberg.Table;
import org.apache.iceberg.catalog.TableIdentifier;
import org.apache.iceberg.hadoop.HadoopTables;
-import org.apache.spark.sql.SparkSession;
-import org.junit.AfterClass;
import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.rules.TemporaryFolder;
-public class TestIcebergSourceHadoopTables extends TestIcebergSourceTablesBase
{
+public abstract class TestIcebergSourceHadoopTables extends
TestIcebergSourceTablesBase {
private static final HadoopTables TABLES = new HadoopTables(new
Configuration());
- @BeforeClass
- public static void startSpark() {
- TestIcebergSourceHadoopTables.spark = SparkSession.builder()
- .master("local[2]")
- .getOrCreate();
- }
-
- @AfterClass
- public static void stopSpark() {
- TestIcebergSourceHadoopTables.spark.stop();
- TestIcebergSourceHadoopTables.spark = null;
- }
-
- @Rule
- public TemporaryFolder temp = new TemporaryFolder();
-
File tableDir = null;
String tableLocation = null;
diff --git
a/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
b/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
similarity index 55%
rename from
spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
rename to
spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
index 6854a09..718d899 100644
---
a/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
+++
b/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables.java
@@ -20,71 +20,33 @@
package org.apache.iceberg.spark.source;
import java.io.IOException;
-import java.util.HashMap;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.metastore.api.Database;
import org.apache.iceberg.PartitionSpec;
import org.apache.iceberg.Schema;
import org.apache.iceberg.Table;
+import org.apache.iceberg.catalog.Namespace;
import org.apache.iceberg.catalog.TableIdentifier;
-import org.apache.iceberg.hive.HiveCatalog;
-import org.apache.iceberg.hive.HiveClientPool;
-import org.apache.iceberg.hive.TestHiveMetastore;
-import org.apache.spark.sql.SparkSession;
import org.junit.After;
-import org.junit.AfterClass;
import org.junit.BeforeClass;
-import static org.apache.hadoop.hive.conf.HiveConf.ConfVars.METASTOREURIS;
+public abstract class TestIcebergSourceHiveTables extends
TestIcebergSourceTablesBase {
-public class TestIcebergSourceHiveTables extends TestIcebergSourceTablesBase {
-
- private static TestHiveMetastore metastore;
- private static HiveClientPool clients;
- private static HiveConf hiveConf;
- private static HiveCatalog catalog;
private static TableIdentifier currentIdentifier;
@BeforeClass
- public static void startMetastoreAndSpark() throws Exception {
- TestIcebergSourceHiveTables.metastore = new TestHiveMetastore();
- metastore.start();
- TestIcebergSourceHiveTables.hiveConf = metastore.hiveConf();
- String dbPath = metastore.getDatabasePath("db");
- Database db = new Database("db", "desc", dbPath, new HashMap<>());
- TestIcebergSourceHiveTables.clients = new HiveClientPool(1, hiveConf);
- clients.run(client -> {
- client.createDatabase(db);
- return null;
- });
-
- TestIcebergSourceHiveTables.spark = SparkSession.builder()
- .master("local[2]")
- .config("spark.hadoop." + METASTOREURIS.varname,
hiveConf.get(METASTOREURIS.varname))
- .getOrCreate();
-
- TestIcebergSourceHiveTables.catalog = new HiveCatalog(hiveConf);
- }
-
- @AfterClass
- public static void stopMetastoreAndSpark() {
- catalog.close();
- TestIcebergSourceHiveTables.catalog = null;
- clients.close();
- TestIcebergSourceHiveTables.clients = null;
- metastore.stop();
- TestIcebergSourceHiveTables.metastore = null;
- spark.stop();
- TestIcebergSourceHiveTables.spark = null;
+ public static void start() {
+ Namespace db = Namespace.of("db");
+ if (!catalog.namespaceExists(db)) {
+ catalog.createNamespace(db);
+ }
}
@After
public void dropTable() throws IOException {
Table table = catalog.loadTable(currentIdentifier);
Path tablePath = new Path(table.location());
- FileSystem fs = tablePath.getFileSystem(hiveConf);
+ FileSystem fs =
tablePath.getFileSystem(spark.sparkContext().hadoopConfiguration());
fs.delete(tablePath, true);
catalog.dropTable(currentIdentifier, false);
}
diff --git
a/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
b/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
similarity index 97%
rename from
spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
rename to
spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
index e17836c..c8a72b5 100644
---
a/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
+++
b/spark/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceTablesBase.java
@@ -42,26 +42,30 @@ import
org.apache.iceberg.relocated.com.google.common.collect.ImmutableMap;
import org.apache.iceberg.relocated.com.google.common.collect.Iterables;
import org.apache.iceberg.relocated.com.google.common.collect.Lists;
import org.apache.iceberg.spark.SparkTableUtil;
+import org.apache.iceberg.spark.SparkTestBase;
import org.apache.iceberg.spark.data.TestHelpers;
import org.apache.iceberg.types.Types;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SaveMode;
-import org.apache.spark.sql.SparkSession;
import org.junit.Assert;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
import static org.apache.iceberg.types.Types.NestedField.optional;
-public abstract class TestIcebergSourceTablesBase {
+public abstract class TestIcebergSourceTablesBase extends SparkTestBase {
- protected static SparkSession spark;
private static final Schema SCHEMA = new Schema(
optional(1, "id", Types.IntegerType.get()),
optional(2, "data", Types.StringType.get())
);
+ @Rule
+ public TemporaryFolder temp = new TemporaryFolder();
+
public abstract Table createTable(TableIdentifier ident, Schema schema,
PartitionSpec spec);
public abstract Table loadTable(TableIdentifier ident, String entriesSuffix);
@@ -243,6 +247,8 @@ public abstract class TestIcebergSourceTablesBase {
@Test
public void testFilesTableWithSnapshotIdInheritance() throws Exception {
+ spark.sql("DROP TABLE IF EXISTS parquet_table");
+
TableIdentifier tableIdentifier = TableIdentifier.of("db",
"files_inheritance_test");
Table table = createTable(tableIdentifier, SCHEMA,
PartitionSpec.builderFor(SCHEMA).identity("id").build());
table.updateProperties()
@@ -251,17 +257,20 @@ public abstract class TestIcebergSourceTablesBase {
Table entriesTable = loadTable(tableIdentifier, "entries");
Table filesTable = loadTable(tableIdentifier, "files");
+ spark.sql(String.format(
+ "CREATE TABLE parquet_table (data string, id int) " +
+ "USING parquet PARTITIONED BY (id) LOCATION '%s'",
+ temp.newFolder()));
+
List<SimpleRecord> records = Lists.newArrayList(
new SimpleRecord(1, "a"),
new SimpleRecord(2, "b")
);
Dataset<Row> inputDF = spark.createDataFrame(records, SimpleRecord.class);
- inputDF.select("id", "data").write()
- .format("parquet")
+ inputDF.select("data", "id").write()
.mode("overwrite")
- .partitionBy("id")
- .saveAsTable("parquet_table");
+ .insertInto("parquet_table");
try {
String stagingLocation = table.location() + "/metadata";
@@ -297,7 +306,9 @@ public abstract class TestIcebergSourceTablesBase {
}
@Test
- public void testEntriesTableWithSnapshotIdInheritance() {
+ public void testEntriesTableWithSnapshotIdInheritance() throws Exception {
+ spark.sql("DROP TABLE IF EXISTS parquet_table");
+
TableIdentifier tableIdentifier = TableIdentifier.of("db",
"entries_inheritance_test");
PartitionSpec spec =
PartitionSpec.builderFor(SCHEMA).identity("id").build();
Table table = createTable(tableIdentifier, SCHEMA, spec);
@@ -306,17 +317,20 @@ public abstract class TestIcebergSourceTablesBase {
.set(TableProperties.SNAPSHOT_ID_INHERITANCE_ENABLED, "true")
.commit();
+ spark.sql(String.format(
+ "CREATE TABLE parquet_table (data string, id int) " +
+ "USING parquet PARTITIONED BY (id) LOCATION '%s'",
+ temp.newFolder()));
+
List<SimpleRecord> records = Lists.newArrayList(
new SimpleRecord(1, "a"),
new SimpleRecord(2, "b")
);
Dataset<Row> inputDF = spark.createDataFrame(records, SimpleRecord.class);
- inputDF.select("id", "data").write()
- .format("parquet")
+ inputDF.select("data", "id").write()
.mode("overwrite")
- .partitionBy("id")
- .saveAsTable("parquet_table");
+ .insertInto("parquet_table");
try {
String stagingLocation = table.location() + "/metadata";
diff --git
a/spark2/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction24.java
b/spark2/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction24.java
new file mode 100644
index 0000000..d3720cd
--- /dev/null
+++
b/spark2/src/test/java/org/apache/iceberg/actions/TestRemoveOrphanFilesAction24.java
@@ -0,0 +1,23 @@
+/*
+ * 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.iceberg.actions;
+
+public class TestRemoveOrphanFilesAction24 extends TestRemoveOrphanFilesAction
{
+}
diff --git
a/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction24.java
b/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction24.java
new file mode 100644
index 0000000..db9b603
--- /dev/null
+++
b/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteDataFilesAction24.java
@@ -0,0 +1,23 @@
+/*
+ * 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.iceberg.actions;
+
+public class TestRewriteDataFilesAction24 extends TestRewriteDataFilesAction {
+}
diff --git
a/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction24.java
b/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction24.java
new file mode 100644
index 0000000..87a207d
--- /dev/null
+++
b/spark2/src/test/java/org/apache/iceberg/actions/TestRewriteManifestsAction24.java
@@ -0,0 +1,26 @@
+/*
+ * 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.iceberg.actions;
+
+public class TestRewriteManifestsAction24 extends TestRewriteManifestsAction {
+ public TestRewriteManifestsAction24(String snapshotIdInheritanceEnabled) {
+ super(snapshotIdInheritanceEnabled);
+ }
+}
diff --git
a/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables24.java
b/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables24.java
new file mode 100644
index 0000000..1252f34
--- /dev/null
+++
b/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables24.java
@@ -0,0 +1,23 @@
+/*
+ * 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.iceberg.spark.source;
+
+public class TestIcebergSourceHadoopTables24 extends
TestIcebergSourceHadoopTables {
+}
diff --git
a/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables24.java
b/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables24.java
new file mode 100644
index 0000000..7ba46cb
--- /dev/null
+++
b/spark2/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables24.java
@@ -0,0 +1,23 @@
+/*
+ * 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.iceberg.spark.source;
+
+public class TestIcebergSourceHiveTables24 extends TestIcebergSourceHiveTables
{
+}
diff --git
a/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction3.java
b/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction3.java
new file mode 100644
index 0000000..f025e4f
--- /dev/null
+++
b/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRemoveOrphanFilesAction3.java
@@ -0,0 +1,25 @@
+/*
+ * 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.iceberg.spark.actions;
+
+import org.apache.iceberg.actions.TestRemoveOrphanFilesAction;
+
+public class TestRemoveOrphanFilesAction3 extends TestRemoveOrphanFilesAction {
+}
diff --git
a/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRewriteDataFilesAction3.java
b/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRewriteDataFilesAction3.java
new file mode 100644
index 0000000..1fe38bf
--- /dev/null
+++
b/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRewriteDataFilesAction3.java
@@ -0,0 +1,25 @@
+/*
+ * 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.iceberg.spark.actions;
+
+import org.apache.iceberg.actions.TestRewriteDataFilesAction;
+
+public class TestRewriteDataFilesAction3 extends TestRewriteDataFilesAction {
+}
diff --git
a/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRewriteManifestsAction3.java
b/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRewriteManifestsAction3.java
new file mode 100644
index 0000000..2c5e829
--- /dev/null
+++
b/spark3/src/test/java/org/apache/iceberg/spark/actions/TestRewriteManifestsAction3.java
@@ -0,0 +1,28 @@
+/*
+ * 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.iceberg.spark.actions;
+
+import org.apache.iceberg.actions.TestRewriteManifestsAction;
+
+public class TestRewriteManifestsAction3 extends TestRewriteManifestsAction {
+ public TestRewriteManifestsAction3(String snapshotIdInheritanceEnabled) {
+ super(snapshotIdInheritanceEnabled);
+ }
+}
diff --git
a/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables3.java
b/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables3.java
new file mode 100644
index 0000000..166a2be
--- /dev/null
+++
b/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHadoopTables3.java
@@ -0,0 +1,23 @@
+/*
+ * 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.iceberg.spark.source;
+
+public class TestIcebergSourceHadoopTables3 extends
TestIcebergSourceHadoopTables {
+}
diff --git
a/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables3.java
b/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables3.java
new file mode 100644
index 0000000..c69f3bb
--- /dev/null
+++
b/spark3/src/test/java/org/apache/iceberg/spark/source/TestIcebergSourceHiveTables3.java
@@ -0,0 +1,23 @@
+/*
+ * 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.iceberg.spark.source;
+
+public class TestIcebergSourceHiveTables3 extends TestIcebergSourceHiveTables {
+}