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

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


The following commit(s) were added to refs/heads/2.1 by this push:
     new 621ad51be1 adds javadoc and tests to GrepIterator (#4775)
621ad51be1 is described below

commit 621ad51be1c9b3cf65db91c3b21d2554da1404a0
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Tue Aug 6 18:22:11 2024 -0400

    adds javadoc and tests to GrepIterator (#4775)
---
 .../accumulo/core/iterators/user/GrepIterator.java |  25 ++++
 .../core/iterators/user/GrepIteratorTest.java      | 141 ++++++++++++++++++++-
 2 files changed, 165 insertions(+), 1 deletion(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/iterators/user/GrepIterator.java 
b/core/src/main/java/org/apache/accumulo/core/iterators/user/GrepIterator.java
index ed327f70d1..e526851c65 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/iterators/user/GrepIterator.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/iterators/user/GrepIterator.java
@@ -148,22 +148,47 @@ public class GrepIterator extends Filter {
     cfg.addOption(TERM_OPT, term);
   }
 
+  /**
+   * Enable or disable matching on the row field of the key. Defaults to 
enable.
+   *
+   * @since 2.1.3
+   */
   public static void matchRow(IteratorSetting cfg, boolean match) {
     cfg.addOption(MATCH_ROW_OPT, Boolean.toString(match));
   }
 
+  /**
+   * Enable or disable matching on the family field of the key. Defaults to 
enable.
+   *
+   * @since 2.1.3
+   */
   public static void matchColumnFamily(IteratorSetting cfg, boolean match) {
     cfg.addOption(MATCH_COLFAM_OPT, Boolean.toString(match));
   }
 
+  /**
+   * Enable or disable matching on the qualifier field of the key. Defaults to 
enable.
+   *
+   * @since 2.1.3
+   */
   public static void matchColumnQualifier(IteratorSetting cfg, boolean match) {
     cfg.addOption(MATCH_COLQUAL_OPT, Boolean.toString(match));
   }
 
+  /**
+   * Enable or disable matching on the visibility field of the key. Defaults 
to disable.
+   *
+   * @since 2.1.3
+   */
   public static void matchColumnVisibility(IteratorSetting cfg, boolean match) 
{
     cfg.addOption(MATCH_COLVIS_OPT, Boolean.toString(match));
   }
 
+  /**
+   * Enable or disable matching on the value. Defaults to enable.
+   *
+   * @since 2.1.3
+   */
   public static void matchValue(IteratorSetting cfg, boolean match) {
     cfg.addOption(MATCH_VALUE_OPT, Boolean.toString(match));
   }
diff --git 
a/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java
 
b/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java
index 191a0403a0..31acabac68 100644
--- 
a/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java
+++ 
b/core/src/test/java/org/apache/accumulo/core/iterators/user/GrepIteratorTest.java
@@ -68,6 +68,9 @@ public class GrepIteratorTest {
     output.put(new Key("dfh", "xyz", "xyz", 0), new Value("abcdef"));
     input.put(new Key("dfh", "xyz", "xyz", 1), new Value("xyz"));
 
+    input.put(new Key("dfh", "xyz", "xyz", "abcdef", 0), new Value("xyz"));
+    output.put(new Key("dfh", "xyz", "xyz", "abcdef", 0), new Value("xyz"));
+
     Key k = new Key("dfh", "xyz", "xyz", 1);
     k.setDeleted(true);
     input.put(k, new Value("xyz"));
@@ -82,6 +85,7 @@ public class GrepIteratorTest {
       assertEquals(e.getValue(), skvi.getTopValue());
       skvi.next();
     }
+
     assertFalse(skvi.hasTop());
   }
 
@@ -90,9 +94,9 @@ public class GrepIteratorTest {
     GrepIterator gi = new GrepIterator();
     IteratorSetting is = new IteratorSetting(1, GrepIterator.class);
     GrepIterator.setTerm(is, "ab");
+    GrepIterator.matchColumnVisibility(is, true);
     gi.init(new SortedMapIterator(input), is.getOptions(), null);
     gi.seek(new Range(), EMPTY_COL_FAMS, false);
-    GrepIterator.matchColumnVisibility(is, true);
     checkEntries(gi, output);
     GrepIterator.setTerm(is, "cde");
     gi.init(new SortedMapIterator(input), is.getOptions(), null);
@@ -118,4 +122,139 @@ public class GrepIteratorTest {
 
     checkEntries(gi, output);
   }
+
+  @Test
+  public void testMatchRow() throws Exception {
+    GrepIterator gi = new GrepIterator();
+    IteratorSetting is = new IteratorSetting(1, GrepIterator.class);
+
+    GrepIterator.setTerm(is, "abcdef");
+
+    GrepIterator.matchRow(is, true);
+    GrepIterator.matchColumnFamily(is, false);
+    GrepIterator.matchColumnQualifier(is, false);
+    GrepIterator.matchColumnVisibility(is, false);
+    GrepIterator.matchValue(is, false);
+
+    gi.init(new SortedMapIterator(input), is.getOptions(), null);
+    gi.seek(new Range(), EMPTY_COL_FAMS, false);
+
+    SortedMap<Key,Value> expectedOutput = new TreeMap<>();
+    input.forEach((k, v) -> {
+      if (k.getRowData().toString().contains("abcdef") || k.isDeleted()) {
+        expectedOutput.put(k, v);
+      }
+    });
+
+    assertFalse(expectedOutput.isEmpty());
+    checkEntries(gi, expectedOutput);
+  }
+
+  @Test
+  public void testMatchFamily() throws Exception {
+    GrepIterator gi = new GrepIterator();
+    IteratorSetting is = new IteratorSetting(1, GrepIterator.class);
+
+    GrepIterator.setTerm(is, "abcdef");
+
+    GrepIterator.matchRow(is, false);
+    GrepIterator.matchColumnFamily(is, true);
+    GrepIterator.matchColumnQualifier(is, false);
+    GrepIterator.matchColumnVisibility(is, false);
+    GrepIterator.matchValue(is, false);
+
+    gi.init(new SortedMapIterator(input), is.getOptions(), null);
+    gi.seek(new Range(), EMPTY_COL_FAMS, false);
+
+    SortedMap<Key,Value> expectedOutput = new TreeMap<>();
+    input.forEach((k, v) -> {
+      if (k.getColumnFamilyData().toString().contains("abcdef") || 
k.isDeleted()) {
+        expectedOutput.put(k, v);
+      }
+    });
+
+    assertFalse(expectedOutput.isEmpty());
+    checkEntries(gi, expectedOutput);
+  }
+
+  @Test
+  public void testMatchQualifier() throws Exception {
+    GrepIterator gi = new GrepIterator();
+    IteratorSetting is = new IteratorSetting(1, GrepIterator.class);
+
+    GrepIterator.setTerm(is, "abcdef");
+
+    GrepIterator.matchRow(is, false);
+    GrepIterator.matchColumnFamily(is, false);
+    GrepIterator.matchColumnQualifier(is, true);
+    GrepIterator.matchColumnVisibility(is, false);
+    GrepIterator.matchValue(is, false);
+
+    gi.init(new SortedMapIterator(input), is.getOptions(), null);
+    gi.seek(new Range(), EMPTY_COL_FAMS, false);
+
+    SortedMap<Key,Value> expectedOutput = new TreeMap<>();
+    input.forEach((k, v) -> {
+      if (k.getColumnQualifierData().toString().contains("abcdef") || 
k.isDeleted()) {
+        expectedOutput.put(k, v);
+      }
+    });
+
+    assertFalse(expectedOutput.isEmpty());
+    checkEntries(gi, expectedOutput);
+  }
+
+  @Test
+  public void testMatchVisibility() throws Exception {
+    GrepIterator gi = new GrepIterator();
+    IteratorSetting is = new IteratorSetting(1, GrepIterator.class);
+
+    GrepIterator.setTerm(is, "abcdef");
+
+    GrepIterator.matchRow(is, false);
+    GrepIterator.matchColumnFamily(is, false);
+    GrepIterator.matchColumnQualifier(is, false);
+    GrepIterator.matchColumnVisibility(is, true);
+    GrepIterator.matchValue(is, false);
+
+    gi.init(new SortedMapIterator(input), is.getOptions(), null);
+    gi.seek(new Range(), EMPTY_COL_FAMS, false);
+
+    SortedMap<Key,Value> expectedOutput = new TreeMap<>();
+    input.forEach((k, v) -> {
+      if (k.getColumnVisibilityData().toString().contains("abcdef") || 
k.isDeleted()) {
+        expectedOutput.put(k, v);
+      }
+    });
+
+    assertFalse(expectedOutput.isEmpty());
+    checkEntries(gi, expectedOutput);
+  }
+
+  @Test
+  public void testMatchValue() throws Exception {
+    GrepIterator gi = new GrepIterator();
+    IteratorSetting is = new IteratorSetting(1, GrepIterator.class);
+
+    GrepIterator.setTerm(is, "abcdef");
+
+    GrepIterator.matchRow(is, false);
+    GrepIterator.matchColumnFamily(is, false);
+    GrepIterator.matchColumnQualifier(is, false);
+    GrepIterator.matchColumnVisibility(is, false);
+    GrepIterator.matchValue(is, true);
+
+    gi.init(new SortedMapIterator(input), is.getOptions(), null);
+    gi.seek(new Range(), EMPTY_COL_FAMS, false);
+
+    SortedMap<Key,Value> expectedOutput = new TreeMap<>();
+    input.forEach((k, v) -> {
+      if (v.toString().contains("abcdef") || k.isDeleted()) {
+        expectedOutput.put(k, v);
+      }
+    });
+
+    assertFalse(expectedOutput.isEmpty());
+    checkEntries(gi, expectedOutput);
+  }
 }

Reply via email to