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

kturner 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 275c3093af Remove AvailabilityForTablet (#4728)
275c3093af is described below

commit 275c3093affe5996734b40d0b4b65b74c5bf6572
Author: meatballspaghetti <69256191+meatballspaghe...@users.noreply.github.com>
AuthorDate: Wed Jul 10 14:25:33 2024 -0400

    Remove AvailabilityForTablet (#4728)
    
    - Delete AvailabiltyForTablet class. It is only being used
      in 2 tests: ImportExportIT and TableOperationsIT.
    - In both ImportExportIT and TableOperationsIT, replace
      List<AvailabilityForTablet> objects with
      Map<TabletId, TabletAvailability>.
    - Fix typo in TableOperationsIT: verifyTabletAvailabilites ->
                                     verifyTabletAvailabilities.
    
    Resolves: #4706 "Remove AvailabilityForTablet from public API"
---
 .../core/client/admin/AvailabilityForTablet.java   | 65 -----------------
 .../org/apache/accumulo/test/ImportExportIT.java   | 13 ++--
 .../apache/accumulo/test/TableOperationsIT.java    | 83 +++++++++++-----------
 3 files changed, 47 insertions(+), 114 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/admin/AvailabilityForTablet.java
 
b/core/src/main/java/org/apache/accumulo/core/client/admin/AvailabilityForTablet.java
deleted file mode 100644
index 1aaf3f4e95..0000000000
--- 
a/core/src/main/java/org/apache/accumulo/core/client/admin/AvailabilityForTablet.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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
- *
- *   https://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.accumulo.core.client.admin;
-
-import java.util.Objects;
-
-import org.apache.accumulo.core.data.TabletId;
-
-/**
- * This class contains information that defines the tablet availability data 
for a table. The class
- * contains the TabletId and associated availability for each tablet in a 
table or a subset of
- * tablets if a range is provided.
- *
- * @since 4.0.0
- */
-public class AvailabilityForTablet {
-  private final TabletId tabletId;
-  private final TabletAvailability tabletAvailability;
-
-  public AvailabilityForTablet(TabletId tabletId, TabletAvailability 
tabletAvailability) {
-    this.tabletId = tabletId;
-    this.tabletAvailability = tabletAvailability;
-  }
-
-  public TabletAvailability getTabletAvailability() {
-    return tabletAvailability;
-  }
-
-  public TabletId getTabletId() {
-    return tabletId;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-    AvailabilityForTablet that = (AvailabilityForTablet) o;
-    return Objects.equals(tabletId, that.tabletId) && tabletAvailability == 
that.tabletAvailability;
-  }
-
-  @Override
-  public int hashCode() {
-    return Objects.hash(tabletId, tabletAvailability);
-  }
-}
diff --git a/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java 
b/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
index 99eaed26b1..26088f071d 100644
--- a/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
@@ -21,7 +21,7 @@ package org.apache.accumulo.test;
 import static org.apache.accumulo.core.Constants.IMPORT_MAPPINGS_FILE;
 import static org.apache.accumulo.core.util.LazySingletons.RANDOM;
 import static 
org.apache.accumulo.test.TableOperationsIT.setExpectedTabletAvailability;
-import static 
org.apache.accumulo.test.TableOperationsIT.verifyTabletAvailabilites;
+import static 
org.apache.accumulo.test.TableOperationsIT.verifyTabletAvailabilities;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -35,10 +35,11 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.nio.file.Paths;
 import java.time.Duration;
-import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.SortedSet;
@@ -49,7 +50,6 @@ import org.apache.accumulo.core.client.Accumulo;
 import org.apache.accumulo.core.client.AccumuloClient;
 import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.client.admin.AvailabilityForTablet;
 import org.apache.accumulo.core.client.admin.CompactionConfig;
 import org.apache.accumulo.core.client.admin.ImportConfiguration;
 import org.apache.accumulo.core.client.admin.TabletAvailability;
@@ -57,6 +57,7 @@ import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.TableId;
+import org.apache.accumulo.core.data.TabletId;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.manager.state.tables.TableState;
 import org.apache.accumulo.core.metadata.AccumuloTable;
@@ -405,14 +406,14 @@ public class ImportExportIT extends 
AccumuloClusterHarness {
       client.tableOperations().setTabletAvailability(srcTable, range, 
TabletAvailability.HOSTED);
 
       // verify
-      List<AvailabilityForTablet> expectedTabletAvailability = new 
ArrayList<>();
+      Map<TabletId,TabletAvailability> expectedTabletAvailability = new 
HashMap<>();
       setExpectedTabletAvailability(expectedTabletAvailability, srcTableId, 
"h", null,
           TabletAvailability.ONDEMAND);
       setExpectedTabletAvailability(expectedTabletAvailability, srcTableId, 
"q", "h",
           TabletAvailability.UNHOSTED);
       setExpectedTabletAvailability(expectedTabletAvailability, srcTableId, 
null, "q",
           TabletAvailability.HOSTED);
-      verifyTabletAvailabilites(client, srcTable, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(client, srcTable, new Range(), 
expectedTabletAvailability);
 
       // Add a split within each of the existing tablets. Adding 'd', 'm', and 
'v'
       splits = Sets.newTreeSet(Arrays.asList(new Text("d"), new Text("m"), new 
Text("v")));
@@ -432,7 +433,7 @@ public class ImportExportIT extends AccumuloClusterHarness {
           TabletAvailability.HOSTED);
       setExpectedTabletAvailability(expectedTabletAvailability, srcTableId, 
null, "v",
           TabletAvailability.HOSTED);
-      verifyTabletAvailabilites(client, srcTable, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(client, srcTable, new Range(), 
expectedTabletAvailability);
 
       // Make a directory we can use to throw the export and import directories
       // Must exist on the filesystem the cluster is running.
diff --git a/test/src/main/java/org/apache/accumulo/test/TableOperationsIT.java 
b/test/src/main/java/org/apache/accumulo/test/TableOperationsIT.java
index 57ae44acc2..1fb5c09cb2 100644
--- a/test/src/main/java/org/apache/accumulo/test/TableOperationsIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/TableOperationsIT.java
@@ -50,7 +50,6 @@ import org.apache.accumulo.core.client.IteratorSetting;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableExistsException;
 import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.admin.AvailabilityForTablet;
 import org.apache.accumulo.core.client.admin.DiskUsage;
 import org.apache.accumulo.core.client.admin.NewTableConfiguration;
 import org.apache.accumulo.core.client.admin.TableOperations;
@@ -63,6 +62,7 @@ import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.PartialKey;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.TableId;
+import org.apache.accumulo.core.data.TabletId;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.data.constraints.DefaultKeySizeConstraint;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
@@ -309,7 +309,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
 
     try (Scanner scanner = accumuloClient.createScanner(tableName, 
Authorizations.EMPTY)) {
       Map<Key,Value> actual = new TreeMap<>();
-      for (Map.Entry<Key,Value> entry : scanner) {
+      for (Entry<Key,Value> entry : scanner) {
         actual.put(entry.getKey(), entry.getValue());
       }
       assertTrue(actual.isEmpty(), "Should be empty. Actual is " + actual);
@@ -425,20 +425,20 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
 
       Map<String,String> idMap = accumuloClient.tableOperations().tableIdMap();
 
-      List<AvailabilityForTablet> expectedTabletAvailability = new 
ArrayList<>();
+      Map<TabletId,TabletAvailability> expectedTabletAvailability = new 
HashMap<>();
       setExpectedTabletAvailability(expectedTabletAvailability, 
idMap.get(tableOnDemand), null,
           null, TabletAvailability.ONDEMAND);
-      verifyTabletAvailabilites(tableOnDemand, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableOnDemand, new Range(), 
expectedTabletAvailability);
 
       expectedTabletAvailability.clear();
       setExpectedTabletAvailability(expectedTabletAvailability, 
idMap.get(tableHosted), null, null,
           TabletAvailability.HOSTED);
-      verifyTabletAvailabilites(tableHosted, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableHosted, new Range(), 
expectedTabletAvailability);
 
       expectedTabletAvailability.clear();
       setExpectedTabletAvailability(expectedTabletAvailability, 
idMap.get(tableUnhosted), null,
           null, TabletAvailability.UNHOSTED);
-      verifyTabletAvailabilites(tableUnhosted, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableUnhosted, new Range(), 
expectedTabletAvailability);
 
       verifyTablesWithSplits(tableOnDemandWithSplits, idMap, splits, 
TabletAvailability.ONDEMAND);
       verifyTablesWithSplits(tableHostedWithSplits, idMap, splits, 
TabletAvailability.HOSTED);
@@ -462,7 +462,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
       TableExistsException, AccumuloSecurityException, TableNotFoundException {
 
     String tableName = getUniqueNames(1)[0];
-    List<AvailabilityForTablet> expectedTabletAvailability;
+    Map<TabletId,TabletAvailability> expectedTabletAvailability;
     SortedSet<Text> splits =
         Sets.newTreeSet(Arrays.asList(new Text("d"), new Text("m"), new 
Text("s")));
 
@@ -483,7 +483,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
           TabletAvailability.UNHOSTED);
 
       Map<String,String> idMap = accumuloClient.tableOperations().tableIdMap();
-      expectedTabletAvailability = new ArrayList<>();
+      expectedTabletAvailability = new HashMap<>();
       String tableId = idMap.get(tableName);
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, "d", 
null,
           TabletAvailability.UNHOSTED);
@@ -495,7 +495,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
           TabletAvailability.HOSTED);
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, null, 
"s",
           TabletAvailability.UNHOSTED);
-      verifyTabletAvailabilites(tableName, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, new Range(), 
expectedTabletAvailability);
     } finally {
       accumuloClient.tableOperations().delete(tableName);
     }
@@ -510,7 +510,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
     String tableName = getUniqueNames(1)[0];
     SortedSet<Text> splits =
         Sets.newTreeSet(Arrays.asList(new Text("d"), new Text("m"), new 
Text("s")));
-    List<AvailabilityForTablet> expectedTabletAvailability = new ArrayList<>();
+    Map<TabletId,TabletAvailability> expectedTabletAvailability = new 
HashMap<>();
     Map<String,String> idMap;
     String tableId;
 
@@ -534,11 +534,11 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, "d", 
null,
           TabletAvailability.HOSTED);
       // test using row as range constructor
-      verifyTabletAvailabilites(tableName, new Range("a"), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, new Range("a"), 
expectedTabletAvailability);
 
       // test using startRowInclusive set to true
       Range range = new Range(new Text("c"), true, new Text("c"), true);
-      verifyTabletAvailabilites(tableName, range, expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, range, expectedTabletAvailability);
 
       expectedTabletAvailability.clear();
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, "m", 
"d",
@@ -547,7 +547,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
           TabletAvailability.HOSTED);
 
       range = new Range(new Text("m"), new Text("p"));
-      verifyTabletAvailabilites(tableName, range, expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, range, expectedTabletAvailability);
 
       expectedTabletAvailability.clear();
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, "d", 
null,
@@ -560,7 +560,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
           TabletAvailability.ONDEMAND);
 
       range = new Range("b", false, "t", true);
