This is an automated email from the ASF dual-hosted git repository. cshannon pushed a commit to branch elasticity in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/elasticity by this push: new e4f1f3c79f Update AmpleConditionalWriteIT to use new file metadata format (#3833) e4f1f3c79f is described below commit e4f1f3c79ff621727bb2f9e8d342e904e709f664 Author: Christopher L. Shannon <christopher.l.shan...@gmail.com> AuthorDate: Wed Oct 11 16:15:49 2023 -0400 Update AmpleConditionalWriteIT to use new file metadata format (#3833) After the changes with no-chop merge the StoredTabletFile metadata is now a json string that includes a range along with the path. This change updates the test to serialize the path into the new format with an infinite range. Co-authored-by: EdColeman <d...@etcoleman.com> --- .../test/functional/AmpleConditionalWriterIT.java | 57 +++++++++++----------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/test/src/main/java/org/apache/accumulo/test/functional/AmpleConditionalWriterIT.java b/test/src/main/java/org/apache/accumulo/test/functional/AmpleConditionalWriterIT.java index 5eb9078192..81883b0e2b 100644 --- a/test/src/main/java/org/apache/accumulo/test/functional/AmpleConditionalWriterIT.java +++ b/test/src/main/java/org/apache/accumulo/test/functional/AmpleConditionalWriterIT.java @@ -28,6 +28,7 @@ import static org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType import static org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.PREV_ROW; import static org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.SELECTED; import static org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.TIME; +import static org.apache.accumulo.core.util.LazySingletons.GSON; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; @@ -74,6 +75,7 @@ import org.apache.accumulo.core.security.TablePermission; import org.apache.accumulo.harness.AccumuloClusterHarness; import org.apache.accumulo.server.metadata.ConditionalTabletsMutatorImpl; import org.apache.accumulo.server.zookeeper.TransactionWatcher; +import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -182,14 +184,14 @@ public class AmpleConditionalWriterIT extends AccumuloClusterHarness { var context = cluster.getServerContext(); - var stf1 = new StoredTabletFile( - "hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000070.rf"); - var stf2 = new StoredTabletFile( - "hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000071.rf"); - var stf3 = new StoredTabletFile( - "hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000072.rf"); - var stf4 = new StoredTabletFile( - "hdfs://localhost:8020/accumulo/tables/2a/default_tablet/C0000073.rf"); + var stf1 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000070.rf")); + var stf2 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000071.rf")); + var stf3 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000072.rf")); + var stf4 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/C0000073.rf")); var dfv = new DataFileValue(100, 100); System.out.println(context.getAmple().readTablet(e1).getLocation()); @@ -279,8 +281,8 @@ public class AmpleConditionalWriterIT extends AccumuloClusterHarness { TransactionWatcher.ZooArbitrator.start(context, Constants.BULK_ARBITRATOR_TYPE, 9L); // simulate a bulk import - var stf5 = - new StoredTabletFile("hdfs://localhost:8020/accumulo/tables/2a/b-0000009/I0000074.rf"); + var stf5 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/b-0000009/I0000074.rf")); ctmi = new ConditionalTabletsMutatorImpl(context); var tm6 = TabletMetadata.builder(e1).build(LOADED); ctmi.mutateTablet(e1).requireAbsentOperation().requireSame(tm6, LOADED) @@ -292,8 +294,8 @@ public class AmpleConditionalWriterIT extends AccumuloClusterHarness { assertEquals(Set.of(stf4, stf5), context.getAmple().readTablet(e1).getFiles()); // simulate a compaction - var stf6 = new StoredTabletFile( - "hdfs://localhost:8020/accumulo/tables/2a/default_tablet/A0000075.rf"); + var stf6 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/A0000075.rf")); ctmi = new ConditionalTabletsMutatorImpl(context); var tm7 = TabletMetadata.builder(e1).putFile(stf4, dfv).putFile(stf5, dfv).build(); ctmi.mutateTablet(e1).requireAbsentOperation().requireSame(tm7, FILES) @@ -320,14 +322,14 @@ public class AmpleConditionalWriterIT extends AccumuloClusterHarness { public void testSelectedFiles() throws Exception { var context = cluster.getServerContext(); - var stf1 = - new StoredTabletFile("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000070.rf"); - var stf2 = - new StoredTabletFile("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000071.rf"); - var stf3 = - new StoredTabletFile("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000072.rf"); - var stf4 = - new StoredTabletFile("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/C0000073.rf"); + var stf1 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000070.rf")); + var stf2 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000071.rf")); + var stf3 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/F0000072.rf")); + var stf4 = StoredTabletFile + .of(new Path("hdfs://localhost:8020/accumulo/tables/2a/default_tablet/C0000073.rf")); var dfv = new DataFileValue(100, 100); System.out.println(context.getAmple().readTablet(e1).getLocation()); @@ -410,9 +412,9 @@ public class AmpleConditionalWriterIT extends AccumuloClusterHarness { var context = cluster.getServerContext(); String pathPrefix = "hdfs://localhost:8020/accumulo/tables/2a/default_tablet/"; - StoredTabletFile stf1 = new StoredTabletFile(pathPrefix + "F0000070.rf"); - StoredTabletFile stf2 = new StoredTabletFile(pathPrefix + "F0000071.rf"); - StoredTabletFile stf3 = new StoredTabletFile(pathPrefix + "F0000072.rf"); + StoredTabletFile stf1 = StoredTabletFile.of(new Path(pathPrefix + "F0000070.rf")); + StoredTabletFile stf2 = StoredTabletFile.of(new Path(pathPrefix + "F0000071.rf")); + StoredTabletFile stf3 = StoredTabletFile.of(new Path(pathPrefix + "F0000072.rf")); final Set<StoredTabletFile> storedTabletFiles = Set.of(stf1, stf2, stf3); final boolean initiallySelectedAll = true; @@ -484,7 +486,7 @@ public class AmpleConditionalWriterIT extends AccumuloClusterHarness { TabletMetadata tm1 = TabletMetadata.builder(e1).putSelectedFiles(selectedFiles).build(SELECTED); ctmi = new ConditionalTabletsMutatorImpl(context); - StoredTabletFile stf4 = new StoredTabletFile(pathPrefix + "F0000073.rf"); + StoredTabletFile stf4 = StoredTabletFile.of(new Path(pathPrefix + "F0000073.rf")); // submit a mutation with the condition that the selected files match what was originally // written DataFileValue dfv = new DataFileValue(100, 100); @@ -516,11 +518,10 @@ public class AmpleConditionalWriterIT extends AccumuloClusterHarness { */ public static String createSelectedFilesJson(Long txid, boolean selAll, Collection<String> paths) { - String filesJsonArray = - paths.stream().map(path -> "'" + path + "'").collect(Collectors.joining(",")); + String filesJsonArray = GSON.get().toJson(paths); String formattedTxid = FateTxId.formatTid(Long.parseLong(Long.toString(txid), 16)); - return ("{'txid':'" + formattedTxid + "','selAll':" + selAll + ",'files':[" + filesJsonArray - + "]}").replace('\'', '\"'); + return ("{'txid':'" + formattedTxid + "','selAll':" + selAll + ",'files':" + filesJsonArray + + "}").replace('\'', '\"'); } @Test