@Override @GraphTransaction public String setClassifications(AtlasEntityHeaders entityHeaders) { ClassificationAssociator.Updater associator = new ClassificationAssociator.Updater(typeRegistry, this); return associator.setClassifications(entityHeaders.getGuidHeaderMap()); }
public AtlasEntityHeaders get(long fromTimestamp, long toTimestamp) throws AtlasBaseException { toTimestamp = incrementTimestamp(toTimestamp); Set<String> guids = auditRepository.getEntitiesWithTagChanges(fromTimestamp, toTimestamp); Map<String, AtlasEntityHeader> guidEntityHeaderMap = new HashMap<>(); for (String guid : guids) { AtlasEntityHeader entityHeader = entityRetriever.toAtlasEntityHeaderWithClassifications(guid); guidEntityHeaderMap.put(guid, entityHeader); } guids.clear(); return new AtlasEntityHeaders(guidEntityHeaderMap); }
@POST @Path("bulk/setClassifications") @Produces(Servlets.JSON_MEDIA_TYPE) @Consumes(Servlets.JSON_MEDIA_TYPE) public String setClassifications(AtlasEntityHeaders entityHeaders) throws AtlasBaseException { AtlasPerfTracer perf = null; try { if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) { perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "EntityREST.setClassifications()"); } ClassificationAssociator.Updater associator = new ClassificationAssociator.Updater(typeRegistry, entitiesStore); return associator.setClassifications(entityHeaders.getGuidHeaderMap()); } finally { AtlasPerfTracer.log(perf); } }
@Test public void auditScanYieldsOneEntity_EntityHeadersHasOneElementWithClassification() { AtlasEntityHeaders actualEntityHeaders = setupRetriever("header-Tx", 0, 0, TABLE_GUID); assertNotNull(actualEntityHeaders); assertEquals(actualEntityHeaders.getGuidHeaderMap().size(), 1); assertTrue(actualEntityHeaders.getGuidHeaderMap().containsKey(TABLE_GUID)); assertEquals(actualEntityHeaders.getGuidHeaderMap().get(TABLE_GUID).getGuid(), TABLE_GUID); assertNotNull(actualEntityHeaders.getGuidHeaderMap().get(TABLE_GUID).getClassifications()); assertEquals(actualEntityHeaders.getGuidHeaderMap().get(TABLE_GUID).getClassifications().size(), 1); }
@Test public void auditScanYieldsNothing_EmptyHeadersReturned() { AtlasEntityHeaders actualEntityHeaders = setupRetriever("header-empty", 0, 0, null); assertNotNull(actualEntityHeaders); assertEquals(actualEntityHeaders.getGuidHeaderMap().size(),0); }
@Test public void updaterIncorrectType_ReturnsError() throws IOException { AtlasEntityHeaders entityHeaderMap = getEntityHeaderMapFromFile("header-PII"); AtlasEntityStore entitiesStore = mock(AtlasEntityStore.class); AtlasTypeRegistry typeRegistry = mock(AtlasTypeRegistry.class); when(typeRegistry.getEntityTypeByName(anyString())).thenReturn(null); ClassificationAssociator.Updater updater = new ClassificationAssociator.Updater(typeRegistry, entitiesStore); String summary = updater.setClassifications(entityHeaderMap.getGuidHeaderMap()); assertTrue(summary.contains("hive_")); assertTrue(summary.contains(STATUS_SKIPPED)); }
private String[] setupUpdater(String entityHeaderFileName, String entityFileName, int expectedSummaryLength) throws IOException { AtlasEntityHeaders entityHeaderMap = getEntityHeaderMapFromFile(entityHeaderFileName); AtlasEntityType hiveTable = mock(AtlasEntityType.class); AtlasEntityStore entitiesStore = mock(AtlasEntityStore.class); AtlasTypeRegistry typeRegistry = mock(AtlasTypeRegistry.class); when(typeRegistry.getEntityTypeByName(anyString())).thenReturn(hiveTable); when(hiveTable.getTypeName()).thenReturn("hive_column"); ClassificationAssociatorUpdaterForSpy updater = new ClassificationAssociatorUpdaterForSpy(typeRegistry, entitiesStore, entityFileName); String summary = updater.setClassifications(entityHeaderMap.getGuidHeaderMap()); TypeReference<String[]> typeReference = new TypeReference<String[]>() {}; String[] summaryArray = AtlasJson.fromJson(summary, typeReference); assertEquals(summaryArray.length, expectedSummaryLength); return summaryArray; }
@Test public void updaterCorrectTypeEntityNotFound_Skipped() throws IOException { AtlasEntityHeaders entityHeaderMap = getEntityHeaderMapFromFile("header-PII"); AtlasEntityType hiveTable = mock(AtlasEntityType.class); AtlasEntityStore entitiesStore = mock(AtlasEntityStore.class); AtlasTypeRegistry typeRegistry = mock(AtlasTypeRegistry.class); when(typeRegistry.getEntityTypeByName(anyString())).thenReturn(hiveTable); when(hiveTable.getTypeName()).thenReturn("hive_column"); ClassificationAssociatorUpdaterForSpy updater = new ClassificationAssociatorUpdaterForSpy(typeRegistry, entitiesStore); String summary = updater.setClassifications(entityHeaderMap.getGuidHeaderMap()); TypeReference<String[]> typeReference = new TypeReference<String[]>() {}; String[] summaryArray = AtlasJson.fromJson(summary, typeReference); assertEquals(summaryArray.length, 1); assertSummaryElement(summaryArray[0], "Entity", STATUS_SKIPPED, ""); }