@Test public void testDbBlacklist() throws Exception { WhitelistBlacklist whitelistBlacklist = new WhitelistBlacklist("", "dba"); Assert.assertFalse(whitelistBlacklist.acceptDb("dba")); Assert.assertTrue(whitelistBlacklist.acceptDb("dbb")); Assert.assertFalse(whitelistBlacklist.acceptTable("dba", "tablea")); Assert.assertFalse(whitelistBlacklist.acceptTable("dba", "tableb")); Assert.assertTrue(whitelistBlacklist.acceptTable("dbb", "tablea")); }
/** * @return Whether database db might contain tables accepted by this {@link WhitelistBlacklist}. */ public boolean acceptDb(String db) { return accept(db, Optional.<String> absent()); }
private boolean accept(String db, Optional<String> table) { if (!this.blacklistMultimap.isEmpty() && multimapContains(this.blacklistMultimap, db, table, true)) { return false; } return this.whitelistMultimap.isEmpty() || multimapContains(this.whitelistMultimap, db, table, false); }
Assert.assertTrue(optionalWhitelistBlacklist.isPresent(), "Whitelist blacklist specified in WUS, WhiteListBlackList object should be present"); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptDb("mydb")); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptTable("mydb", "mytable")); Assert.assertTrue(optionalWhitelistBlacklist.isPresent(), "Whitelist blacklist specified in WUS, WhiteListBlackList object should be present"); Assert.assertTrue(!optionalWhitelistBlacklist.get().acceptDb("mydb")); Assert.assertTrue(!optionalWhitelistBlacklist.get().acceptTable("mydb", "mytable")); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptDb("yourdb")); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptTable("yourdb", "mytable")); Assert.assertTrue(optionalWhitelistBlacklist.isPresent(), "Whitelist blacklist specified in WUS, WhiteListBlackList object should be present"); Assert.assertTrue(!optionalWhitelistBlacklist.get().acceptDb("mydb")); Assert.assertTrue(!optionalWhitelistBlacklist.get().acceptTable("yourdb", "mytable")); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptDb("yourdb")); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptTable("yourdb", "yourtable")); Assert.assertTrue(optionalWhitelistBlacklist.isPresent(), "Whitelist blacklist specified in WUS, WhiteListBlackList object should be present"); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptDb("mydb")); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptTable("yourdb", "mytable")); Assert.assertTrue(optionalWhitelistBlacklist.get().acceptDb("yourdb")); Assert.assertTrue(!optionalWhitelistBlacklist.get().acceptTable("yourdb", "yourtable"));
@Override public boolean apply(String table) { return HiveDatasetFinder.this.whitelistBlacklist.acceptTable(db, table); } });
private static Comparator<Requestor<FileSet<CopyEntity>>> createRequestorComparator(Properties props) throws IOException { TreeMap<Integer, WhitelistBlacklist> tiers = Maps.newTreeMap(); Matcher matcher; for (Map.Entry<Object, Object> entry : props.entrySet()) { if (entry.getKey() instanceof String && entry.getValue() instanceof String && (matcher = TIER_PATTERN.matcher((String) entry.getKey())).matches()) { int tier = Integer.parseInt(matcher.group(1)); WhitelistBlacklist whitelistBlacklist = new WhitelistBlacklist((String)entry.getValue(), ""); tiers.put(tier, whitelistBlacklist); } } return new TierComparator(tiers); }
@Override public boolean apply(String db) { return HiveDatasetFinder.this.whitelistBlacklist.acceptDb(db); } });
public WhitelistBlacklist(String whitelist, String blacklist) throws IOException { this.whitelistMultimap = HashMultimap.create(); this.blacklistMultimap = HashMultimap.create(); populateMultimap(this.whitelistMultimap, whitelist.toLowerCase()); populateMultimap(this.blacklistMultimap, blacklist.toLowerCase()); }
private int findTier(Requestor<FileSet<CopyEntity>> requestor) { if (!(requestor instanceof CopyableDatasetRequestor)) { throw new ClassCastException(String.format("%s can only be used for %s.", SimpleHiveDatasetTieringPrioritizer.class.getName(), CopyableDatasetRequestor.class.getName())); } Dataset dataset = ((CopyableDatasetRequestor) requestor).getDataset(); if (!(dataset instanceof HiveDataset)) { throw new ClassCastException(String.format("%s can only be used for %s.", SimpleHiveDatasetTieringPrioritizer.class.getName(), HiveDataset.class.getName())); } HiveDataset hiveDataset = (HiveDataset) dataset; for (Map.Entry<Integer, WhitelistBlacklist> tier : tiersMap.entrySet()) { WhitelistBlacklist whitelistBlacklist = tier.getValue(); if (whitelistBlacklist.acceptTable(hiveDataset.getTable().getDbName(), hiveDataset.getTable().getTableName())) { return tier.getKey(); } } return Integer.MAX_VALUE; } }
this.whitelistBlacklist = new WhitelistBlacklist(this.properties.getProperty(DB_KEY) + "." + this.properties.getProperty(TABLE_PATTERN_KEY, DEFAULT_TABLE_PATTERN), ""); } else { this.whitelistBlacklist = new WhitelistBlacklist(config.getConfig(HIVE_DATASET_PREFIX));
@Override public boolean apply(String db) { return HiveDatasetFinder.this.whitelistBlacklist.acceptDb(db); } });
public WhitelistBlacklist(String whitelist, String blacklist) throws IOException { this.whitelistMultimap = HashMultimap.create(); this.blacklistMultimap = HashMultimap.create(); populateMultimap(this.whitelistMultimap, whitelist.toLowerCase()); populateMultimap(this.blacklistMultimap, blacklist.toLowerCase()); }
@Test public void testDbWhitelistStar() throws Exception { WhitelistBlacklist whitelistBlacklist = new WhitelistBlacklist("dba.*", ""); Assert.assertTrue(whitelistBlacklist.acceptDb("dba")); Assert.assertFalse(whitelistBlacklist.acceptDb("dbb")); Assert.assertTrue(whitelistBlacklist.acceptTable("dba", "tablea")); Assert.assertTrue(whitelistBlacklist.acceptTable("dba", "tableb")); Assert.assertFalse(whitelistBlacklist.acceptTable("dbb", "tablea")); }
wrapperViewName = optionalViewRegistrationWhiteBlacklist.get().acceptTable(orcTableDatabase, orcTableName) ? getConversionConfig().getDestinationViewName() : wrapperViewName; } else {
/*** * Get Hive view registration whitelist blacklist from Workunit state * @param workUnit Workunit containing view whitelist blacklist property * @return Optional WhitelistBlacklist if Workunit contains it */ @VisibleForTesting public static Optional<WhitelistBlacklist> getViewWhiteBackListFromWorkUnit(WorkUnitState workUnit) { Optional<WhitelistBlacklist> optionalViewWhiteBlacklist = Optional.absent(); if (workUnit == null) { return optionalViewWhiteBlacklist; } if (workUnit.contains(HIVE_CONVERSION_VIEW_REGISTRATION_WHITELIST) || workUnit.contains(HIVE_CONVERSION_VIEW_REGISTRATION_BLACKLIST)) { String viewWhiteList = workUnit.getProp(HIVE_CONVERSION_VIEW_REGISTRATION_WHITELIST, StringUtils.EMPTY); String viewBlackList = workUnit.getProp(HIVE_CONVERSION_VIEW_REGISTRATION_BLACKLIST, StringUtils.EMPTY); try { optionalViewWhiteBlacklist = Optional.of(new WhitelistBlacklist(viewWhiteList, viewBlackList)); } catch (IOException e) { Throwables.propagate(e); } } return optionalViewWhiteBlacklist; }
/** * @return Whether the input table is accepted by this {@link WhitelistBlacklist}. */ public boolean acceptTable(String db, String table) { return accept(db.toLowerCase(), table==null? Optional.<String> absent(): Optional.fromNullable(table.toLowerCase())); }
private boolean accept(String db, Optional<String> table) { if (!this.blacklistMultimap.isEmpty() && multimapContains(this.blacklistMultimap, db, table, true)) { return false; } return this.whitelistMultimap.isEmpty() || multimapContains(this.whitelistMultimap, db, table, false); }
@Test public void testSimpleWhitelist() throws Exception { WhitelistBlacklist whitelistBlacklist = new WhitelistBlacklist("Dba.Tablea", ""); Assert.assertTrue(whitelistBlacklist.acceptDb("dba")); Assert.assertFalse(whitelistBlacklist.acceptDb("dbb")); Assert.assertTrue(whitelistBlacklist.acceptTable("dba", "tablea")); Assert.assertFalse(whitelistBlacklist.acceptTable("dba", "tableb")); Assert.assertFalse(whitelistBlacklist.acceptTable("dbb", "tablea")); Assert.assertTrue(whitelistBlacklist.acceptTable("dbA", "tablea")); Assert.assertTrue(whitelistBlacklist.acceptTable("dbA", "TableA")); }
@Override public boolean apply(String table) { return HiveDatasetFinder.this.whitelistBlacklist.acceptTable(db, table); } });
private static Comparator<Requestor<FileSet<CopyEntity>>> createRequestorComparator(Properties props) throws IOException { TreeMap<Integer, WhitelistBlacklist> tiers = Maps.newTreeMap(); Matcher matcher; for (Map.Entry<Object, Object> entry : props.entrySet()) { if (entry.getKey() instanceof String && entry.getValue() instanceof String && (matcher = TIER_PATTERN.matcher((String) entry.getKey())).matches()) { int tier = Integer.parseInt(matcher.group(1)); WhitelistBlacklist whitelistBlacklist = new WhitelistBlacklist((String)entry.getValue(), ""); tiers.put(tier, whitelistBlacklist); } } return new TierComparator(tiers); }