-      verifyTabletAvailabilites(tableName, range, expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, range, expectedTabletAvailability);
 
     } finally {
       accumuloClient.tableOperations().delete(tableName);
@@ -583,11 +583,11 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
       accumuloClient.tableOperations().setTabletAvailability(tableName, new 
Range(),
           TabletAvailability.HOSTED);
 
-      List<AvailabilityForTablet> expectedTabletAvailability = new 
ArrayList<>();
+      Map<TabletId,TabletAvailability> expectedTabletAvailability = new 
HashMap<>();
       String tableId = idMap.get(tableName);
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, null, 
null,
           TabletAvailability.HOSTED);
-      verifyTabletAvailabilites(tableName, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, new Range(), 
expectedTabletAvailability);
 
       // Add splits after the fact
       SortedSet<Text> splits =
@@ -603,7 +603,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
           TabletAvailability.HOSTED);
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, null, 
"r",
           TabletAvailability.HOSTED);
-      verifyTabletAvailabilites(tableName, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, new Range(), 
expectedTabletAvailability);
     } finally {
       accumuloClient.tableOperations().delete(tableName);
     }
@@ -639,14 +639,14 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
           TabletAvailability.HOSTED);
 
       // verify
-      List<AvailabilityForTablet> expectedTabletAvailability = new 
ArrayList<>();
+      Map<TabletId,TabletAvailability> expectedTabletAvailability = new 
HashMap<>();
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, "h", 
null,
           TabletAvailability.ONDEMAND);
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, "q", 
"h",
           TabletAvailability.UNHOSTED);
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, null, 
"q",
           TabletAvailability.HOSTED);
