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 2e7afa5..93a8dad 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 @@ -73,6 +73,8 @@ import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding; import org.apache.hadoop.hbase.io.hfile.RandomDistribution; 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.trace.HBaseHTraceConfiguration; import org.apache.hadoop.hbase.trace.SpanReceiverHost; import org.apache.hadoop.hbase.util.*; @@ -595,6 +597,8 @@ public class PerformanceEvaluation extends Configured implements Tool { boolean oneCon = false; boolean useTags = false; int noOfTags = 1; + String visibilityExp = null; + String visibilityAuth = null; boolean reportLatency = false; int multiGet = 0; int randomSleep = 0; @@ -635,6 +639,8 @@ public class PerformanceEvaluation extends Configured implements Tool { this.oneCon = that.oneCon; 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; @@ -765,6 +771,14 @@ public class PerformanceEvaluation extends Configured implements Tool { this.noOfTags = noOfTags; } + public void setVisibilityExp(String visibilityExp) { + this.visibilityExp = visibilityExp; + } + + public void setVisibilityAuth(String visibilityAuth) { + this.visibilityAuth = visibilityAuth; + } + public void setReportLatency(boolean reportLatency) { this.reportLatency = reportLatency; } @@ -865,6 +879,14 @@ public class PerformanceEvaluation extends Configured implements Tool { return noOfTags; } + public String getVisibilityExp() { + return visibilityExp; + } + + public String getVisibilityAuth() { + return visibilityAuth; + } + public boolean isReportLatency() { return reportLatency; } @@ -1187,6 +1209,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;) { updateValueSize(rr); @@ -1215,6 +1240,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(","))); + } Result r = null; int count = 0; ResultScanner s = this.table.getScanner(scan); @@ -1315,6 +1343,9 @@ public class PerformanceEvaluation extends Configured implements Tool { get.setFilter(new FilterAllFilter()); } get.setConsistency(consistency); + if (opts.visibilityAuth != null) { + get.setAuthorizations(new Authorizations(opts.visibilityAuth.split(","))); + } if (LOG.isTraceEnabled()) LOG.trace(get.toString()); if (opts.multiGet > 0) { this.gets.add(get); @@ -1369,6 +1400,9 @@ public class PerformanceEvaluation extends Configured implements Tool { put.add(FAMILY_NAME, QUALIFIER_NAME, value); updateValueSize(value.length); } + if (opts.visibilityExp != null) { + put.setCellVisibility(new CellVisibility(opts.visibilityExp)); + } put.setDurability(opts.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL); mutator.mutate(put); } @@ -1399,6 +1433,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); } Result r = testScanner.next(); @@ -1419,6 +1456,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(","))); + } updateValueSize(table.get(get)); } } @@ -1448,6 +1488,9 @@ public class PerformanceEvaluation extends Configured implements Tool { put.add(FAMILY_NAME, QUALIFIER_NAME, value); updateValueSize(value.length); } + if (opts.visibilityExp != null) { + put.setCellVisibility(new CellVisibility(opts.visibilityExp)); + } put.setDurability(opts.writeToWAL ? Durability.SYNC_WAL : Durability.SKIP_WAL); mutator.mutate(put); } @@ -1488,6 +1531,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; } } @@ -1661,6 +1707,10 @@ 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. "); @@ -1833,6 +1883,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 replicas = "--replicas="; if (cmd.startsWith(replicas)) { opts.replicas = Integer.parseInt(cmd.substring(replicas.length()));