You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mm...@apache.org on 2022/03/23 13:09:44 UTC

[accumulo] branch main updated: Create ListBulkCommandTest (#2582)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 738b1c1  Create ListBulkCommandTest (#2582)
738b1c1 is described below

commit 738b1c15b6f6383f6d1609a1cba702cd350f0a42
Author: Mike Miller <mm...@apache.org>
AuthorDate: Wed Mar 23 09:09:35 2022 -0400

    Create ListBulkCommandTest (#2582)
---
 .../shell/commands/BulkImportListIterator.java     |   4 +-
 .../shell/commands/ListBulkCommandTest.java        | 112 +++++++++++++++++++++
 2 files changed, 114 insertions(+), 2 deletions(-)

diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/BulkImportListIterator.java b/shell/src/main/java/org/apache/accumulo/shell/commands/BulkImportListIterator.java
index 1c8bfe4..0607988 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/BulkImportListIterator.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/BulkImportListIterator.java
@@ -33,11 +33,11 @@ public class BulkImportListIterator implements Iterator<String> {
 
   public BulkImportListIterator(List<String> tservers, ManagerMonitorInfo stats) {
     List<String> result = new ArrayList<>();
-    for (BulkImportStatus status : stats.bulkImports) {
+    for (BulkImportStatus status : stats.getBulkImports()) {
       result.add(format(status));
     }
     if (!tservers.isEmpty()) {
-      for (TabletServerStatus tserver : stats.tServerInfo) {
+      for (TabletServerStatus tserver : stats.getTServerInfo()) {
         if (tservers.contains(tserver.name)) {
           result.add(tserver.name + ":");
           for (BulkImportStatus status : tserver.bulkImports) {
diff --git a/shell/src/test/java/org/apache/accumulo/shell/commands/ListBulkCommandTest.java b/shell/src/test/java/org/apache/accumulo/shell/commands/ListBulkCommandTest.java
new file mode 100644
index 0000000..1dccfc9
--- /dev/null
+++ b/shell/src/test/java/org/apache/accumulo/shell/commands/ListBulkCommandTest.java
@@ -0,0 +1,112 @@
+/*
+ * 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
+ *
+ *   http://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.shell.commands;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo;
+import org.apache.accumulo.core.master.thrift.BulkImportState;
+import org.apache.accumulo.core.master.thrift.BulkImportStatus;
+import org.apache.accumulo.core.master.thrift.TabletServerStatus;
+import org.junit.jupiter.api.Test;
+
+public class ListBulkCommandTest {
+  private static final List<String> tservers = List.of("tserver1", "tserver2");
+
+  /**
+   * Test the iterator used by BulkCommand prints correctly
+   */
+  @Test
+  public void testBulkImportListIterator() {
+    ManagerMonitorInfo mmi = createMock(ManagerMonitorInfo.class);
+    List<TabletServerStatus> statusList = new ArrayList<>();
+    List<BulkImportStatus> bulkImports = new ArrayList<>();
+
+    // tserver 1
+    var bis1 = new BulkImportStatus();
+    bis1.filename = "file1";
+    bis1.startTime = System.currentTimeMillis();
+    bis1.state = BulkImportState.COPY_FILES;
+    bulkImports.add(bis1);
+    var ts1 = new TabletServerStatus();
+    ts1.name = "tserver1";
+    ts1.bulkImports = new ArrayList<>(bulkImports);
+    bulkImports.clear();
+
+    // tserver 2
+    var bis2 = new BulkImportStatus();
+    bis2.filename = "file2";
+    bis2.startTime = System.currentTimeMillis();
+    bis2.state = BulkImportState.LOADING;
+    bulkImports.add(bis2);
+    var ts2 = new TabletServerStatus();
+    ts2.name = "tserver2";
+    ts2.bulkImports = new ArrayList<>(bulkImports);
+    bulkImports.clear();
+
+    statusList.add(ts1);
+    statusList.add(ts2);
+
+    bulkImports.add(bis1);
+    bulkImports.add(bis2);
+
+    expect(mmi.getBulkImports()).andReturn(bulkImports).once();
+    expect(mmi.getTServerInfo()).andReturn(statusList).once();
+
+    replay(mmi);
+
+    var iter = new BulkImportListIterator(tservers, mmi);
+    List<String> printed = printLines(iter);
+
+    assertTrue(printed.get(0).stripLeading().startsWith("file1"));
+    assertTrue(printed.get(0).endsWith("COPY_FILES"));
+    assertTrue(printed.get(1).stripLeading().startsWith("file2"));
+    assertTrue(printed.get(1).endsWith("LOADING"));
+    assertEquals(printed.get(2), "tserver1:");
+    assertTrue(printed.get(3).stripLeading().startsWith("file1"));
+    assertTrue(printed.get(3).endsWith("COPY_FILES"));
+    assertEquals(printed.get(4), "tserver2:");
+    assertTrue(printed.get(5).stripLeading().startsWith("file2"));
+    assertTrue(printed.get(5).endsWith("LOADING"));
+
+    verify(mmi);
+  }
+
+  private List<String> printLines(Iterator<String> lines) {
+    List<String> printed = new ArrayList<>();
+
+    while (lines.hasNext()) {
+      String nextLine = lines.next();
+      if (nextLine == null) {
+        continue;
+      }
+      printed.add(nextLine);
+    }
+    return printed;
+  }
+}