You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by op...@apache.org on 2021/03/03 12:48:18 UTC

[iceberg] branch master updated: Core: Add DeleteManifest position unit test. (#2271)

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

openinx 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 c7ad594  Core: Add DeleteManifest position unit test. (#2271)
c7ad594 is described below

commit c7ad594def20c17d5819683051fbbf802df1def2
Author: ForwardXu <fo...@gmail.com>
AuthorDate: Wed Mar 3 20:48:00 2021 +0800

    Core: Add DeleteManifest position unit test. (#2271)
---
 core/src/test/java/org/apache/iceberg/TableTestBase.java | 16 ++++++++++++++++
 .../test/java/org/apache/iceberg/TestManifestReader.java | 14 ++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/core/src/test/java/org/apache/iceberg/TableTestBase.java b/core/src/test/java/org/apache/iceberg/TableTestBase.java
index 184534f..7907ce7 100644
--- a/core/src/test/java/org/apache/iceberg/TableTestBase.java
+++ b/core/src/test/java/org/apache/iceberg/TableTestBase.java
@@ -214,6 +214,22 @@ public class TableTestBase {
     return writer.toManifestFile();
   }
 
+  ManifestFile writeDeleteManifest(int newFormatVersion, Long snapshotId, DeleteFile... deleteFiles)
+      throws IOException {
+    OutputFile manifestFile = org.apache.iceberg.Files
+        .localOutput(FileFormat.AVRO.addExtension(temp.newFile().toString()));
+    ManifestWriter<DeleteFile> writer = ManifestFiles.writeDeleteManifest(
+        newFormatVersion, SPEC, manifestFile, snapshotId);
+    try {
+      for (DeleteFile deleteFile : deleteFiles) {
+        writer.add(deleteFile);
+      }
+    } finally {
+      writer.close();
+    }
+    return writer.toManifestFile();
+  }
+
   ManifestFile writeManifestWithName(String name, DataFile... files) throws IOException {
     File manifestFile = temp.newFile(name + ".avro");
     Assert.assertTrue(manifestFile.delete());
diff --git a/core/src/test/java/org/apache/iceberg/TestManifestReader.java b/core/src/test/java/org/apache/iceberg/TestManifestReader.java
index 1163b39..b6a7f47 100644
--- a/core/src/test/java/org/apache/iceberg/TestManifestReader.java
+++ b/core/src/test/java/org/apache/iceberg/TestManifestReader.java
@@ -29,6 +29,7 @@ import org.apache.iceberg.relocated.com.google.common.collect.Lists;
 import org.apache.iceberg.relocated.com.google.common.collect.Streams;
 import org.apache.iceberg.types.Types;
 import org.junit.Assert;
+import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -131,4 +132,17 @@ public class TestManifestReader extends TableTestBase {
       }
     }
   }
+
+  @Test
+  public void testDeleteFilePositions() throws IOException {
+    Assume.assumeTrue("Delete files only work for format version 2", formatVersion == 2);
+    ManifestFile manifest = writeDeleteManifest(formatVersion, 1000L, FILE_A_DELETES, FILE_B_DELETES);
+    try (ManifestReader<DeleteFile> reader = ManifestFiles.readDeleteManifest(manifest, FILE_IO, null)) {
+      long expectedPos = 0L;
+      for (DeleteFile file : reader) {
+        Assert.assertEquals("Position should match", (Long) expectedPos, file.pos());
+        expectedPos += 1;
+      }
+    }
+  }
 }