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

ctubbsii pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/3.1 by this push:
     new ec14b3ae65 Remove redundant table/namespace id/name lookup (#4942)
ec14b3ae65 is described below

commit ec14b3ae65164e56e681f86292389dd20f804494
Author: Christopher Tubbs <ctubb...@apache.org>
AuthorDate: Thu Oct 10 12:36:37 2024 -0400

    Remove redundant table/namespace id/name lookup (#4942)
    
    * Remove redundant code to look up table and namespace names and ids
      that were only used for ZooPropEditor/ZooInfoViewer
    * Update corresponding tests
    * Add implementation for namespace ID lookup (currently not implemented
      the same as the table ID lookup, but should form the basis for
      follow-on work)
---
 .../accumulo/core/clientImpl/ClientContext.java    |  4 +
 .../accumulo/server/conf/util/ZooInfoViewer.java   | 47 ++++++------
 .../accumulo/server/conf/util/ZooPropEditor.java   | 45 ++++-------
 .../accumulo/server/conf/util/ZooPropUtils.java    | 56 --------------
 .../server/conf/util/ZooInfoViewerTest.java        | 87 +++++++++-------------
 5 files changed, 76 insertions(+), 163 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
index cc93f79d00..899bad6c10 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
@@ -634,6 +634,10 @@ public class ClientContext implements AccumuloClient {
     return tableZooHelper().getTableMap().getNameToIdMap();
   }
 
+  public Map<NamespaceId,String> getNamespaceIdToNameMap() {
+    return Namespaces.getIdToNameMap(this);
+  }
+
   public Map<TableId,String> getTableIdToNameMap() {
     return tableZooHelper().getTableMap().getIdtoNameMap();
   }
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooInfoViewer.java
 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooInfoViewer.java
index c45b0b8832..535a0899f6 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooInfoViewer.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooInfoViewer.java
@@ -21,8 +21,6 @@ package org.apache.accumulo.server.conf.util;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.accumulo.core.Constants.ZINSTANCES;
 import static org.apache.accumulo.core.Constants.ZROOT;
-import static 
org.apache.accumulo.server.conf.util.ZooPropUtils.getNamespaceIdToNameMap;
-import static 
org.apache.accumulo.server.conf.util.ZooPropUtils.getTableIdToName;
 import static 
org.apache.accumulo.server.conf.util.ZooPropUtils.readInstancesFromZk;
 import static 
org.apache.accumulo.server.zookeeper.ZooAclUtil.checkWritableAuth;
 import static org.apache.accumulo.server.zookeeper.ZooAclUtil.extractAuthName;
@@ -117,16 +115,12 @@ public class ZooInfoViewer implements KeywordExecutable {
 
     var conf = opts.getSiteConfiguration();
 
-    ZooReader zooReader = new ZooReaderWriter(conf);
-
     try (ServerContext context = new ServerContext(conf)) {
-      InstanceId iid = context.getInstanceID();
-      generateReport(iid, opts, zooReader);
+      generateReport(context, opts);
     }
   }
 
-  void generateReport(final InstanceId iid, final ZooInfoViewer.Opts opts,
-      final ZooReader zooReader) throws Exception {
+  void generateReport(final ServerContext context, final ZooInfoViewer.Opts 
opts) throws Exception {
 
     OutputStream outStream;
 
@@ -145,27 +139,29 @@ public class ZooInfoViewer implements KeywordExecutable {
       writer.println("Report Time: " + tsFormat.format(Instant.now()));
       writer.println("-----------------------------------------------");
       if (opts.printInstanceIds) {
-        Map<String,InstanceId> instanceMap = readInstancesFromZk(zooReader);
+        Map<String,InstanceId> instanceMap = 
readInstancesFromZk(context.getZooReader());
         printInstanceIds(instanceMap, writer);
       }
 
       if (opts.printIdMap) {
-        printIdMapping(iid, zooReader, writer);
+        printIdMapping(context, writer);
       }
 
       if (opts.printProps) {
-        printProps(iid, zooReader, opts, writer);
+        printProps(context, opts, writer);
       }
 
       if (opts.printAcls) {
-        printAcls(iid, opts, writer);
+        printAcls(context, opts, writer);
       }
       writer.println("-----------------------------------------------");
     }
   }
 
-  private void printProps(final InstanceId iid, final ZooReader zooReader, 
final Opts opts,
-      final PrintWriter writer) throws Exception {
+  private void printProps(final ServerContext context, final Opts opts, final 
PrintWriter writer)
+      throws Exception {
+    var iid = context.getInstanceID();
+    var zooReader = context.getZooReader();
 
     if (opts.printAllProps()) {
       log.info("all: {}", opts.printAllProps());
@@ -184,7 +180,7 @@ public class ZooInfoViewer implements KeywordExecutable {
     }
 
     if (opts.printNamespaceProps()) {
-      Map<NamespaceId,String> id2NamespaceMap = getNamespaceIdToNameMap(iid, 
zooReader);
+      Map<NamespaceId,String> id2NamespaceMap = 
context.getNamespaceIdToNameMap();
 
       Map<String,VersionedProperties> nsProps =
           fetchNamespaceProps(iid, zooReader, id2NamespaceMap, 
opts.getNamespaces());
@@ -195,16 +191,17 @@ public class ZooInfoViewer implements KeywordExecutable {
     }
 
     if (opts.printTableProps()) {
-      Map<String,VersionedProperties> tProps = fetchTableProps(iid, 
opts.getTables(), zooReader);
+      Map<String,VersionedProperties> tProps = fetchTableProps(context, 
opts.getTables());
       writer.println("Tables: ");
       printSortedProps(writer, tProps);
     }
     writer.println();
   }
 
-  private void printIdMapping(InstanceId iid, ZooReader zooReader, PrintWriter 
writer) {
+  private void printIdMapping(ServerContext context, PrintWriter writer) {
+    var iid = context.getInstanceID();
     // namespaces
-    Map<NamespaceId,String> id2NamespaceMap = getNamespaceIdToNameMap(iid, 
zooReader);
+    Map<NamespaceId,String> id2NamespaceMap = 
context.getNamespaceIdToNameMap();
     writer.println("ID Mapping (id => name) for instance: " + iid);
     writer.println("Namespace ids:");
     for (Map.Entry<NamespaceId,String> e : id2NamespaceMap.entrySet()) {
@@ -213,7 +210,7 @@ public class ZooInfoViewer implements KeywordExecutable {
     }
     writer.println();
     // tables
-    Map<TableId,String> id2TableMap = getTableIdToName(iid, id2NamespaceMap, 
zooReader);
+    Map<TableId,String> id2TableMap = context.getTableIdToNameMap();
     writer.println("Table ids:");
     for (Map.Entry<TableId,String> e : id2TableMap.entrySet()) {
       writer.printf("%s%-9s => %24s\n", INDENT, e.getKey(), e.getValue());
@@ -221,7 +218,8 @@ public class ZooInfoViewer implements KeywordExecutable {
     writer.println();
   }
 
-  private void printAcls(final InstanceId iid, final Opts opts, final 
PrintWriter writer) {
+  private void printAcls(final ServerContext context, final Opts opts, final 
PrintWriter writer) {
+    var iid = context.getInstanceID();
 
     Map<String,List<ACL>> aclMap = new TreeMap<>();
 
@@ -344,13 +342,14 @@ public class ZooInfoViewer implements KeywordExecutable {
     return results;
   }
 
-  private Map<String,VersionedProperties> fetchTableProps(final InstanceId iid,
-      final List<String> tables, final ZooReader zooReader) {
+  private Map<String,VersionedProperties> fetchTableProps(final ServerContext 
context,
+      final List<String> tables) {
+    var iid = context.getInstanceID();
+    var zooReader = context.getZooReader();
 
     Set<String> cmdOptTables = new TreeSet<>(tables);
 
-    Map<NamespaceId,String> id2NamespaceMap = getNamespaceIdToNameMap(iid, 
zooReader);
-    Map<TableId,String> allIds = getTableIdToName(iid, id2NamespaceMap, 
zooReader);
+    Map<TableId,String> allIds = context.getTableIdToNameMap();
 
     Map<TableId,String> filteredIds;
     if (cmdOptTables.isEmpty()) {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropEditor.java
 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropEditor.java
index ff277202fa..8d394cb0d6 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropEditor.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropEditor.java
@@ -19,8 +19,6 @@
 package org.apache.accumulo.server.conf.util;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static 
org.apache.accumulo.server.conf.util.ZooPropUtils.getNamespaceIdToNameMap;
-import static 
org.apache.accumulo.server.conf.util.ZooPropUtils.getTableIdToName;
 
 import java.io.BufferedWriter;
 import java.io.IOException;
@@ -34,7 +32,6 @@ import java.util.TreeMap;
 
 import org.apache.accumulo.core.cli.ConfigOpts;
 import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.InstanceId;
 import org.apache.accumulo.core.data.NamespaceId;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.fate.zookeeper.ZooReader;
@@ -89,10 +86,7 @@ public class ZooPropEditor implements KeywordExecutable {
 
     var siteConfig = opts.getSiteConfiguration();
     try (ServerContext context = new ServerContext(siteConfig)) {
-
-      InstanceId iid = context.getInstanceID();
-
-      PropStoreKey<?> propKey = getPropKey(iid, opts, zrw);
+      PropStoreKey<?> propKey = getPropKey(context, opts);
       switch (opts.getCmdMode()) {
         case SET:
           setProperty(context, propKey, opts);
@@ -120,7 +114,7 @@ public class ZooPropEditor implements KeywordExecutable {
     }
     String targetName = "'invalid'";
     try {
-      targetName = getDisplayName(propKey, context.getInstanceID(), 
context.getZooReader());
+      targetName = getDisplayName(propKey, context);
 
       Map<String,String> prev = context.getPropStore().get(propKey).asMap();
       String[] tokens = opts.setOpt.split("=");
@@ -155,7 +149,7 @@ public class ZooPropEditor implements KeywordExecutable {
       return;
     }
     PropUtil.removeProperties(context, propKey, List.of(p));
-    String targetName = getDisplayName(propKey, context.getInstanceID(), 
context.getZooReader());
+    String targetName = getDisplayName(propKey, context);
     LOG.info("{}: deleted {}", targetName, p);
   }
 
@@ -183,8 +177,7 @@ public class ZooPropEditor implements KeywordExecutable {
       writer.printf(": Instance Id: %s\n", context.getInstanceID());
       writer.printf(": Property scope: %s\n", scope);
       writer.printf(": ZooKeeper path: %s\n", propKey.getPath());
-      writer.printf(": Name: %s\n",
-          getDisplayName(propKey, context.getInstanceID(), 
context.getZooReader()));
+      writer.printf(": Name: %s\n", getDisplayName(propKey, context));
       writer.printf(": Id: %s\n", propKey.getId());
       writer.printf(": Data version: %d\n", props.getDataVersion());
       writer.printf(": Timestamp: %s\n", props.getTimestampISO());
@@ -208,18 +201,18 @@ public class ZooPropEditor implements KeywordExecutable {
     }
   }
 
-  private PropStoreKey<?> getPropKey(final InstanceId iid, final 
ZooPropEditor.Opts opts,
-      final ZooReader zooReader) {
+  private PropStoreKey<?> getPropKey(final ServerContext context, final 
ZooPropEditor.Opts opts) {
+    var iid = context.getInstanceID();
 
     // either tid or table name option provided, get the table id
     if (!opts.tableOpt.isEmpty() || !opts.tableIdOpt.isEmpty()) {
-      TableId tid = getTableId(iid, opts, zooReader);
+      TableId tid = getTableId(context, opts);
       return TablePropKey.of(iid, tid);
     }
 
     // either nid of namespace name provided, get the namespace id.
     if (!opts.namespaceOpt.isEmpty() || !opts.namespaceIdOpt.isEmpty()) {
-      NamespaceId nid = getNamespaceId(iid, opts, zooReader);
+      NamespaceId nid = getNamespaceId(context, opts);
       return NamespacePropKey.of(iid, nid);
     }
 
@@ -227,41 +220,33 @@ public class ZooPropEditor implements KeywordExecutable {
     return SystemPropKey.of(iid);
   }
 
-  private TableId getTableId(final InstanceId iid, final ZooPropEditor.Opts 
opts,
-      final ZooReader zooReader) {
+  private TableId getTableId(final ServerContext context, final 
ZooPropEditor.Opts opts) {
     if (!opts.tableIdOpt.isEmpty()) {
       return TableId.of(opts.tableIdOpt);
     }
-    Map<NamespaceId,String> nids = getNamespaceIdToNameMap(iid, zooReader);
-
-    Map<TableId,String> tids = getTableIdToName(iid, nids, zooReader);
+    Map<TableId,String> tids = context.getTableIdToNameMap();
     return tids.entrySet().stream().filter(entry -> 
opts.tableOpt.equals(entry.getValue()))
         .map(Map.Entry::getKey).findAny()
         .orElseThrow(() -> new IllegalArgumentException("Could not find table 
" + opts.tableOpt));
   }
 
-  private NamespaceId getNamespaceId(final InstanceId iid, final 
ZooPropEditor.Opts opts,
-      final ZooReader zooReader) {
+  private NamespaceId getNamespaceId(final ServerContext context, final 
ZooPropEditor.Opts opts) {
     if (!opts.namespaceIdOpt.isEmpty()) {
       return NamespaceId.of(opts.namespaceIdOpt);
     }
-    Map<NamespaceId,String> nids = getNamespaceIdToNameMap(iid, zooReader);
+    Map<NamespaceId,String> nids = context.getNamespaceIdToNameMap();
     return nids.entrySet().stream().filter(entry -> 
opts.namespaceOpt.equals(entry.getValue()))
         .map(Map.Entry::getKey).findAny().orElseThrow(
             () -> new IllegalArgumentException("Could not find namespace " + 
opts.namespaceOpt));
   }
 
-  private String getDisplayName(final PropStoreKey<?> propStoreKey, final 
InstanceId iid,
-      final ZooReader zooReader) {
+  private String getDisplayName(final PropStoreKey<?> propStoreKey, final 
ServerContext context) {
 
     if (propStoreKey instanceof TablePropKey) {
-      Map<NamespaceId,String> nids = getNamespaceIdToNameMap(iid, zooReader);
-      return getTableIdToName(iid, nids, zooReader).getOrDefault((TableId) 
propStoreKey.getId(),
-          "unknown");
+      return context.getTableIdToNameMap().getOrDefault(propStoreKey.getId(), 
"unknown");
     }
     if (propStoreKey instanceof NamespacePropKey) {
-      return getNamespaceIdToNameMap(iid, zooReader)
-          .getOrDefault((NamespaceId) propStoreKey.getId(), "unknown");
+      return 
context.getNamespaceIdToNameMap().getOrDefault(propStoreKey.getId(), "unknown");
     }
     if (propStoreKey instanceof SystemPropKey) {
       return "system";
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropUtils.java
 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropUtils.java
index f403a12fa1..a892ca64a9 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropUtils.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropUtils.java
@@ -20,25 +20,15 @@ package org.apache.accumulo.server.conf.util;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.accumulo.core.Constants.ZINSTANCES;
-import static org.apache.accumulo.core.Constants.ZNAMESPACES;
-import static org.apache.accumulo.core.Constants.ZNAMESPACE_NAME;
 import static org.apache.accumulo.core.Constants.ZROOT;
-import static org.apache.accumulo.core.Constants.ZTABLES;
-import static org.apache.accumulo.core.Constants.ZTABLE_NAME;
-import static org.apache.accumulo.core.Constants.ZTABLE_NAMESPACE;
 
 import java.util.List;
 import java.util.Map;
-import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.UUID;
 
-import org.apache.accumulo.core.clientImpl.Namespace;
 import org.apache.accumulo.core.data.InstanceId;
-import org.apache.accumulo.core.data.NamespaceId;
-import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.fate.zookeeper.ZooReader;
-import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
 import org.apache.zookeeper.KeeperException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -91,50 +81,4 @@ public class ZooPropUtils {
     }
   }
 
-  public static Map<NamespaceId,String> getNamespaceIdToNameMap(final 
InstanceId iid,
-      final ZooReader zooReader) {
-    SortedMap<NamespaceId,String> namespaceToName = new TreeMap<>();
-    String zooNsRoot = ZooUtil.getRoot(iid) + ZNAMESPACES;
-    try {
-      List<String> nsids = zooReader.getChildren(zooNsRoot);
-      for (String id : nsids) {
-        String path = zooNsRoot + "/" + id + ZNAMESPACE_NAME;
-        String name = new String(zooReader.getData(path), UTF_8);
-        namespaceToName.put(NamespaceId.of(id), name);
-      }
-    } catch (InterruptedException ex) {
-      Thread.currentThread().interrupt();
-      throw new IllegalStateException("Interrupted reading namespace ids from 
ZooKeeper", ex);
-    } catch (KeeperException ex) {
-      throw new IllegalStateException("Failed to read namespace ids from 
ZooKeeper", ex);
-    }
-    return namespaceToName;
-  }
-
-  public static Map<TableId,String> getTableIdToName(InstanceId iid,
-      Map<NamespaceId,String> id2NamespaceMap, ZooReader zooReader) {
-    SortedMap<TableId,String> idToName = new TreeMap<>();
-
-    String zooTables = ZooUtil.getRoot(iid) + ZTABLES;
-    try {
-      List<String> tids = zooReader.getChildren(zooTables);
-      for (String t : tids) {
-        String path = zooTables + "/" + t;
-        String tname = new String(zooReader.getData(path + ZTABLE_NAME), 
UTF_8);
-        NamespaceId tNsId =
-            NamespaceId.of(new String(zooReader.getData(path + 
ZTABLE_NAMESPACE), UTF_8));
-        if (tNsId.equals(Namespace.DEFAULT.id())) {
-          idToName.put(TableId.of(t), tname);
-        } else {
-          idToName.put(TableId.of(t), id2NamespaceMap.get(tNsId) + "." + 
tname);
-        }
-      }
-    } catch (InterruptedException ex) {
-      Thread.currentThread().interrupt();
-      throw new IllegalStateException("Interrupted reading table ids from 
ZooKeeper", ex);
-    } catch (KeeperException ex) {
-      throw new IllegalStateException("Failed reading table id info from 
ZooKeeper");
-    }
-    return idToName;
-  }
 }
diff --git 
a/server/base/src/test/java/org/apache/accumulo/server/conf/util/ZooInfoViewerTest.java
 
b/server/base/src/test/java/org/apache/accumulo/server/conf/util/ZooInfoViewerTest.java
index 9ea587a320..0fb5e9ab76 100644
--- 
a/server/base/src/test/java/org/apache/accumulo/server/conf/util/ZooInfoViewerTest.java
+++ 
b/server/base/src/test/java/org/apache/accumulo/server/conf/util/ZooInfoViewerTest.java
@@ -20,11 +20,8 @@ package org.apache.accumulo.server.conf.util;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.accumulo.core.Constants.ZINSTANCES;
-import static org.apache.accumulo.core.Constants.ZNAMESPACES;
-import static org.apache.accumulo.core.Constants.ZNAMESPACE_NAME;
 import static org.apache.accumulo.core.Constants.ZROOT;
 import static org.apache.accumulo.core.Constants.ZTABLES;
-import static org.apache.accumulo.core.Constants.ZTABLE_NAME;
 import static org.apache.accumulo.core.Constants.ZTABLE_NAMESPACE;
 import static org.easymock.EasyMock.capture;
 import static org.easymock.EasyMock.createMock;
@@ -51,6 +48,7 @@ import org.apache.accumulo.core.data.NamespaceId;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.fate.zookeeper.ZooReader;
 import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
+import org.apache.accumulo.server.MockServerContext;
 import org.apache.accumulo.server.conf.codec.VersionedPropCodec;
 import org.apache.accumulo.server.conf.codec.VersionedProperties;
 import org.apache.accumulo.server.conf.store.NamespacePropKey;
@@ -138,13 +136,14 @@ public class ZooInfoViewerTest {
   @Test
   public void instanceIdOutputTest() throws Exception {
     String uuid = UUID.randomUUID().toString();
-
+    var context = MockServerContext.getWithZK(InstanceId.of(uuid), "fakeHost", 
2000);
     ZooReader zooReader = createMock(ZooReader.class);
+    expect(context.getZooReader()).andReturn(zooReader).anyTimes();
     var instanceName = "test";
     expect(zooReader.getChildren(eq(ZROOT + 
ZINSTANCES))).andReturn(List.of(instanceName)).once();
     expect(zooReader.getData(eq(ZROOT + ZINSTANCES + "/" + instanceName)))
         .andReturn(uuid.getBytes(UTF_8)).once();
-    replay(zooReader);
+    replay(context, zooReader);
 
     String testFileName = "./target/zoo-info-viewer-" + 
System.currentTimeMillis() + ".txt";
 
@@ -153,9 +152,9 @@ public class ZooInfoViewerTest {
         new String[] {"--print-instances", "--outfile", testFileName});
 
     ZooInfoViewer viewer = new ZooInfoViewer();
-    viewer.generateReport(InstanceId.of(uuid), opts, zooReader);
+    viewer.generateReport(context, opts);
 
-    verify(zooReader);
+    verify(context, zooReader);
 
     String line;
     try (Scanner scanner = new Scanner(new File(testFileName))) {
@@ -175,13 +174,14 @@ public class ZooInfoViewerTest {
   @Test
   public void instanceNameOutputTest() throws Exception {
     String uuid = UUID.randomUUID().toString();
-
+    var context = MockServerContext.getWithZK(InstanceId.of(uuid), "fakeHost", 
2000);
     ZooReader zooReader = createMock(ZooReader.class);
+    expect(context.getZooReader()).andReturn(zooReader).anyTimes();
     var instanceName = "test";
     expect(zooReader.getChildren(eq(ZROOT + 
ZINSTANCES))).andReturn(List.of(instanceName)).once();
     expect(zooReader.getData(eq(ZROOT + ZINSTANCES + "/" + instanceName)))
         .andReturn(uuid.getBytes(UTF_8)).once();
-    replay(zooReader);
+    replay(context, zooReader);
 
     String testFileName = "./target/zoo-info-viewer-" + 
System.currentTimeMillis() + ".txt";
 
@@ -190,9 +190,9 @@ public class ZooInfoViewerTest {
         new String[] {"--print-instances", "--outfile", testFileName});
 
     ZooInfoViewer viewer = new ZooInfoViewer();
-    viewer.generateReport(InstanceId.of(uuid), opts, zooReader);
+    viewer.generateReport(context, opts);
 
-    verify(zooReader);
+    verify(context, zooReader);
 
     String line;
     try (Scanner scanner = new Scanner(new File(testFileName))) {
@@ -215,8 +215,9 @@ public class ZooInfoViewerTest {
   public void propTest() throws Exception {
     String uuid = UUID.randomUUID().toString();
     InstanceId iid = InstanceId.of(uuid);
-
+    var context = MockServerContext.getWithZK(iid, "fakeHost", 2000);
     ZooReader zooReader = createMock(ZooReader.class);
+    expect(context.getZooReader()).andReturn(zooReader).anyTimes();
     var instanceName = "test";
     expect(zooReader.getChildren(eq(ZROOT + 
ZINSTANCES))).andReturn(List.of(instanceName))
         .anyTimes();
@@ -237,10 +238,9 @@ public class ZooInfoViewerTest {
           return sysPropBytes;
         }).once();
 
-    var nsBasePath = ZooUtil.getRoot(iid) + ZNAMESPACES;
-    
expect(zooReader.getChildren(nsBasePath)).andReturn(List.of("a")).anyTimes();
-    expect(zooReader.getData(eq(nsBasePath + "/a" + ZNAMESPACE_NAME)))
-        .andReturn("a_name".getBytes(UTF_8)).anyTimes();
+    var mockNamespaceIdMap = Map.of(NamespaceId.of("a"), "a_name");
+    expect(context.getNamespaceIdToNameMap()).andReturn(mockNamespaceIdMap);
+
     var nsPropBytes =
         propCodec.toBytes(new VersionedProperties(123, Instant.now(), 
Map.of("n1", "nv1")));
     NamespaceId nsId = NamespaceId.of("a");
@@ -256,10 +256,10 @@ public class ZooInfoViewerTest {
           return nsPropBytes;
         }).once();
 
+    var mockTableIdMap = Map.of(TableId.of("t"), "t_table");
+    expect(context.getTableIdToNameMap()).andReturn(mockTableIdMap).once();
+
     var tBasePath = ZooUtil.getRoot(iid) + ZTABLES;
-    
expect(zooReader.getChildren(tBasePath)).andReturn(List.of("t")).anyTimes();
-    expect(zooReader.getData(eq(tBasePath + "/t" + ZTABLE_NAME)))
-        .andReturn("t_table".getBytes(UTF_8)).anyTimes();
 
     var tProps = new VersionedProperties(123, Instant.now(), Map.of("t1", 
"tv1"));
     var tPropBytes = propCodec.toBytes(tProps);
@@ -279,7 +279,7 @@ public class ZooInfoViewerTest {
     expect(zooReader.getData(tBasePath + "/t" + ZTABLE_NAMESPACE))
         .andReturn("+default".getBytes(UTF_8)).anyTimes();
 
-    replay(zooReader);
+    replay(context, zooReader);
 
     NamespacePropKey nsKey = NamespacePropKey.of(iid, nsId);
     log.trace("namespace base path: {}", nsKey.getPath());
@@ -291,9 +291,9 @@ public class ZooInfoViewerTest {
         new String[] {"--print-props", "--outfile", testFileName});
 
     ZooInfoViewer viewer = new ZooInfoViewer();
-    viewer.generateReport(InstanceId.of(uuid), opts, zooReader);
+    viewer.generateReport(context, opts);
 
-    verify(zooReader);
+    verify(context, zooReader);
 
     Map<String,String> props = new HashMap<>();
     try (Scanner scanner = new Scanner(new File(testFileName))) {
@@ -317,34 +317,15 @@ public class ZooInfoViewerTest {
     String uuid = UUID.randomUUID().toString();
     InstanceId iid = InstanceId.of(uuid);
 
-    ZooReader zooReader = createMock(ZooReader.class);
-    var instanceName = "test";
-    expect(zooReader.getChildren(eq(ZROOT + 
ZINSTANCES))).andReturn(List.of(instanceName))
-        .anyTimes();
-    expect(zooReader.getData(eq(ZROOT + ZINSTANCES + "/" + instanceName)))
-        .andReturn(uuid.getBytes(UTF_8)).anyTimes();
-
-    var nsBasePath = ZooUtil.getRoot(iid) + ZNAMESPACES;
-    String aNamespaceId = "a_nsid";
-    expect(zooReader.getChildren(nsBasePath))
-        .andReturn(List.of("+accumulo", "+default", aNamespaceId)).anyTimes();
-    expect(zooReader.getData(eq(nsBasePath + "/+default" + ZNAMESPACE_NAME)))
-        .andReturn("".getBytes(UTF_8)).anyTimes();
-    expect(zooReader.getData(eq(nsBasePath + "/+accumulo" + ZNAMESPACE_NAME)))
-        .andReturn("accumulo".getBytes(UTF_8)).anyTimes();
-    expect(zooReader.getData(eq(nsBasePath + "/" + aNamespaceId + 
ZNAMESPACE_NAME)))
-        .andReturn("a_namespace_name".getBytes(UTF_8)).anyTimes();
-
-    var tBasePath = ZooUtil.getRoot(iid) + ZTABLES;
-    String aTableId = "t_tid";
-    
expect(zooReader.getChildren(tBasePath)).andReturn(List.of(aTableId)).anyTimes();
-    expect(zooReader.getData(eq(tBasePath + "/" + aTableId + ZTABLE_NAME)))
-        .andReturn("t_tablename".getBytes(UTF_8)).anyTimes();
-
-    expect(zooReader.getData(tBasePath + "/" + aTableId + ZTABLE_NAMESPACE))
-        .andReturn("+default".getBytes(UTF_8)).anyTimes();
+    var mockNamespaceIdMap = Map.of(NamespaceId.of("+accumulo"), "accumulo",
+        NamespaceId.of("+default"), "", NamespaceId.of("a_nsid"), 
"a_namespace_name");
+    var mockTableIdMap = Map.of(TableId.of("t_tid"), "t_tablename");
+    var context = MockServerContext.get();
+    expect(context.getInstanceID()).andReturn(iid).once();
+    expect(context.getNamespaceIdToNameMap()).andReturn(mockNamespaceIdMap);
+    expect(context.getTableIdToNameMap()).andReturn(mockTableIdMap).once();
 
-    replay(zooReader);
+    replay(context);
 
     String testFileName = "./target/zoo-info-viewer-" + 
System.currentTimeMillis() + ".txt";
 
@@ -353,9 +334,9 @@ public class ZooInfoViewerTest {
         new String[] {"--print-id-map", "--outfile", testFileName});
 
     ZooInfoViewer viewer = new ZooInfoViewer();
-    viewer.generateReport(InstanceId.of(uuid), opts, zooReader);
+    viewer.generateReport(context, opts);
 
-    verify(zooReader);
+    verify(context);
 
     String line;
     Map<String,String> ids = new HashMap<>();
@@ -370,8 +351,8 @@ public class ZooInfoViewerTest {
       }
 
       log.debug("ids found in output: {}", ids);
-      assertEquals(Map.of("+default", "\"\"", "+accumulo", "accumulo", 
aNamespaceId,
-          "a_namespace_name", aTableId, "t_tablename"), ids);
+      assertEquals(Map.of("+default", "\"\"", "+accumulo", "accumulo", 
"a_nsid", "a_namespace_name",
+          "t_tid", "t_tablename"), ids);
     }
   }
 }

Reply via email to