-      verifyTabletAvailabilites(tableName, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, new Range(), 
expectedTabletAvailability);
 
       // Add a split within each of the existing tablets. Adding 'd', 'm', and 
'v'
       splits = Sets.newTreeSet(Arrays.asList(new Text("d"), new Text("m"), new 
Text("v")));
@@ -666,7 +666,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
           TabletAvailability.HOSTED);
       setExpectedTabletAvailability(expectedTabletAvailability, tableId, null, 
"v",
           TabletAvailability.HOSTED);
-      verifyTabletAvailabilites(tableName, new Range(), 
expectedTabletAvailability);
+      verifyTabletAvailabilities(tableName, new Range(), 
expectedTabletAvailability);
     } finally {
       accumuloClient.tableOperations().delete(tableName);
     }
@@ -675,7 +675,7 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
   private void verifyTablesWithSplits(String tableName, Map<String,String> 
idMap,
       SortedSet<Text> splits, TabletAvailability tabletAvailability) throws 
TableNotFoundException {
 
-    List<AvailabilityForTablet> expectedTabletAvailability = new ArrayList<>();
+    Map<TabletId,TabletAvailability> expectedTabletAvailability = new 
HashMap<>();
     String tableId = idMap.get(tableName);
     String[] splitPts = 
splits.stream().map(Text::toString).toArray(String[]::new);
 
@@ -688,33 +688,33 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
         tabletAvailability);
     setExpectedTabletAvailability(expectedTabletAvailability, tableId, null, 
splitPts[2],
         tabletAvailability);
