public Object getFieldValue(_Fields field) { switch (field) { case HAS_FULL_IMAGE: return Boolean.valueOf(isHasFullImage()); case PATHS_DUMP: return getPathsDump(); case SEQ_NUM: return Long.valueOf(getSeqNum()); case PATH_CHANGES: return getPathChanges(); } throw new IllegalStateException(); }
@Override public UpdateableAuthzPaths updateFull(PathsUpdate update) { UpdateableAuthzPaths other = getPathsDump().initializeFromDump( update.toThrift().getPathsDump()); other.seqNum.set(update.getSeqNum()); return other; }
/** * Test retrieveFullPathsImageUpdate() when no image is present. * @throws Exception */ @Test public void testRetrieveEmptyPathImage() throws Exception { String[] prefixes = {}; PathsUpdate pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsUpdate tPathsUpdate = pathsUpdate.toThrift(); TPathsDump pathDump = tPathsUpdate.getPathsDump(); Map<Integer, TPathEntry> nodeMap = pathDump.getNodeMap(); assertEquals(1, nodeMap.size()); System.out.printf(nodeMap.toString()); }
assertEquals(notificationID, pathsUpdate.getImgNum()); TPathsUpdate tPathsUpdate = pathsUpdate.toThrift(); TPathsDump pathDump = tPathsUpdate.getPathsDump(); Map<Integer, TPathEntry> nodeMap = pathDump.getNodeMap(); System.out.printf(nodeMap.toString());
long savedNotificationID = sentryStore.getLastProcessedNotificationID(); assertEquals(1, pathsUpdate.getImgNum()); TPathsDump pathDump = pathsUpdate.toThrift().getPathsDump(); assertNotNull(pathDump); Map<Integer, TPathEntry> nodeMap = pathDump.getNodeMap();
String[]prefixes = {"/user/hive/warehouse"}; PathsUpdate pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsDump pathsDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry>nodeMap = pathsDump.getNodeMap(); TPathEntry root = nodeMap.get(pathsDump.getRootId()); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId());
long savedNotificationID = sentryStore.getLastProcessedNotificationID(); assertEquals(1, pathsUpdate.getImgNum()); TPathsDump pathDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry> nodeMap = pathDump.getNodeMap();
assertEquals(notificationID, pathsUpdate.getImgNum()); TPathsUpdate tPathsUpdate = pathsUpdate.toThrift(); TPathsDump pathDump = tPathsUpdate.getPathsDump(); Map<Integer, TPathEntry> nodeMap = pathDump.getNodeMap(); assertEquals(7, nodeMap.size()); assertEquals(notificationID, pathsUpdate.getImgNum()); tPathsUpdate = pathsUpdate.toThrift(); pathDump = tPathsUpdate.getPathsDump(); nodeMap = pathDump.getNodeMap(); assertEquals(7, nodeMap.size()); assertEquals(notificationID, pathsUpdate.getImgNum()); tPathsUpdate = pathsUpdate.toThrift(); pathDump = tPathsUpdate.getPathsDump(); nodeMap = pathDump.getNodeMap(); assertEquals(7, nodeMap.size());
TPathsDump pathDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry> nodeMap = pathDump.getNodeMap(); assertEquals(4, nodeMap.size());
String[]prefixes = {"/"}; PathsUpdate pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsDump pathsDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry>nodeMap = pathsDump.getNodeMap(); TPathEntry root = nodeMap.get(pathsDump.getRootId()); update); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId());
String[]prefixes = {"/"}; PathsUpdate pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsDump pathsDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry>nodeMap = pathsDump.getNodeMap(); TPathEntry root = nodeMap.get(pathsDump.getRootId()); sentryStore.deleteAuthzPathsMapping("db2.table", Sets.newHashSet("db2/tbl1"), delUpdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId());
String[]prefixes = {"/user/hive/warehouse"}; PathsUpdate pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsDump pathsDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry>nodeMap = pathsDump.getNodeMap(); TPathEntry root = nodeMap.get(pathsDump.getRootId()); "user/hive/warehouse/db1.db/table1", "user/hive/warehouse/db1.db/newTable1", renameUpdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId());
@Test public void testIsAuthzPathsMappingEmpty() throws Exception { // Add "db1.table1" authzObj UniquePathsUpdate addUpdate = new UniquePathsUpdate("u1",1, false); addUpdate.newPathChange("db1.table"). addToAddPaths(Arrays.asList("db1", "tbl1")); addUpdate.newPathChange("db1.table"). addToAddPaths(Arrays.asList("db1", "tbl2")); // Persist an empty image so that we can add paths to it. sentryStore.persistFullPathsImage(new HashMap<String, Collection<String>>(), 0); assertEquals(sentryStore.isAuthzPathsMappingEmpty(), true); sentryStore.addAuthzPathsMapping("db1.table", Sets.newHashSet("db1/tbl1", "db1/tbl2"), addUpdate); String[]prefixes = {"/"}; PathsUpdate pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsDump pathsDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry>nodeMap = pathsDump.getNodeMap(); TPathEntry root = nodeMap.get(pathsDump.getRootId()); Map<String, Collection<String>> pathImage = new HashMap<>(); buildPathsImageMap(nodeMap, root, "", pathImage, false); assertEquals("/", root.getPathElement()); assertEquals(4, nodeMap.size());//Tree size assertEquals(1, pathImage.size()); assertEquals(2, pathImage.get("db1.table").size()); assertEquals(2, sentryStore.getMPaths().size()); assertEquals(sentryStore.isAuthzPathsMappingEmpty(), false); sentryStore.clearAllTables(); assertEquals(sentryStore.isAuthzPathsMappingEmpty(), true); }
String[]prefixes = {"/"}; PathsUpdate pathsUpdate = localSentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsDump pathsDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry>nodeMap = pathsDump.getNodeMap(); TPathEntry root = nodeMap.get(pathsDump.getRootId()); localSentryStore.deleteAuthzPathsMapping("db1.table", Sets.newHashSet("db1/tbl1"), delUpdate); pathsUpdate = localSentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId()); localSentryStore.deleteAllAuthzPathsMapping("db1.table", delAllupdate); pathsUpdate = localSentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId());
String[]prefixes = {"/user/hive/warehouse"}; PathsUpdate pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsDump pathsDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry>nodeMap = pathsDump.getNodeMap(); TPathEntry root = nodeMap.get(pathsDump.getRootId()); "user/hive/warehouse/db1.db/table1", "user/hive/warehouse/db1.db/newTable1", renameUpdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId()); sentryStore.renameAuthzObj("db1.newTable1", "db1.newTable2", renameUpdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId()); update); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId());
String[]prefixes = {"/"}; PathsUpdate pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); TPathsDump pathsDump = pathsUpdate.toThrift().getPathsDump(); Map<Integer, TPathEntry>nodeMap = pathsDump.getNodeMap(); TPathEntry root = nodeMap.get(pathsDump.getRootId()); sentryStore.deleteAuthzPathsMapping("db1.table", Sets.newHashSet("db1/tbl1"), delUpdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId()); sentryStore.deleteAllAuthzPathsMapping("db1.table", delAllupdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); pathsDump = pathsUpdate.toThrift().getPathsDump(); nodeMap = pathsDump.getNodeMap(); root = nodeMap.get(pathsDump.getRootId());