diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java index 014caf9..31be2e8 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/PerformanceEvaluation.java @@ -69,6 +69,8 @@ import org.apache.hadoop.hbase.io.compress.Compression; import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding; import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil; import org.apache.hadoop.hbase.regionserver.BloomType; +import org.apache.hadoop.hbase.security.visibility.Authorizations; +import org.apache.hadoop.hbase.security.visibility.CellVisibility; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.Hash; import org.apache.hadoop.hbase.util.MurmurHash; @@ -498,6 +500,8 @@ public class PerformanceEvaluation extends Configured implements Tool { this.writeToWAL = that.writeToWAL; this.useTags = that.useTags; this.noOfTags = that.noOfTags; + this.visibilityExp = that.visibilityExp; + this.visibilityAuth = that.visibilityAuth; this.reportLatency = that.reportLatency; this.multiGet = that.multiGet; this.inMemoryCF = that.inMemoryCF; @@ -520,6 +524,8 @@ public class PerformanceEvaluation extends Configured implements Tool { public boolean writeToWAL = true; public boolean useTags = false; public int noOfTags = 1; + public String visibilityExp = null; + public String visibilityAuth = null; public boolean reportLatency = false; public int multiGet = 0; boolean inMemoryCF = false; @@ -636,6 +642,9 @@ public class PerformanceEvaluation extends Configured implements Tool { } list.addFilter(new WhileMatchFilter(new PageFilter(120))); scan.setFilter(list); + if (opts.visibilityAuth != null) { + scan.setAuthorizations(new Authorizations(opts.visibilityAuth.split(","))); + } ResultScanner s = this.table.getScanner(scan); for (Result rr; (rr = s.next()) != null;) ; s.close(); @@ -663,6 +672,9 @@ public class PerformanceEvaluation extends Configured implements Tool { scan.setFilter(new FilterAllFilter()); } scan.addColumn(FAMILY_NAME, QUALIFIER_NAME); + if (opts.visibilityAuth != null) { + scan.setAuthorizations(new Authorizations(opts.visibilityAuth.split(","))); + } ResultScanner s = this.table.getScanner(scan); int count = 0; for (Result rr; (rr = s.next()) != null;) { @@ -766,6 +778,9 @@ public class PerformanceEvaluation extends Configured implements Tool { if (opts.filterAll) { get.setFilter(new FilterAllFilter()); } + if (opts.visibilityAuth != null) { + get.setAuthorizations(new Authorizations(opts.visibilityAuth.split(","))); + } if (opts.multiGet > 0) { this.gets.add(get); if (this.gets.size() == opts.multiGet) { @@ -844,6 +859,9 @@ public class PerformanceEvaluation extends Configured implements Tool { put.add(FAMILY_NAME, QUALIFIER_NAME, value); } put.setDurability(opts.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL); + if (opts.visibilityExp != null) { + put.setCellVisibility(new CellVisibility(opts.visibilityExp)); + } table.put(put); } } @@ -874,6 +892,9 @@ public class PerformanceEvaluation extends Configured implements Tool { if (opts.filterAll) { scan.setFilter(new FilterAllFilter()); } + if (opts.visibilityAuth != null) { + scan.setAuthorizations(new Authorizations(opts.visibilityAuth.split(","))); + } this.testScanner = table.getScanner(scan); } testScanner.next(); @@ -893,6 +914,9 @@ public class PerformanceEvaluation extends Configured implements Tool { if (opts.filterAll) { get.setFilter(new FilterAllFilter()); } + if (opts.visibilityAuth != null) { + get.setAuthorizations(new Authorizations(opts.visibilityAuth.split(","))); + } table.get(get); } } @@ -921,6 +945,9 @@ public class PerformanceEvaluation extends Configured implements Tool { put.add(FAMILY_NAME, QUALIFIER_NAME, value); } put.setDurability(opts.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL); + if (opts.visibilityExp != null) { + put.setCellVisibility(new CellVisibility(opts.visibilityExp)); + } table.put(put); } } @@ -959,6 +986,9 @@ public class PerformanceEvaluation extends Configured implements Tool { Scan scan = new Scan(); scan.addColumn(FAMILY_NAME, QUALIFIER_NAME); scan.setFilter(list); + if (opts.visibilityAuth != null) { + scan.setAuthorizations(new Authorizations(opts.visibilityAuth.split(","))); + } return scan; } } @@ -1114,12 +1144,16 @@ public class PerformanceEvaluation extends Configured implements Tool { "Default: false"); System.err.println(" numoftags Specify the no of tags that would be needed. " + "This works only if usetags is true."); + System.err.println(" visibilityExp Writes the visibility expression along with KVs. " + + "Use for write commands. Visiblity labels need to pre-exist."); + System.err.println(" visibilityAuth Specify the visibility auths (comma separated labels) " + + "used in read or scan. Visiblity labels need to pre-exist."); System.err.println(" filterAll Helps to filter out all the rows on the server side" + " there by not returning any thing back to the client. Helps to check the server side" + " performance. Uses FilterAllFilter internally. "); System.err.println(" latency Set to report operation latencies. " + "Currently only supported by randomRead test. Default: False"); - System.err.println(" bloomFilter Bloom filter type, one of " + Arrays.toString(BloomType.values())); + System.err.println(" bloomFilter Bloom filter type, one of " + Arrays.toString(BloomType.values())); System.err.println(); System.err.println(" Note: -D properties will be applied to the conf used. "); System.err.println(" For example: "); @@ -1262,6 +1296,18 @@ public class PerformanceEvaluation extends Configured implements Tool { continue; } + final String visibilityExp = "--visibilityExp="; + if (cmd.startsWith(visibilityExp)) { + opts.visibilityExp = cmd.substring(visibilityExp.length()); + continue; + } + + final String visibilityAuth = "--visibilityAuth="; + if (cmd.startsWith(visibilityAuth)) { + opts.visibilityAuth = cmd.substring(visibilityAuth.length()); + continue; + } + final String filterOutAll = "--filterAll"; if (cmd.startsWith(filterOutAll)) { opts.filterAll = true;