-    verifyTabletAvailabilites(tableName, new Range(), 
expectedTabletAvailability);
+    verifyTabletAvailabilities(tableName, new Range(), 
expectedTabletAvailability);
 
     // verify individual tablets can be retrieved
     expectedTabletAvailability.clear();
     setExpectedTabletAvailability(expectedTabletAvailability, tableId, 
splitPts[0], null,
         tabletAvailability);
-    verifyTabletAvailabilites(tableName, new Range(null, new 
Text(splitPts[0])),
+    verifyTabletAvailabilities(tableName, new Range(null, new 
Text(splitPts[0])),
         expectedTabletAvailability);
 
     expectedTabletAvailability.clear();
     setExpectedTabletAvailability(expectedTabletAvailability, tableId, 
splitPts[1], splitPts[0],
         tabletAvailability);
-    verifyTabletAvailabilites(tableName,
+    verifyTabletAvailabilities(tableName,
         new Range(new Text(splitPts[0]), false, new Text(splitPts[1]), true),
         expectedTabletAvailability);
 
     expectedTabletAvailability.clear();
     setExpectedTabletAvailability(expectedTabletAvailability, tableId, 
splitPts[2], splitPts[1],
         tabletAvailability);
-    verifyTabletAvailabilites(tableName,
+    verifyTabletAvailabilities(tableName,
         new Range(new Text(splitPts[1]), false, new Text(splitPts[2]), true),
         expectedTabletAvailability);
 
     expectedTabletAvailability.clear();
     setExpectedTabletAvailability(expectedTabletAvailability, tableId, null, 
splitPts[2],
         tabletAvailability);
-    verifyTabletAvailabilites(tableName, new Range(new Text(splitPts[2]), 
false, null, true),
+    verifyTabletAvailabilities(tableName, new Range(new Text(splitPts[2]), 
false, null, true),
         expectedTabletAvailability);
 
     expectedTabletAvailability.clear();
@@ -722,33 +722,30 @@ public class TableOperationsIT extends 
AccumuloClusterHarness {
         tabletAvailability);
     setExpectedTabletAvailability(expectedTabletAvailability, tableId, 
splitPts[2], splitPts[1],
         tabletAvailability);
-    verifyTabletAvailabilites(tableName,
+    verifyTabletAvailabilities(tableName,
         new Range(new Text(splitPts[0]), false, new Text(splitPts[2]), true),
         expectedTabletAvailability);
   }
 
-  public static void verifyTabletAvailabilites(String tableName, Range range,
-      List<AvailabilityForTablet> expectedAvailability) throws 
TableNotFoundException {
-    verifyTabletAvailabilites(accumuloClient, tableName, range, 
expectedAvailability);
+  public static void verifyTabletAvailabilities(String tableName, Range range,
+      Map<TabletId,TabletAvailability> expectedAvailability) throws 
TableNotFoundException {
+    verifyTabletAvailabilities(accumuloClient, tableName, range, 
expectedAvailability);
   }
 
-  public static void verifyTabletAvailabilites(AccumuloClient client, String 
tableName, Range range,
-      List<AvailabilityForTablet> expectedAvailability) throws 
TableNotFoundException {
-    List<TabletInformation> tabletInfo = client.tableOperations()
-        .getTabletInformation(tableName, range).collect(Collectors.toList());
-    assertEquals(expectedAvailability.size(), tabletInfo.size());
-    for (var i = 0; i < expectedAvailability.size(); i++) {
-      assertEquals(expectedAvailability.get(i).getTabletId(), 
tabletInfo.get(i).getTabletId());
-      assertEquals(expectedAvailability.get(i).getTabletAvailability(),
-          tabletInfo.get(i).getTabletAvailability());
-    }
+  public static void verifyTabletAvailabilities(AccumuloClient client, String 
tableName,
+      Range range, Map<TabletId,TabletAvailability> expectedAvailability)
+      throws TableNotFoundException {
+    Map<TabletId,TabletAvailability> seenAvailability =
+        client.tableOperations().getTabletInformation(tableName, 
range).collect(Collectors
+            .toMap(TabletInformation::getTabletId, 
TabletInformation::getTabletAvailability));
+    assertEquals(expectedAvailability, seenAvailability);
   }
 
-  public static void setExpectedTabletAvailability(List<AvailabilityForTablet> 
expected, String id,
-      String endRow, String prevEndRow, TabletAvailability availability) {
+  public static void 
setExpectedTabletAvailability(Map<TabletId,TabletAvailability> expected,
+      String id, String endRow, String prevEndRow, TabletAvailability 
availability) {
     KeyExtent ke = new KeyExtent(TableId.of(id), endRow == null ? null : new 
Text(endRow),
         prevEndRow == null ? null : new Text(prevEndRow));
-    expected.add(new AvailabilityForTablet(new TabletIdImpl(ke), 
availability));
+    expected.put(new TabletIdImpl(ke), availability);
   }
 
 }

Reply via email to