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 5ccb9195ac Add test to verify correctness of Accumulo fate table
(#4328)
5ccb9195ac is described below
commit 5ccb9195ac39297bce23a1a8e941cf11ce0477d0
Author: Christopher L. Shannon <[email protected]>
AuthorDate: Fri Mar 1 11:15:28 2024 -0500
Add test to verify correctness of Accumulo fate table (#4328)
This test makes sure configuration that is relevant to the correctness
of the Fate table, such as the versioning iterator, are set correctly.
This closes #4322
---
.../test/fate/accumulo/AccumuloStoreIT.java | 51 ++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git
a/test/src/main/java/org/apache/accumulo/test/fate/accumulo/AccumuloStoreIT.java
b/test/src/main/java/org/apache/accumulo/test/fate/accumulo/AccumuloStoreIT.java
index 785b52b290..4a5e0c18c7 100644
---
a/test/src/main/java/org/apache/accumulo/test/fate/accumulo/AccumuloStoreIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/fate/accumulo/AccumuloStoreIT.java
@@ -21,6 +21,7 @@ package org.apache.accumulo.test.fate.accumulo;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Iterator;
import java.util.List;
@@ -32,7 +33,9 @@ import org.apache.accumulo.core.client.Accumulo;
import org.apache.accumulo.core.client.BatchWriter;
import org.apache.accumulo.core.client.MutationsRejectedException;
import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.admin.TabletAvailability;
import org.apache.accumulo.core.clientImpl.ClientContext;
+import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.fate.FateId;
@@ -41,6 +44,8 @@ import org.apache.accumulo.core.fate.FateStore;
import org.apache.accumulo.core.fate.ReadOnlyFateStore.TStatus;
import org.apache.accumulo.core.fate.accumulo.AccumuloStore;
import org.apache.accumulo.core.fate.accumulo.schema.FateSchema;
+import org.apache.accumulo.core.iterators.user.VersioningIterator;
+import org.apache.accumulo.core.metadata.AccumuloTable;
import org.apache.accumulo.harness.SharedMiniClusterBase;
import org.apache.accumulo.test.fate.FateIT;
import org.apache.hadoop.io.Text;
@@ -92,6 +97,52 @@ public class AccumuloStoreIT extends SharedMiniClusterBase {
}
}
+ // Test that configs related to the correctness of the FATE instance user
table
+ // are initialized correctly
+ @Test
+ public void testFateInitialConfigCorrectness() throws Exception {
+ try (ClientContext client =
+ (ClientContext) Accumulo.newClient().from(getClientProps()).build()) {
+
+ // It is important here to use getTableProperties() and not
getConfiguration()
+ // because we want only the table properties and not a merged view
+ var fateTableProps =
+
client.tableOperations().getTableProperties(AccumuloTable.FATE.tableName());
+
+ // Verify properties all have a table. prefix
+ assertTrue(fateTableProps.keySet().stream().allMatch(key ->
key.startsWith("table.")));
+
+ // Verify properties are correctly set
+ assertEquals("5",
fateTableProps.get(Property.TABLE_FILE_REPLICATION.getKey()));
+ assertEquals("sync",
fateTableProps.get(Property.TABLE_DURABILITY.getKey()));
+ assertEquals("false",
fateTableProps.get(Property.TABLE_FAILURES_IGNORE.getKey()));
+ assertEquals("",
fateTableProps.get(Property.TABLE_DEFAULT_SCANTIME_VISIBILITY.getKey()));
+
+ // Verify VersioningIterator related properties are correct
+ var iterClass = "10," + VersioningIterator.class.getName();
+ var maxVersions = "1";
+ assertEquals(iterClass,
+ fateTableProps.get(Property.TABLE_ITERATOR_PREFIX.getKey() +
"scan.vers"));
+ assertEquals(maxVersions, fateTableProps
+ .get(Property.TABLE_ITERATOR_PREFIX.getKey() +
"scan.vers.opt.maxVersions"));
+ assertEquals(iterClass,
+ fateTableProps.get(Property.TABLE_ITERATOR_PREFIX.getKey() +
"minc.vers"));
+ assertEquals(maxVersions, fateTableProps
+ .get(Property.TABLE_ITERATOR_PREFIX.getKey() +
"minc.vers.opt.maxVersions"));
+ assertEquals(iterClass,
+ fateTableProps.get(Property.TABLE_ITERATOR_PREFIX.getKey() +
"majc.vers"));
+ assertEquals(maxVersions, fateTableProps
+ .get(Property.TABLE_ITERATOR_PREFIX.getKey() +
"majc.vers.opt.maxVersions"));
+
+ // Verify all tablets are HOSTED
+ try (var tablets =
+
client.getAmple().readTablets().forTable(AccumuloTable.FATE.tableId()).build())
{
+ assertTrue(tablets.stream()
+ .allMatch(tm -> tm.getTabletAvailability() ==
TabletAvailability.HOSTED));
+ }
+ }
+ }
+
@Test
public void testCreateWithCollisionAndExceedRetryLimit() throws Exception {
String table = getUniqueNames(1)[0];